A walkthrough of Hyper IDE’s architecture

On this day, the 23rd of December, 11 years ago, back in 2006 – I started what was later to be referred to as “the mother of all” (toolboxes for web development was its implicit meaning). 7 months later, my company had grown in value from 20K EUROs to 1.2 million EUROs, and people started flocking around me. A shitloads of setbacks later, tons of research, 11 years later, add a couple of nervous breakdowns to the mix – And we are here today, looking at the last nail in the frame, of that exact same business plan, that I originally devised during x-mas of 2006. You could probably refer to me as a lot of things, but I don’t easily give up, that’s for darn sure … 😉

Anyways, sorry for being sentimental, I always tend to be that during x-mas, because of personal reasons. You are probably reading this article because you are interested in Hyper IDE I presume. Hence, the purpose of this article is to try to explain some of the architectural choices behind Hyper IDE. First, you’ll probably benefit from watching this video. The video demonstrates Hyper IDE, looks at some of its features, and goes through some parts of its code and security implementations. The video is quite lengthy (18 minutes), and not everything in the video below is yet released, but will be in the next upcoming release. Still, if you download the latest stable release of Phosphorus Five and Hyper IDE, you’ll probably recognise most of the things I demonstrate below.

Now, as I discuss in the video above, first of all, Hyper IDE is purely based upon your server’s file system. This has a lot of advantages, such as not being tied down to one particular platform. Hence, supporting arguably all programming languages on the planet, is easily done, as long as project files and build systems can be configured through scripts, such as for instance nAnt, Ant or MAKEFILEs, etc. Even Visual Studio project files are simple XML files. There are no magic reasons why you need Visual Studio, as long as you have something that can understand the same text file structures. Besides, seeing what’s inside of these project files, arguably makes you a better developer, since you’ll understand what goes on beneath the hood of them as you dissect, read and maintain them with a text editor. For the record, implementing your own editor for files such as for instance .vsproj files, would actually not only be possible, but also quite easy, if you wish to create some actual GUI for editing these files, instead of editing them as text files.

Although Hyper IDE supports 100+ programming languages, it still needs to make some choices in which programming language it is implemented in itself. To be able to solve some of the issues I needed to solve during this process, I had to create not only my own Ajax library, invent a new design pattern, and create my own programming language – But I also had to create my entire operating system, virtually from scratch – Which is Phosphorus Five’s role here.

Third, I wanted to benefit from all the brilliant command line tools that have been created over the years. So instead of for instance using Git and similar technologies through some library, I chose to simply create support for running shell/cmd scripts through Hyper IDE, and such benefit from being able to use any types of compilers and source code control systems, that has an existing command line interface, such as for instance Git does. No reasons to reinvent the wheel here.

In addition, I built it on top of a brilliant piece of work called CodeMirror, which is a JavaScript based text editor for editing code. It supports everything from C++ to Brainfuck, in addition to everything in between. Yet again, no reasons to reinvent the wheel, when the existing wheel solves your needs brilliantly.

Now the actual code for Hyper IDE, is therefor surprisingly small. In fact, I counted a couple of days ago, and it was 2,200 lines of code. Todays it’s probably larger, and obviously it will grow – Yet still, that fact proves a point none the less. Which I guess you can understand, without me having to feed it to you with a spoon. It still features mostly everything you would want from a good foundation for an IDE, and it has tons of plugin support, if there’s something missing. It also integrates perfectly with all other apps in Phosphorus Five, meaning I can for instance use it in combination with Hypereval if I want to, for debugging purposes for instance – And for that matter Sephia Five to have it send emails. This implies that the IDE does not live in isolation from the rest of Phosphorus Five, but arguably becomes a “plugin” by itself, which can live in symbiosis with other apps. Creating a TODO list for work for instance, can easily be done with e.g. Camphora Five, and have your Camphora CRUD app seamlessly integrate with Hyper IDE, becoming your TODO list.

In later articles, I will dive deeper into some of its code, and also security features – However for now, I’ll probably toss in for a couple of days. After all, it is x-mas, and I have been working for 11 years on this. Happy x-mas 🙂

Ohh yeah, obviously it’s Open Source … 😉

Disclaimer; For the record, Hyper IDE is some pretty cutting edge technology, and it was just recently released in its initial release. So there might be some bugs and quirks in it. Please be patient with it, and feel free to report any bugs and feature requests at its GitHub project site.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.