First of all, thanks a lot for this awesome package and all the time you guys put into building it. I appreciate that a lot!
I'm aware my suggestion is kinda daring, nonetheless I want to put it up for discussion. Almost all docker related projects (and of course docker itself) are written in go-lang. boot2docker for example also takes this step. I think I don't have to list the advantages you have using go. But the main advantage in my opinion is that you don't have any dependencies such as pip
.
As I said, this is just a suggestion. If you don't consider a rewrite in go, simply close this issue. I won't be sad :smiley_cat:
Definitely a discussion worth having. We've been mulling it over since the start, and I already agree with your points. Not having to deal with pip would make for a much smoother ride.
A few things, off the top of my head:
Like I say though, it's worth talking about, so thanks for giving the discussion a place.
Yep. Our reasoning in the first place for writing it in Python was moving fast, and the assumption we'd be able to produce binaries.
Turns out making binaries of Python apps is not so straight forward. Another argument for Go is we can reuse bits of Docker / the rest of the Docker ecosystem written in Go.
Another +1 for Go: reusing the Docker client code would fix #95 and #96.
Awesome. Thanks for sharing your thoughts! I want to dive deeper into Go on my own, so perhaps I can help at some point.
There are already some tools out there which are similar to Fig which are written in Go. For example, I've written Crane.
What are the other options (in any language) besides Crane? It would be nice to have a Wiki page for that.
I also know of https://github.com/makeusabrew/decking and https://github.com/marmelab/gaudi (though the latter differs quite a bit from Fig/Crane as far as I can tell).
Love the idea of this in Go.
If anyone wants to have a go at starting this, there's a blank branch here that pull requests can be opened against:
https://github.com/orchardup/fig/tree/go-rewrite
/cc @schickling @bbradbury
Would love to be involved in this!
@marksteve Stuff is happening: #298 :)
Guess we could discuss in #orchardup on freenode? /cc @nathanleclaire
:+1:
crane works well for me, might be a good starting point.
@marksteve @schickling – @nathanleclaire is having a go at this. If you want to help out, he's in #orchardup on freenode. :)
@marksteve @schickling @bbradbury If you guys would like to contribute, it's a fun time working on re-implementing this in Go. IRC is by far the best way to get ahold of me (my handle is nathanleclaire) although my email is pretty easy to track down as well. You should ping me and we can discuss next steps. See #314 as well
If you're adding tests and not just hacking, I'll help out. I think the python implementation currently suffers from huge gaps in the test coverage, so it would be good to focus on that early on in a rewrite. Much easier to get that right from the beginning.
I started this experiment ichijiku in golang. I wanted a fig version that works on windows as well. It aims to be compatible with fig.yml, written in golang, and I also decided on using the docker command line client to have access to all the latest features.
Now that https://github.com/docker/libcompose exists, I think we can close this issue.
Oooh, very nice. Is the long term plan for compose to built into the docker binary as a sub-command? E.g. docker compose up
.
Today we also open sourced this one https://github.com/grammarly/rocker-compose
Most helpful comment
Oooh, very nice. Is the long term plan for compose to built into the docker binary as a sub-command? E.g.
docker compose up
.