Codio is a browser-based IDE supporting a large number of languages and including its own Ubuntu instance to test the code.
Codio is a relatively new online IDE that has recently come out of beta. Like other online integrated development tools Codio runs in the browser, all major browsers being supported, but it comes with a Box – a Ubuntu instance running remotely on the server and having preinstalled Node.js, Ruby, Python, C, Java and Git/Mercurial/SVN. A large number of other components can be installed in the Box, such as Ant, Apache, Erlang, F#, Go, Grails, Groovy, Haskell, MariaDB, memcached, MongoDB, Mono, etc., the complete list being available on their website or on GitHub. The Box is accessed via a terminal and it serves as support for running the code under development or some related services. The Box is automatically started whenever the editor is accessed.
Some of the IDE’s features are:
- Syntax highlighting for a large number of languages including the common C, C++, Java, F#, HTML, JavaScript, CSS, but also the not so common Go, Rust, D, R, or the venerable ones such as Ocaml, Scheme or Pascal.
- Autocomplete is supported for HTML, CSS and JavaScript files
- Code formatting
- Annotations – a way of introducing comments or explanations within the code
- HTML and CSS Emmet abbreviations. For example, an unordered list with 3 entries can be written as:
ul>li*3
and the editor generates the corresponding HTML. - Real-time collaboration on code
- Multiple cursors
- Project sharing
- Preinstalled support for Git, Mercurial and SVN
- Deployment on the personal Box or through Git, FTP, SFTP, RSYNC, Nodejitsu, Parse.com
- Bower integration
InfoQ has interviewed Freddy May, CEO at Application Craft Ltd., to find out more about this tool.
InfoQ: What language(s) have you used to write Codio?
FM: Codio uses pure HTML5+CSS+JS for the front-end. The platform itself is a fairly equal mixture of Java and Node.js with MongoDB as our main data store.
InfoQ: What differentiates Codio from other online IDEs?
FM: Codio is the friendliest IDE of them all. We have put a lot of effort into making the entire experience as seamless, easy and “out of your way” as possible without sacrificing power. As a result, we are used very widely in Education as well as by professional developers.
We are also about to announce some very exciting new features aimed specifically at teachers of coding, aimed to relieve much of the pain faced by teachers of coding, which is a brand new subject for most schools around the world. The combination of a great coding platform and integrated teacher support will be a completely unique offering.
Many Online IDEs are just online code editors. Codio offers an Ubuntu Server (a Codio Box) with each and every project. This means that users are able to not just write code, but also execute code as if it was running on their own machine without the need to deploy or copy the code anywhere else. Each Codio Box is preinstalled with languages and tools commonly used by developers. Other languages and tools can be installed extremely easily using Codio Box Parts which allow complete stacks to be installed with a single command.
Thanks to our cutting edge virtualization, Codio projects and their Boxes load almost instantly.
InfoQ: What is your target developer?
FM: Codio is suitable for use by pretty well any full-stack developer except those with a strong Microsoft focus. So all aspects of front-end development are very suitable. At the back-end, Codio Boxes have Node.js, Ruby, Python, C and Java preinstalled but most other back-end languages can be installed using “Codio Box Parts”, which allows stack elements to be installed with a single command.
We are also targeting aspiring developers and teachers of coding. Just setting up a machine ready for front and back-end development can take many hours. If a teacher is teaching a class and is responsible for setting up the students’ machines (as is often the case) this can waste weeks of a teacher’s time. Because teachers can preconfigure Boxes and use these as templates for teaching assignments, the pain of student stack setup is completely resolved.
InfoQ: I see a lot of source code under the GitHub Codio project. How much of Codio is open source?
FM: Codio is not an Open Source project although some elements are. However, we plan to open up the entire IDE towards the end of the year, allowing developers to build their own plug-ins. At this point, we will open source all of our existing IDE components so users can customize existing elements as well as adding new ones.
InfoQ: I see Codio works only online. Any plans for offline mode?
FM: We do have plans for an offline version, but this will probably not be until 2015.
InfoQ: What are Boxes?
FM: A Box is an Ubuntu server. Each project that a Codio user creates gets its own dedicated Ubuntu Server. Users can have as many Boxes as they like and whenever a user works on a project, the Box is spun up instantly. When they stop editing a project, the Box is no longer active until they next work on the project again. We will be adding ‘Always on Boxes’ in late Q3 which will allow Codio subscribers to leave a Box running when they are not editing projects. Always On Boxes are especially useful when developing sites or back-ends that need to be running at all times even when not being actively worked on. Codio Boxes have limited capacity that are fine for most users but we will also be introducing Bigger Boxes that allow Codio subscribers to assign more RAM and CPU to an individual project.
One of the very powerful features of Codio Boxes is the ability to completely configure a Codio Box as a template Box. This Box can then be marked as ‘Clonable’, so other users can simple clone that Box to get the fully configured stack along with any template source code, instantly available to anyone wishing to save the stack setup time. This has many applications in the corporate world as well as in education.
InfoQ: Codio is one of the possible deployment options. Do you provide hosting?
FM: Codio is itself a hosting platform. As we provide an Ubuntu server with all projects, you can host anything on it (using web servers or frameworks provided by things like Node.js, Ruby, Java, etc.). Always On Boxes (mentioned in an earlier response) will ensure that applications are permanently available even when not being worked on by the user.
I should also point out, however, that Codio should be seen as a development platform rather than as a production platform, so even though users will no doubt use it for production purposes, we do not offer SLAs nor do we yet expect production scale loads to be generated by users. We believe that for larger scale deployments, there are many platforms (Heroku for example) that do an excellent job of this. Codio allows extremely simple deployment to any production platform or service.
InfoQ: What are your plans for the future?
FM: We are about (late July) to announce some major plans in the field of teaching coding and will shortly be announcing a complete set of education features that are aimed specifically at teachers. We will also be announcing a comprehensive ISV program that allows ISVs and developers to integrate Codio into other platforms where an integrated IDE is needed.
Codio is free for one private project and an unlimited number of public projects. Paid plans provide support for an unlimited number of private projects. Boxes currently have 512MB of RAM and 16GB of storage across all projects.