Orion Deployed

Orion goes from prototype to production

EclipseCon France - June 5, 2013

John Arthorne / @jarthorne / github.com/jarthorn
Eclipse PMC, Orion committer, IBM Canada
Clone this talk into OrionHub
Rate this talk!

What is the purpose of Orion?



Open Source Platform for Browser Based Development


All open source
At Eclipse and mirrored at GitHub
Orion Wiki Page

Do developers really want to move to the cloud?

  • Progression of desktop to browser-based tools
  • Developers using social tools
  • Deploying to Cloud
  • Tools work best on deployment platform
  • How enjoyable was your last IDE setup experience?

What is Orion not trying to do?


  • Recreate a traditional IDE in a browser tab
  • Be a full service application platform (Dojo, JQuery)
  • Build a monolithic IDE server
  • Replace all your existing tools

Focus on...


  • Embracing modern browser capabilities
  • A plug-in architecture for extensibility
  • Components that are consumable
  • Cross-site workflows & integration
  • Fast, task-focused pages

Orion pages and plugins


  • Orion provides many pages by default
  • Provides necessary functionality for developers
  • Go from creating, editing, self hosting to deployment and source code control
  • Extensibility is what sets Orion apart

How we achieve plugability

A JSBeautify Orion Plugin

example snippets of Orion parts


// plugin.html has:
...
<head>
	<script type="text/javascript" src="plugin.js"></script>
	<script type="text/javascript" src="jsbeautify.js"></script>
	
// jsbeautify.js has:
...
provider.registerServiceProvider(["orion.edit.command", "orion.cm.managedservice"], {
	updated: function(properties) {
	run: function(selectedText, text, selection) {
		var toFormat;
		var selectionEmpty = selection.start === selection.end;
		if (selectionEmpty) {
			toFormat = text;

What's your point?

Plugins can extend the functionality of Orion in the browser dynamically, without any server side changes. The plugins themselves can come from any site, not just the server Orion is hosted from.

Put it all together...

Your existing tools already on the web,

connected to Orion components through links and plugins

Your browser becomes a tooling platform

Orion Editor

Orion Shell

Orion Search

Orion Git Repositories

Orion Git Status with Compare

Works on mobile tablets

While Orion works on phones it is better suited to tablets. Adding a bluetooth keyboard is even better

iPad mini and a Nexus 7

Install your own Orion server

Got Node.js?

npm install orion

edit orion.conf to set a workspace directory

workspace=/home/pi/Workspace/


Orion shell commands available for Node and npm

You can consume Orion too

Many components of Orion are meant to be individually consumable. Leverage our work for your project and if you have suggestions or changes, contribute them back.


  • Source editor
  • Compare editor
  • Plugin and service registry
  • Shims for HTML templates, URI templates

Minified editor

function Deferred() {
	var result, state, listeners = [],
		_this = this;

	function notify() {
		var listener;
		while ((listener = listeners.shift())) {
			var deferred = listener.deferred;
			var methodName = state === "resolved" ? "resolve" : "reject"; //$NON-NLS-0$ //$NON-NLS-1$ //$NON-NLS-2$
			if (typeof listener[methodName] === "function") { //$NON-NLS-0$
				try {
					var listenerResult = listener[methodName](result);
					if (listenerResult && typeof listenerResult.then === "function") { //$NON-NLS-0$
						deferred.cancel = listenerResult.cancel || noop;
						listenerResult.then(noReturn(deferred.resolve), noReturn(deferred.reject), deferred.progress);
					} else {
						deferred.resolve(listenerResult);
					}
				} catch (e) {
					deferred.reject(e);
				}
			} else {
				deferred[methodName](result);
			}
		}
	}
If you want to generate a snippet of code
for a blog or web post
Check out the Snippet Orion Plugin

Client side compare

Complete JavaScript client side compare both inline and unified views.

Community

Orion is developed by contributors from IBM, VMWare, Mozilla, Google, HP, individuals (students), YOU!

Adoption

  • Starting to see adoption of Orion pick up
  • Heavy use from Mozilla in Firefox tools
  • Scripted open source Orion-based desktop editor from VMWare
  • Stardust browser-based BPM tools built on Orion
  • Cloudfier business app modeling
  • HP demoed agile develoment tools using Orion
  • Xtext on the web prototype from Itemis
  • Beta next gen JazzHub browser dev tools

The downside

That sounds great! Now here's what we need...

  • One million accounts
  • 10,000 simultaneous connections
  • 99.9% uptime
  • Single sign-on, LDAP integration, WAR file
  • Integrate with different client side frameworks
  • Skinning/branding
  • Globalized, accessible, secure
  • Can we have that in three months?

Making the server real

  • Analysis of Orion as a 12 Factor web application
  • Orion turns out to be an 8.5 factor app
  • IV. Backing Services
  • VIII. Concurrency
  • XII. Admin processes

Backing services

  • Used OSGi prefs for metadata
  • Not scalable, not concurrent, not pluggable
  • Hard to administer, not configurable
  • New metadata API allows swapping metadata store in server config
  • Current state: API created and used, but still backed by preferences

Concurrency

  • Integration via HTTP, file system, or client
  • Server per component doesn't scale
  • Should be: Horizontal scaling based on workload
  • Deploying Orion WAR file into bigger app
  • Need to carve out indexing and Git operations


Image: 12factor.net

Dev/prod parity

  • Orion builds and deploys development builds daily
  • OrionHub gets every milestone, minimal admin
  • Deployment is automated; Investigating Chef
  • Still some friction between dev and production
  • Working on switch to Tycho build

Client integration

  • Was using a single specific JS framework
  • Used to paper over differences between browsers
  • Hard to integrate for clients using other frameworks
  • Slower page load times

Client integration: going native

  • Modern browsers are standards-based and increasingly consistent
  • Dropped Dojo in favour of browser mechanisms
  • Easier third party adoption
  • Page load times went from 750ms to 250ms
  • 90KB of JavaScript loaded instead of 600KB

Client integration: branding


Enterprise delivery

  • Accessibility: keyboard, screen readers, ARIA roles
  • Security: SSO, LDAP, vulnerability testing
  • Globalization: NL testing, variable line height

Next steps

Orion is making the leap from neat open source project to the base of commercial web applications, but we're not there yet. Some things on the TODO list:

  • Better skinning story (LESS)
  • Continuing on server scalability
  • Support for compiled languages
  • Improve import and deployment workflows
  • JS language tooling improvements
  • What do you want to build?

Find out more

Read our blog at Planet Orion

Check out the Orion BUZZ

Lots of information in the Orion Wiki

Follow Orion on Twitter

Create an account and try it at OrionHub

John Arthorne / @jarthorne
Eclipse PMC, Orion Committer
Clone this talk into OrionHub