We are living in a web world.
Thanks to mobile phones, tablets and more mobile platforms, we are spending more and more time away from our usual workplace, and this brings with it some significant problems for developers.
Thanks to the adoption of open source by major companies, and it being the up and coming the standard, collaboration over great distances have become increasingly common.

So what are developers currently doing as their workflow, and workspace?
Putting aside practices such agile development, a developers workflow looks like this:
Sit behind a computer, fire up Sublime/PyCharm, make some code changes, push this upstream on GitHub (or similar), merge it with changes from others, and release.
Works fine, but when you are away from the office, and unless you carry your laptop everywhere you go (yes, I’m guilty of that), you can’t make changes, however critical.

But wouldn’t it sound quite normal if someone came up with a way to develop on the web, and I don’t just mean like changes.
Like the whole development process?
Well, someone did, and they did it perfectly!

Introducing: Codenvy

Codenvy is everything you expect from an IDE, but in a browser.
It looks beautiful, supports many many many languages, has built in docker, Git and Subversion support built in, and of course holds your projects.

So what does Codenvy look like?

Almost all IDE’s have the same look and feel, and Codenvy is no different.
That’s not a bad thing though, as you can simply open it and work, since you already know where everything is.

It has a beautiful dark theme which looks superb, has syntax highlighting and feels like a native application.
Just have a look at this:

Codenvy IDE

Codenvy IDE

Python support

Python support is built in.
But I tend to be rather cynical when an IDE claims to have Python support, since what they usually mean is that they allow you to write Python with bare minimum support.
But Codenvy delivered.
They support Python 2.7 & Python 3.4 (at the time of writing this).
But they also go into more depth than that.
When selecting your programming language, the bottom of the list provides a standard Python 2.7/3.4 setup, Python 2.7 Web and Python 2.7 Google App Engine Guestbook.

Selecting for instance Python 2.7 will give you what the image above shows.
A ready to go boilerplate Flask setup.
No need to install the dependencies, and you don’t even need to remember how to create the app. It’s all ready to go.
And as you can see, syntax highlighting is working excellent.
But there is one feature that is sadly lacking: code completion.

Whilst coding, you won’t find the editor giving you tips on which function you might be trying to use.
This means you have to code everything by hand, every single letter. That’s a real shame.

Git and Subversion

I am not a user of Subversion, but needless to say, that is also supported.
I’ll be looking at Git integration though.
When starting a project, you can just pull in code from a Git repository, or GitHub.
As you can see below, it’s a very simple process:

Git integration

Git integration

But you could also write code from scratch and simply host it with Git using Codenvy.
Selecting Git from the top menu, and then Initialize Repository will connect it to git where a Git repo URL is created ready for you to do all your Git magic with.
But before you ask about BitBucket, yes, that too is integrated!

Customization

No IDE is complete without customization (at least to some degree).
And whilst I did not expect it from a web app, it is available.
As you see in the screenshots above, the standard style is a dark colour editor.
But selecting ‘Window’ and then Preferences, brings the following options:

Codenvy preferences

Codenvy preferences

I found it unable to change from Dark Theme however.
But the codenvy blog posts, and posts from others suggest that it is possible, so this may be due to my free account.
You are also able to change to a VIM like editor (sorry, I’m not a VIM fan).
So for a web app, customization is quite surprising.

Collaboration

But what about working together on a project?
Codenvy makes it unbelievably simple.
You can create a link for any person to get their own copy of the project in a Codenvy instance so they can test the code, contribute to it, and send a pull request. Without having to download a single thing!
But rather than me explain it, look at this video to see how it’s done:

Conclusion

So is Codenvy worth looking at?
If you are an avid programmer, contribute to projects and use services like GitHub, this is an absolute yes!
But even if you are a single developer who is used to working alone, it’s still such a delightful IDE to use. And they make full use of Docker which is just excellent.
But if you are a beginner just looking at starting programming, then you may find traditional IDE’s better with their code completion.

Pros

* Excellent Python support
* Integration with GitHub/BitBucket
* Syntax Highlighting
* Fully fledged IDE
* Great documentation
* Support for Eclipse

Cons

* No code completion

I recommend to try it out, and let me know what you think!