Tuesday, 12 February 2008

A New Dawn - OSGi and Flex

I can't say too much about the actual project I've been working on at Arum Systems just now, but what I can say was that we decided to adopt my proposed architecture as it fits the business model we're planning to employ for the product very well.

As a result, we have combined OSGi, Flex and BlazeDS in order to develop a Modular RIA/RS (Rich Internet Application/Rich Server) Framework that we've called Solstice. An official announcment will be made before the end of this month, but I wanted to give a quick overview of what's going on in my head ahead of that announcement.

I had previously tried to achieve the same thing with GWT, but I had two main problems with GWT:
  1. lack of modularity
  2. lack of visuality
Don't get me wrong, it's a pretty funky technology, but by modularity what I mean is, it is impossible to create dynamic modules for a UI that you create with GWT mainly because of the way you have to code it up in Java and then convert it to a JavaScript application at compile time. This leads on to the second problem, which I am sure there is a better word for than "visuality".

Although I'm not a Microsoft technology fan, I have to admit that I have always admired their approach to building UIs. That is, a developer literally builds the UI. Of course, they can add code on clicks and so on, but they know exactly what they are going to get as they are building it because they can see the graphical representation of it at build time, rather than runtime unlike GWT (and even Java) which is only recently starting to see fairly immature graphical builder tools being made available. However, throughout my career I have found Microsoft technology to be quite inaccessible and have never been lucky enough to be in a job where I can get my hands on the tools and have time to play with them at the same time.

All this changed when I joined Arum Systems' RIA team. My background is Java/J2EE of course, and they needed a strong developer with good Java experience and all the other "senior" stuff (aka "hardcore") to round off the team's skillset. Being "hardcore" I set about learning Flex, which was helped a lot by the fact that it is so easy to get your hands on, install and just get going with. I was very excited when I saw the visual nature of the Flex Builder tool, especially that it is part of the Eclipse IDE - I felt right at home from the outset.

I'm the first to admit, I'm no UI expert. Some of the Flash/Flex stuff out there is just amazing, but my focus really is software engineering and product development. I think this is why Eclipse RCP appealed to me - it removes the choices about the UI from the developer which is good and bad for many reasons. Ultimately, RCP and even plugin development appears to be a very niche/elite developer market because the learning curve is so steep and some of the architectural decisions made by the Eclipse team are questionable. Flex on the other hand is very easy to get in to whether you come from a web design background or a Java background. The learning curve is long, but shallow.

So, the business model for our new product calls for a lot of flexibility (no pun intended). We don't plan on mass selling a shrink wrapped product, instead we plan on targetting a selected group of new and existing customers with varying integration needs. One option was simply to "copy and paste" the product for each customer, but this seemed wasteful to me, so instead I drew on my experience of Eclipse plugin development, and more specifically my growing experience with OSGi, in order to propose an architecture that lets us build a product that is 80% complete for all customers, with only 20% left as integration consultancy.

Combining those concepts with Flex allows us to build modular ich internet applications and rich server applications. Combining these two key technologies in to the Solstice framework allows us to:
  • extend our product quickly and easily for multiple customers without having to maintain multiple codebases
  • maximsing profit by enabling re-use
  • reduce time to market and costs for our customers

Solstice will be available by the end of this month as a fully open source framework. Documentation, examples and tutorials will be available and I am hoping to talk about it at Flex360 Europe in April.

No comments: