Fork me on GitHub
#boot
<
2019-01-12
>
flyboarder06:01:55

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

15
flyboarder06:01:16

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

๐Ÿพ 30
๐Ÿ™‚ 5
borkdude16:01:10

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

alandipert17:01:16

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

alandipert17:01:30

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

alandipert17:01:47

so, we'll still be involved with the project

borkdude17:01:23

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

borkdude17:01:41

thanks for the time devoted to boot and making it awesome

alandipert17:01:46

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

borkdude17:01:57

that sounds cool!

alandipert17:01:01

thanks it's been really fun to work on!

alandipert17:01:22

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

borkdude17:01:46

My wife uses it regularly at her data science job

alandipert17:01:52

neat, yeah data science definitely lends to R

jaide19:01:53

Whatโ€™s the boot equivalent of lein install?

micha19:01:51

@jayzawrotny usually something like

boot pom jar install

micha19:01:06

it's a pipeline of individual tasks

jaide19:01:14

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

micha19:01:32

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

micha19:01:41

๐Ÿ‘

jaide19:01:33

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.

micha19:01:55

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

micha19:01:15

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

micha19:01:32

but yeah, composing pipelines is what boot is all about

jaide19:01:25

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

micha19:01:49

yeah that's my understanding as well

micha19:01:30

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

micha19:01:53

so like if you have a pipeline boot task1 task2

micha19:01:08

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

micha19:01:23

so you can safely do like boot watch task1 task2

micha19:01:38

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

jaide19:01:18

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.

jaide19:01:59

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

micha19:01:25

a lot of tradeoffs involved for sure

micha19:01:39

hard to get that right ๐Ÿ™‚

micha19:01:44

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

micha19:01:52

kind of like git

micha19:01:28

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

jaide19:01:49

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

micha19:01:56

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

micha19:01:11

it's like git, there is structural sharing

micha19:01:19

it's a tree of blobs

๐Ÿ‘ 15
micha19:01:43

and each fileset is immutable

micha19:01:25

boot.core/commit! makes a new fileset

jaide20:01:19

Thanks, this makes more sense now.

jaide21:01:43

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

micha21:01:56

boot resolves dependencies with the same maven machinery as lein

micha21:01:21

and the :dependencies specification is identical

jaide21:01:55

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?

micha21:01:26

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

micha21:01:17

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

micha21:01:26

because the build.boot is just a clojure program

micha21:01:30

you can do anything in there

๐Ÿ‘ 5