The Fundamentals of the Orion Project
Orion is starting to gain traction within the community since the 1.0 graduation release in the Fall of 2012. At conferences and demo camps, however, there seems to still be a lack of understanding about what Orion is trying to accomplish and technically how it is different from a standard Eclipse IDE.
The Orion Server
Since the Orion Client simply relies on these APIs to be available on the server, the team wrote a new server on top of Node.js or more recently a community member wrote one on top of Go. The client remains the same. We don’t have Git support (yet) on Node.js so the client differs in what it can support, server to server.
The Orion Client
The client is really where the major amount of development happens on the project. The team focuses on writing task and resource focused pages that can easily support exploring and leveraging cross-site workflows. The pages are designed without building everything you might be able to do in the same browser tab. This is what sets Orion apart from a traditional IDE experience. This initial experience with an Orion page might actually seem barren, however knowing the context Orion can get you to the relevant tasks very quickly and you can opt to stay within the existing tab or open a new one. In all circumstances, Orion just behaves like a web app. Use the forward and back features of your browser, bookmark the page you’re on, open up new pages in new tabs or don’t. It’s your choice.
For a concrete example look at this project cloned from GitHub. Orion can provide destination pages related to this particular file because it’s a Git project. Go to the Git log for this file, the Repository for this file, open the Orion Shell page in the directory this file is located or start a scoped search beginning in this folder.
These related links and pages are not hard coded. They are contributions made through the plugin architecture of Orion.
The Orion Plugin Architecture
Orion provides a number of extension point service types that plugins can contribute to, in order to customize the client and add functionality. Examples include:
- Adding more commands to the editor toolbar (Format JS)
- Adding more commands to the navigator view (Open with...)
- Adding content assist for new file types (Markdown)
- Adding syntax highlighting rules (Lua)
In the screen shot, the plugin manifests itself as the “Format JS” button within the editor toolbar. There are many extension points and the Plugin Developer documentation covers them in detail and provides code samples to help get one started.
Can’t I just use it?
Yes, the point of creating all these components, servers and plugins is to actually provide a useful set of tools for developers. Orion’s current feature set is ideally targeted toward languages or sites that do not require compilation or conversion before running. Orion is one such application, the developers self host Orion in itself for day to day development. Edit the code, test the site, push changes to git, repeat.
It’s trivial to clone a repository from any git source (GitHub, Google, Eclipse) into your Orion workspace and host it on a site to do rapid development. Developers can choose to work at http://orionhub.org or download and install a server on a local network. It takes about 2 minutes to have a multi-user server downloaded, and running.
If you’re doing development for Node.js, Orion also supports a simple ‘npm install orion’, ‘npm start orion’ which gets you an Orion server and client that just needs a node runtime available. This is great for editing files, using npm commands from within the Orion shell, plus launching and debugging Node applications. Notably, this version of Orion works great on devices such as the Raspberry Pi when you can point the server at your working directory and simply edit the content you’re working on in a browser on your main machine.
Consume what you want
There is also a full build of stand alone compare widgets and all the shims that allow the team to implement and utilize the rapidly changing HTML5 specifications and leverage some callback hell optimizations in the Promises A+ implementation.
Orion has numerous contributors from students, independents, developers at HP, SAP, Pivotal, Mozilla and IBM to name a few. These contributions are allowing developers to ship products such as Firefox, HP DevAnywhere, JazzHub Cloud ALM development platform from IBM, a desktop-based code editor called Scripted from Pivotal and even RD Traveler Web and z/OS Cobol solutions on the mainframe.
Just keep coding...
Orion 3.0, as part of the Kepler release train, has a lot of great new features so we encourage you to try it out. There are informational blog posts at PlanetOrion, lots of technical and getting started guides on the Orion Wiki, and you can follow or post your thoughts to our CloudCoding Google+ or @orionhub Twitter accounts.