Synergy OS Archive

Launch! The state of the Synergy OS development

Launch! The state of the Synergy OS development

Today I want to report something about the Synergy OS development state. Synergy OS was introduced in december 2009. So this project is alive since less than 2 months now. The first evaluation process regarding which existing software components are best suitable to use in Synergy OS is finished now.

In Synergy OS, the following software components will be integrated:

  • V8 Javascript engine from Google
  • WebIDL compiler from ES Operating System
  • Chromium Browser from Google
  • Partly code from ES Operating System for C++ / V8 bridging
  • Jetty Webserver
  • Lively Kernel from Sun Microsystems
  • ExtJS Open Source
  • OpenJDK

And some more smaller components introduced here later.

Open project management tasks for the next week

Synergy OS has a component architecture and it’s software components will be developed independently on code.google.com. This prevents hard dependencies between the different projects and enables developers, software architects and maintainers to use the projects more freely for any purpose. For example the foundation classes could be used exclusively or the ESShell could be integrated independently in some other linux distributions too.

For each project currently scoped in the concepts category, project pages need to be set up and configured accoring to the needs for collaborative development.

Further it’s needed to improve the community communication structure. An IRC channel needs to be registered on irc.freenode.net. I scope #synergyos to be registered to use for this purpose.

Open development tasks

  • We need some more concepts scoping the ideas of Synergy OS in the Concepts section here. Specially charts and graphics to visualize the architecture. Some of the graphics are already done but need to be uploaded here.
  • The SynergyShell needs to be implemented for Milestone 1 and to be committed into the project repository. In this version the SynergyShell just wraps the V8 virtual machine and executes the javascript instructions. It also has a native binding to the OpenJDK driven Synergy OS Framework.
  • Chromium needs to be commited into the “SynergyView” (Milestone 1) project and customized to access localhost by default at startup.
  • Jetty needs to be commited into the “SynergyProvider” project. An easy bridge between SynergyShell and SynergyProvider will be written to let WebApps be executable by V8.
  • The Lively kernel project code needs to be commited into the “SynergyWM” project. It needs to be packed into a WebApp that provides the window manager for the SynergyView. This is the first WebApp that will be called by SynergyView at startup.
  • Synergy Web Framework classes  need to be implemented and commited into the project repository to be able to use them inside of he WebApp’s
  • Same for the Synergy OS Framework classes. They need to be implemented for the WebApp backends to e.g. access files on the filesystem

At the end of the implementation a first technical demo is available here. Screencasts will be created and the concepts of Synergy OS can be prooven.

The timeline for Milestone 1 of all projects is due to 20.02.2010. Until this date the technical demo should be online for download by anyone.

The first technical demo will run on top of Ubuntu Linux 10.04 Lucid Lynx.

Thanks & Regards,
Aron

Photo by: Karsten Franke

How Synergy OS runs on top of any Operating System, specially Linux

How Synergy OS runs on top of any Operating System, specially Linux

Design of the first meta Operating System

The major design goal of Synergy OS is to be a highly flexible and customizable suite of software components forming a real Web OS on top of any operating system. For the first step, Synergy OS it will be compatible to some standard Linux distributions.

In Synergy OS, Apps are written in Javascript (EcmaScript) and are executed by the high-performance javascript VM “V8″. V8 comes from Chrome OS. Apps are using the Synergy OS foundation classes to get access to the resources of the real operating system they are executed on. So Apps have no direct dependency to the real OS.

The foundation classes of Synergy OS are well designed and well namespaced. They are grouped in:

  • The “Synergy OS Framework”
  • The “Synergy Web Framework”

Because WebApps in Synergy OS are executed in a locally webbrowser, there is a client side of an App and a server side of an App. It is also possible to write LocalApp’s. These run in the shell and have no webbrowser based client code.

The foundation classes for the Web contain classes for GUI rendering, Video control, Audio control, Network communication and Input event handling in the webbrowser.

The foundation classes for the Core contain classes for controlling system services and devices (hardware management) and all features a cutting edge web framework needs to be amazing. Plans are there to implement all features of Zend Framework and Ruby on Rails.

The architecture in detail

The anatomy of Synergy OS is a component orientated architecture. The foundation classes wrap the functionallities of the components.

The whole foundation classes are defined by an WebIDL specification (see W3C Web IDL for more informations). Web IDL is a language independend interface definiton language. We plan to integrate an extended version of the WebIDL compiler from the ES Operating System into Synergy OS.

The foundation classes of the Core are implemented in Java on basis of OpenJDK. The backend of a WebApp or a LocalApp in general is implemented in Javascript. So how is Javascript calling the Java libraries?

