[POST EDIT: This actually became quite long and went towards a much larger scope than just a cloud ide. Just a warning… lol]
Hi All,
I’ve been recently toying with the idea of integrating a development environment on a server-based (public cloud, private cloud, vagrant box(es)) model…
We all (most) understand the trend on moving to VMs, then vagrant vms, then container based architectures for development (be it running on the local machine or remotely)… I’m quite interested in putting one more item in that "immutable / always accessible / always “adhereing to production standard” enfironment): the IDE…
And I know that many people have their own preferences and I wont go into them… but I myself have preferences and I myself have shifted preferences when something which improved my flow came along… I can see a series of advantages/characteristics which make this a “good” idea, or at least not a trash one
just a few:
- Being able to access work independent of your machine being setup “just the way you like it” always - this is a PITA for me… I have OSX and Windows machines I use daily… (and even when I had only windows or only osx), keeping things in sync is a pain… (Atom/Nuclide with settings sync is a sorry excuse which almost works almost always, but I digress)… so just “having an IDE open all the time” is a nice plus imo…
- It provides ability to work against “workspaces” “environments” “stacks” (or whatever u want to call your apps “ecosystem”) that are always ready and easily syncable to the latest prdouction specs (updated DB version? update your app definition such as what we do in rancher, and everyone who uses the same stack or stack template can receive that)…
- Local development is possible but brings some of the issues which already exist with them… nonetheless, some cloud ide’s have desktop versions, or desktop “connectors” to help you use even your existing non-cloud ide to work on things…
- Security (some companies could look into this as a way of keeping a more centralized control?)
- pair programming, vcs, etc and all the common features arent missing
plus you can integrate the IDE with a deploy/CI process…
So basically my question goes, does this make sense to anyone at all? Has anyone looked at the IDEs now available? Has anyone done something “rancher-related” with it? Is anyone interested in trying to tackle this? I think a catalog which installs one of the available (and widely developed ides like c9, codenvy (or eclipse) che (not quite sure the differences yet), koding, or others could be something really neat.
My idea would be tying this into the VCS system such as Gitlab (which has a mention of adding Koding IDE in their roadmap) and basically getting a “developer center” up… The IDE should support both the writing of code, but also the composition of the dockerfiles. Everything would be stored in VCS (Git for example if gitlab, or even github if be the case, etc)… Containers/Compositions/Bundles would be built and uploaded to the registry (local or public) through the IDE (using docker tools, no need to reinvent)… Git/Gitlab/Github can/could trigger webhooks for CI, and rancher could “host” the development stacks, aware of new versions, or even allowing file changes within a container if be the case (say website development where you may not need a build if you just change an HTML file)…
I started toying with Codenvy/che and it seems to be able to do some of this, not sure how its doing it though… it has its concept of “workspaces” which from what I could see accepts a docker-compose file (so workspace=stack?)… I wonder how difficult it would be to integrate or merge the overlaps and have a one-stop cloud (or local) development, test, staging, production workflow hosted inside rancher…
Its quite ambitious, so I’d start either just editing source-code and commiting from within the IDE and allowing a CI process to do the rest and rancher updating the service (probably manually or from the CI), but ideally I dont see why it wouldnt be able to all be scripted from the same place… ideally culminating in an environment flow from development, to testing, to staging, etc, all the way to production from a single point (well that point is actually rancher), but it would require a bit more in terms of workflows, and its something that an IDE together with VCS system could eventually help narrow gaps with imo…
(approvals akeen to code review, merging causes CI to deploy and so forth, but not just on a development branch…)
Anyways, I guess this is me dreaming big, but I’m going to start experimenting with parts of this, if anyone has done anything (ide, stack creation, image building, etc using tools within rancher itself - not rancher tools, but tools running on a rancher cluster - i’d be interested to hear more… (the basics I get…jenkins for CI, ok, what I mean is integrated some tools to accomplish this more unified workflow).
Let the shooting begin
PS: before I get 100% shot down, let m just say that althoguh I talked abt the flow all the way to production, I think the first issue to tackle and the one where potentially most is gained is integrating the “code creation” with the “stack creation” for quick and uniform development environments which allow changes on both code and stack easily and with traceability (everything in VCS). Codenvy does this with its workspaces, but I’d like to explore bringing such functionality on top of Rancher as a (series) of services.