Why not just run Linux locally? Mac OS X is BSD, not Linux, which means its build tools & environment are subtly incompatible. You're always going to be chafing if you develop anywhere other than in your deployment environment.
Linux is superlative for desktop & development use. It supports things like tiling window managers far better than does a Mac. It's free. The hardware is far more affordable. Although this is definitely a matter of taste, I find Linux far more usable than a Mac. I will grant that Mac laptops are lightweight & thin.
It just seems weird to me to go through all these contortions to develop software for Linux on a Mac or Windows box when it's far easier IMHO to just … run Linux.
I love Linux, but saying that the desktop use is "superlative" is a bit, let me don my fire retardant suit, wrong. It's a decent enough desktop system, but it falls markedly behind in terms of tooling.
There's simply a large number of high quality tools which are not available for Linux, which means that you have to resort to an open source tool which, while decent (and sometimes even fantastic), are still nowhere near the quality of many closed source tools.
I wish this would change, and I do what I can to make it change, but the simple reality is that depending on the tools you want to (or need to) use, Linux is behind the game.
That said, I agree wholeheartedly with your very first statement: Why not just run Linux locally? Except, I would recommend a local VM. Best(ish) of both worlds.
unless you have a recent gpu, or want to listen music without tuning configuration files every update, or use input devices that aren't mouse/keyboard, or change multi screen configuration every now and then, or...
Developers don't exist in a vacuum. A lot of people have to use stuff like Office and Skype; if you do that on Windows, "you're always going to be chafing", the pain just moves from one area to the next.
I've been using a Mac for 10 years and am thinking of switching back to Linux. I also want to get new hardware as 4GB RAM is really limiting. What would people recommend? I do like the Mac hardware, but considering you can get better for a lot less I don't think I'll stick with it.
What if you deploy to Linux and Windows? Do you have to develop on both OS's?
Monocultures where you develop and deploy on the same OS are more efficient in the short term, but cause massive problems in the long term when you have to start supporting a different OS and you suddenly realise that you have finely tuned things for one environment at the expense of robustness.
It's just like in nature. Monocultures are better in the short term, until the environment changes. Then they struggle to adapt. (I suspect that most mass extinction events have been a failure to adapt to changing environments when overly adapted to a specific environment).
Docker is still useful in some cases, ie I'm using it to run separate postgres databases for each project. I could use a nix environment instead but Docker is just easier.
Linux has never been very good for standard desktop use in the form presented by OS X and Windows. It's still a hobby OS, where your computer itself must become your hobby, rather than whatever it is you want to do on the computer.
We provide an alternate solution ([1]Wormhole) that covers this scenario (and others). The main differences with e.g. Weave are:
- Non Docker-specific
- Easier to deploy, in my opinion ofc :-)
- Based on Open Source (You can just deploy SoftEhter's vanilla client as the agent)
- We don't use vxlan, just SSL encapsulation.
- Actually, every client will only generate outbound SSL connections, so chances are you won't need to reconfigure any firewalls or network gear for Wormhole to work.
- By default, chances are you won't overlap with the provided IP addressing (non-public, non-RFC1918 IP space)
- Multiplatform Windows / Linux / Os X
- API available to create and deploy networks and clients
- Our architecture requires traffic to go up to a central server and down to destination, so there's added latency. In my tests I've found this to not penalise performance for most applications as other solutions based on extra layers (I.e. Vxlan) like Weave.
Don't get me wrong, I think Weave is brilliant. We're just an alternative that aims for simplicity. There's some overlapping, but we probably have different markets.
Offtopic, but does anybody know how the diagrams in this article were generated? I'd love a simple piece of software to generate beautiful, straightforward pictures like this to explain architectural problems.
Why do you need to connect to remote services using weave? Should the stage environment be separated from you development one?
Anyway nice article.
Thanks
We have around 18 different microservices each with their own configuration and repos. Setting them all up, keeping them up to date and managing them locally is a pain (and also turns my laptop into an inferno). Our staging environment is on Runnable which spins up all 18 of these in an isolated stack so I do no have to worry about configs or management.
I dream of a company that installs Linux on some of the most popular desktops PROPERLY, and charges users 100$ to install it, and helps you maintain your Linux desktop over the years.
Many have tried, no one has succeeded.
Canonical had an opportunity to do this... Instead, they had to do "Enterprise" stuff. Bah.
[+] [-] zeveb|10 years ago|reply
Linux is superlative for desktop & development use. It supports things like tiling window managers far better than does a Mac. It's free. The hardware is far more affordable. Although this is definitely a matter of taste, I find Linux far more usable than a Mac. I will grant that Mac laptops are lightweight & thin.
It just seems weird to me to go through all these contortions to develop software for Linux on a Mac or Windows box when it's far easier IMHO to just … run Linux.
[+] [-] falcolas|10 years ago|reply
There's simply a large number of high quality tools which are not available for Linux, which means that you have to resort to an open source tool which, while decent (and sometimes even fantastic), are still nowhere near the quality of many closed source tools.
I wish this would change, and I do what I can to make it change, but the simple reality is that depending on the tools you want to (or need to) use, Linux is behind the game.
That said, I agree wholeheartedly with your very first statement: Why not just run Linux locally? Except, I would recommend a local VM. Best(ish) of both worlds.
[+] [-] LoSboccacc|10 years ago|reply
unless you have a recent gpu, or want to listen music without tuning configuration files every update, or use input devices that aren't mouse/keyboard, or change multi screen configuration every now and then, or...
[+] [-] toyg|10 years ago|reply
[+] [-] lucaspiller|10 years ago|reply
[+] [-] Singletoned|10 years ago|reply
Monocultures where you develop and deploy on the same OS are more efficient in the short term, but cause massive problems in the long term when you have to start supporting a different OS and you suddenly realise that you have finely tuned things for one environment at the expense of robustness.
It's just like in nature. Monocultures are better in the short term, until the environment changes. Then they struggle to adapt. (I suspect that most mass extinction events have been a failure to adapt to changing environments when overly adapted to a specific environment).
[+] [-] Keats|10 years ago|reply
Docker is still useful in some cases, ie I'm using it to run separate postgres databases for each project. I could use a nix environment instead but Docker is just easier.
[+] [-] geggam|10 years ago|reply
[+] [-] Laaw|10 years ago|reply
[+] [-] cjbprime|10 years ago|reply
Do you want ants? Because that's how you get ants.
[+] [-] api|10 years ago|reply
[+] [-] NetStrikeForce|10 years ago|reply
We provide an alternate solution ([1]Wormhole) that covers this scenario (and others). The main differences with e.g. Weave are:
- Non Docker-specific
- Easier to deploy, in my opinion ofc :-)
- Based on Open Source (You can just deploy SoftEhter's vanilla client as the agent)
- We don't use vxlan, just SSL encapsulation.
- Actually, every client will only generate outbound SSL connections, so chances are you won't need to reconfigure any firewalls or network gear for Wormhole to work.
- By default, chances are you won't overlap with the provided IP addressing (non-public, non-RFC1918 IP space)
- Multiplatform Windows / Linux / Os X
- API available to create and deploy networks and clients
- Our architecture requires traffic to go up to a central server and down to destination, so there's added latency. In my tests I've found this to not penalise performance for most applications as other solutions based on extra layers (I.e. Vxlan) like Weave.
Don't get me wrong, I think Weave is brilliant. We're just an alternative that aims for simplicity. There's some overlapping, but we probably have different markets.
[1]: https://wormhole.network
[+] [-] zephod|10 years ago|reply
[+] [-] ncke|10 years ago|reply
[+] [-] darrhiggs|10 years ago|reply
[0] https://en.wikipedia.org/wiki/DOT_(graph_description_languag... [1] http://www.graphviz.org/
[+] [-] pavlov|10 years ago|reply
[+] [-] fabiofumarola|10 years ago|reply
[+] [-] kernel_panic|10 years ago|reply
[+] [-] simonebrunozzi|10 years ago|reply
Many have tried, no one has succeeded.
Canonical had an opportunity to do this... Instead, they had to do "Enterprise" stuff. Bah.
[+] [-] thelimey|10 years ago|reply
[deleted]
[+] [-] antman|10 years ago|reply
[0] https://news.ycombinator.com/item?id=9498139
[+] [-] fons|10 years ago|reply
See http://weave.works/weave-docker-networking-performance-fast-... http://rp.delaat.net/2015-2016/p50/report.pdf
Full disclosure: I work at Weaveworks
[+] [-] dmritard96|10 years ago|reply