boot

:boot-clj: https://boot-clj.github.io/ β€” build tooling for Clojure. Dev chat in #boot-dev
flyboarder 2019-01-12T06:35:55.071800Z

I recently met with @alandipert and @micha to talk about the future of boot. I will be officially taking over as maintainer, you can read about it here: https://medium.com/degree9/boot-future-boot-e1948562d8d3

3
flyboarder 2019-01-12T06:37:16.073Z

You can also now buy your official boot-clj swag over at http://OpenSwag.co https://openswag.co/products/boot-clj-mug

🍾 6
πŸ™‚ 1
borkdude 2019-01-12T16:16:10.074300Z

@flyboarder thanks for taking over. is there any public information about why the original maintainers step down?

2019-01-12T17:10:16.075300Z

@borkdude i don't use boot (or clojure) professionally anymore and micha is devoting his OSS energies to hoplon

2019-01-12T17:11:30.076200Z

we still plan on meeting with matt monthly to help him triage/ideate/deploy or however else he needs our help with

2019-01-12T17:11:47.076500Z

so, we'll still be involved with the project

borkdude 2019-01-12T17:13:23.077100Z

@alandipert makes a lot of sense. what do you use now, I saw some R related tweets coming by

borkdude 2019-01-12T17:13:41.077500Z

thanks for the time devoted to boot and making it awesome

2019-01-12T17:13:46.077700Z

i work on dev tools for R at rstudio, makers of the IDE

borkdude 2019-01-12T17:13:57.077900Z

that sounds cool!

2019-01-12T17:15:01.078700Z

thanks it's been really fun to work on!

2019-01-12T17:15:22.079Z

and yeah, R is also really fun. lispy, even

borkdude 2019-01-12T17:15:46.079300Z

My wife uses it regularly at her data science job

2019-01-12T17:18:52.079800Z

neat, yeah data science definitely lends to R

2019-01-12T19:20:53.080400Z

What’s the boot equivalent of lein install?

micha 2019-01-12T19:23:51.081500Z

@jayzawrotny usually something like

boot pom jar install

micha 2019-01-12T19:24:06.082Z

it's a pipeline of individual tasks

2019-01-12T19:24:14.082300Z

Oooh oops this repo already has a task like that. Thanks!

micha 2019-01-12T19:24:32.082700Z

to install anartifact in your maven cache you need a pom.xml, and a jar

micha 2019-01-12T19:24:41.082900Z

πŸ‘

2019-01-12T19:34:33.085200Z

Boot reminds me of gulp for js, which I loved. Composing pipelines is a great idea to me. However, boot has more jobs to do for clojure that kinda overlap with what npm does for node.

micha 2019-01-12T19:35:55.086300Z

gulp, at least the last time i looked at it (a few years ago) has the issue that the pipeline isn't working on data passed from one step to the next -- the steps are working on a big mutable tree of files

micha 2019-01-12T19:36:15.086800Z

i think boot is more similar to the "broccoli" tool in the js space

micha 2019-01-12T19:36:32.087200Z

but yeah, composing pipelines is what boot is all about

2019-01-12T19:39:25.088Z

I thought broccoli uses the trees and gulp uses streams to work on vinyl file wrappers?

micha 2019-01-12T19:39:49.088300Z

yeah that's my understanding as well

micha 2019-01-12T19:40:30.088900Z

it's just that they're all mutable, whereas inboot the "file sets" are immutable

micha 2019-01-12T19:40:53.089400Z

so like if you have a pipeline boot task1 task2

micha 2019-01-12T19:41:08.089800Z

task1 can never see any of the changes task2 makes to the files

micha 2019-01-12T19:41:23.090200Z

so you can safely do like boot watch task1 task2

micha 2019-01-12T19:41:38.090800Z

and when the pipeline reruns you don't get any weirdness

2019-01-12T19:43:18.092500Z

That makes sense. I think gulp was intended to work that way but it’s difficult to enforce gulp.src('**/*.scss').pipe(sass.compile()).pipe(gulp.dest('./public')); where steps in the pipeline are only supposed to operate on data flowing in and push data out.

2019-01-12T19:43:59.093100Z

In so far, I like boot a lot. It seems even easier to work with.

micha 2019-01-12T19:44:25.093400Z

a lot of tradeoffs involved for sure

micha 2019-01-12T19:44:39.093700Z

hard to get that right πŸ™‚

micha 2019-01-12T19:45:44.094500Z

boot tasks receive a "fileset", do some work to the files in that fileset, and then create a new immutable fileset they pass to the next task

micha 2019-01-12T19:45:52.094700Z

kind of like git

micha 2019-01-12T19:46:28.095800Z

each task in the pipeline gets the HEAD, adds their own commit, and passes the new HEAD to the next task

2019-01-12T19:46:49.096500Z

Is the new fileset given to the second task based on the first task fileset or completely separate?

micha 2019-01-12T19:46:56.096900Z

when the watch task reruns the pieline it just basically does reset --hard

micha 2019-01-12T19:47:11.097200Z

it's like git, there is structural sharing

micha 2019-01-12T19:47:19.097600Z

it's a tree of blobs

πŸ‘ 3
micha 2019-01-12T19:49:43.099100Z

and each fileset is immutable

micha 2019-01-12T19:50:25.099500Z

boot.core/commit! makes a new fileset

2019-01-12T20:49:19.099800Z

Thanks, this makes more sense now.

micha 2019-01-12T20:50:42.100Z

great

2019-01-12T21:02:43.100500Z

Is it common\reasonable to use lein for deps and boot for tasks?

micha 2019-01-12T21:03:56.100900Z

boot resolves dependencies with the same maven machinery as lein

micha 2019-01-12T21:04:21.101300Z

and the :dependencies specification is identical

2019-01-12T21:06:55.103600Z

For a more specific use case I’m working on some cljs lein templates and the repo is lein based but I would like to have some tasks while developing the template for deploying and updating versions in README. Does it make sense to throw boot into the template project for that?

micha 2019-01-12T21:09:26.104100Z

you might want to slurp dependencies out of a project.clj file inside your build.boot

micha 2019-01-12T21:10:17.104800Z

like you can read in the project.clj and extract the dependencies inside your build.boot

micha 2019-01-12T21:10:26.105100Z

because the build.boot is just a clojure program

micha 2019-01-12T21:10:30.105300Z

you can do anything in there

πŸ‘ 1