This is simple. We will patch V8 to have direct binding to Java compiled libraries by using the Java Native Interface wrappers (they are also used in SWT (Eclipse), QTJambi etc.).

The classes of the Synergy OS Framework abstract the functionalities of the real operating systems. They will be designed in a component orientated manner.

What about compatibility?

Each Linux distribution has it’s own design decisions in mind. Specially for target devices, performance optimization etc. So for example X.org is used in conjunction with some desktop environment like Gnome or KDE in most of the distributions. How can Synergy OS be compatible to these distributions if Synergy OS comes with it’s own special SynergyView GUI?

The answer is quite easy. We just change the boot process of a target distribution when installing Synergy OS on top of it. This means that after installing Synergy OS on your linux box, the desktop environment of your Xorg configuration will be replaced by starting the SynergyView instead. The SynergyView is also based on X btw. – for Windows SynergyView runs native on the Windows desktop. It even runs on BSD systems.

It is the same for any other overlay. For example the standard shell will be replaced by the Synergy (the EcmaScript shell) which is able to interpret javascript on console etc.

In general, a linux distribution or in the future any other OS is nothing more or less than just a Synergy OS backend target. We customize the install process of Synergy OS for every backend OS and need to write the foundation classes backends for missing components support but thats all. Even the foundation classes (e.g. the Synergy OS Framework) must not be ported. It’s Java.

Does that mean Synergy OS fit’s into different design goals automatically?

Yes. It sounds crazy – but this an effect of Synergy OS’s meta design. If you want Synergy OS to run perfectly on your Mobile Phone or Netbook, you can just install Synergy OS on a linux distribution customized for mobile (For sure there need to be a Synergy OS backend for this OS/distro). Normally it just overlays the GUI, the standard UI, some things in the boot process etc. to be able to run all Synergy OS apps smoothly.

Synergy OS does for example not touch the Xorg configuration. So special settings for mobile distributions would not be affected and the SynergyView just applies to the special requirements of that mobile distribution. Same for power magement, audio, hardware accelleration etc.

From an application developers point of view this means

As an application developer you can write one application that runs on any operating system supported as a backend of Synergy OS. The number of supported OS’s will grow fast because there is more or less nothing to do to port Synergy OS to different distributions or even to BSD.

For an application developer there is also no magic in writing cool new applications for Synergy OS. There are two types of Apps that can be written for Synergy OS in general:

  • LocalApps
  • WebApps

A LocalApp runs locally without any SynergyView (Web GUI). It can be implemented in Javascript or Java. But you will choose Javascript normally. It has full access to the Synergy OS Framework. Console programs, system services and other scripts etc. should be implemented as LocalApp.

A WebApp is a zipped application bundle that is splitted into it’s frontend and backend part. There is code which needs to be executed in the SynergyView environment and code that needs to be executed in the webserver backend. So a WebApp bunde contains “frontend”, “backend” and “resources” directories. It is packed as zip file just for easier singning, installing and deployment reasons. A WebApp can only be written in Javascript (maybe we write some kind of cross-compiler like GWT in the future). The backend of a WebApp can be written in Java too but this is not recommended.

So if you have some experience in web application development or just in scripting ActionScript, Javascript, JScript or one of the hundreds of other EcmaScript based languages there is more or less no learn for you. You can directly start wirting amazing Apps for Synergy OS.

The future goal

Synergy OS must not be regressed to support Linux as backend OS. Why not implementing Synergy OS foundation classes and component backends for BSD, Windows and Mac?

The Synergy OS Framework is written in Java, the EcmaScript VM is V8 and already ported to any modern OS. So there is not much todo to port Synergy OS to any other modern real operating system.

Introduction to Synergy OS: The first meta Operating System

Introduction to Synergy OS: The first meta Operating System

The Synergy OS aims to combine the best of any Operating System (specially Linux), Chrome OS and ES Operating System.

The goal is to design a rock-solid, fast, secure, customizable and portable meta Operating System that is a full Web OS (all user applications are local or remote web application bundles).

Some buzz-statements:

  • Web OS doesn’t mean you need an active internet connection. By default WebApps are running locally
  • Synergy OS will run an any device automatically that runs a Synergy-compatible operating system
  • Apps don’t need to be ported at all between operating systems
  • All installed Apps on a Synergy OS driven device can be executed on any other device through a web browser
  • So you can work with your desktop runnig at home at any time and any place in the world it you have a broadband internet connection

And many many more features available. It redefines operating systems and desktop computing at all.

The detailed plannings of Synergy OS will be published here for public community discussion.

Please join the development community and discuss about the ideas of Synergy OS!

Regards,
Aron

Photo by: Gargaj