Microsoft’s innovation is leading to confusion.

Metro style applications. This is what Microsoft is trying to get people excited about these days. When I say people, I mean the technical bunch and related demographics and companies. The end users are always after something that works and preferably looks pretty (which has made Apple a tech giant)

Microsoft is actually quite good at learning from its mistakes and adopting. Windows 7 is much better than Vista, and .NET platform is in many ways better than its predecessor: COM, COM+ and all that. However, MS is again getting ready to do the big jump: .NET style application development is rumored to be going away for Metro applications, and Silverlight, which was supposed to be the killer front end for web applications, is going to go to that nice place where all the left and right shifted bits go.

I can remember the same thing happening around 2000, when MS announced .NET. Visual basic and Visual C++ users were quite upset. I mean people who are concerned about their investment, their profits, their business. The 20+ year developer is almost always going to be excited about something new, but that is because they are rarely sitting in the seats which require the occupant of the seat to be concerned about money matters. To them, every new technology is an opportunity to do something cool, which was absolutely not possible with what they had before.

MS usually throws a huge PR budget at its product and technology launches, and switch usually happens. But sometimes it does not. Many corporate IT departments simply skipped Vista, and that was probably a heavy blow to MS’s budget and shares. .NET did the same to established software houses, with products and large scale deployments. It was quite painful for them to consider a switch to .NET, and believe it or not, some of them are just about the complete their switch after almost 10 years. In the last decade, .NET saw some significant jumps of its own, with new versions of frameworks and runtimes, and development tools.

In the context of .NET, firms have managed to keep up with this, but the dissemination of new features is always slower. When you have a working database access layer, you don’t have a lot of motivation to re-write it with a cool new thing you’ve just heard of (like Linq, though it is not new anymore).

MS does not really care about backward compatibility when it comes to announcing new technologies, or updates to existing ones. Java platform still has some missing features, just for the sake of preserving backward compatibility, and even if it makes most Java developers dinosaurs  in the eyes of the excited 20+s mentioned above, it helps a lot in terms of accessing new frameworks of the platform without any major shocks.

MS on the other hand expects you to handle any shock, since the new framework is so much better, that it is worth doing the transition. Really? Some major open source projects does not even compile with Visual Studio.NET 2010. Lots of software houses did not go beyond vs.net 2008, simply because the cost of setting everything up again, configuring the whole development process for new tools etc was too much, with little benefits to offer.

You can’t move your money making business to a new language, to a new set of tools,  to a new development and testing process easily. This is hard, this is expensive, and yet MS is expecting everyone to do that, and with Metro, they are doing it again. Meanwhile, the Java platform, though aging, is still managing to develop new paradigms and frameworks, without asking for major shifts in the underlying infrastructure.

Making money from software is not as easy as everybody wants you to believe. It takes time, it takes maturity. If you keep disrupting that process of maturity, your market will consist of fast burning stars, which will not easily establish a profitable business.

So MS is going to push firms again to make another jump to a new way of creating wonders on its platforms. Will it take off? Who knows. What MS needs to see is, what happened with Vista can happen with their development technologies, and that would harm the whole platform then, since all the cool stuff is going to happen somewhere else. (Think about Flipboard on iPad)

Sure, MS has lots of money and market share to handle these kind of failures, but till when? I think a better balanced technology development and release is required for Microsoft, or they’ll loose a lot of blood.

Wow: Google makes Window Builder Pro open source!

A while ago, Google acquired Instantiations, the makers of the fantastic UI development plugin for Eclipse. The plugin named Windows Builder Pro, allows you to develop user interfaces for your java and gwt projects, along with xwt support.

Google first made the tools available for free, then today I’ve received an e-mail that says that it will be open sourced in 2011. For a quite long time, the lack of a free (as in beer) UI designer in Eclipse was a big issue. The only serious option was the Matisse port under MyEclipse, but MyEclipse made me hate their distribution so much, I have simply given up on that option.

Now we do not only have access to a free UI plugin, but we can also take a look at the code. Personally, I’ve always been curious about how Instantiations made that great plugin tick, and finally I’ll be able to take a peek.

Thanks Google, this one is really appreciated.

What is happening to Java, and why do you need to know?

Well, this last month has not been the best of all times for the Java community.  Oracle, which has acquired Sun Microsystems a while ago finally began to work on its new and most important asset: Java.

Oracle, in many ways is very similar to Apple. They have a working strategy for their products, and they hold on to it. Whether or not you like it, they are good at making it work, and they make lots of money. Without a doubt, their product is good. Both Apple and Oracle provide solutions which are leaders in their domain. You’ll always find others claiming to do better, but you’ll rarely see them defeated in their main line of business.

My view of Oracle has always been that they are an enterprise computing vendor. They operate at large scale, and you do not see them trying to address the small vendor or user. Sure, they’ve done a lot to provide solutions to smaller vendors and consumers, but most of the time, they  are not the first name that pops into your mind if you are looking for a small, and especially low cost solution.

I’ve got no intention of bashing Oracle here, after all it is their business model, and if I were to work for Oracle as a CEO (yeah, I can see that happening any day..) I would not have strong arguments for moving away from their current strategy.

However, now that Java is apparently being integrated into their existing strategy,  everybody who has invested into this technology, or anyone who is planning to invest in it need to see the ongoing process very clearly. Oracle has recently made its intention about charging for Java Virtual Machine public. They’ve announced that there will be a pro/enterprise/whatever_you_call_it version of Java, with extra features. Those extra features are likely to be related to Oracle products, namely Oracle database servers, and some other Oracle middleware. Needless to say, if you’re not interested in Oracle’s offerings, you won’t care about these features. Oracle will surely do its best to make this JVM as stable as possible, so even if you’re not interested in other features, you’d still like to run your applications on the best JVM out there.

For that, you’ll have to pay Oracle. This is a huge, huge, change in the way things have been so far. You could download a rock solid operating systems, you could download the very same Java Virtual Machine that everybody else is using, and enjoy the same mature technology with everyone else, without paying a single dime. You could have stability, maturity, and scalability, and you would not hate to pay a dime. When Oracle begins charging for JVM, this will not be possible anymore.

If you do not want to pay, you’ll have to use Open JDK, an open source version of the Java Virtual Machine, which was released by Sun Microsystems, after  Sun promised to make Java open source.

At the moment, the most significant announcement regarding this free option came from IBM. IBM announced that they’ll be focusing on Open JDK. It makes a lot of sense, since IBM has a very large investment in Java. They have  lots of enterprise products using Java, and they have the huge Eclipse ecosystem, which is completely built on top of Java.

Oracle has already announced IBM’s commitment into Open JDK as loud as they can, since they want to ensure a very large community that Java is not going to be a completely proprietary product. There is a huge ecosystem around Java. It has been the number 1 language in academia both for teaching and research purposes, and there are lots of open source frameworks, and many companies who use these frameworks to develop commercial solutions. Java has been a big choice for cloud too, with both cloud infrastructure and cloud APIs offered in Java. Naturally, beginning to charge for something which has powered a huge software base for free for ages would not be an insignificant move. Oracle knows this, so they are pointing towards a free option backed by IBM and Google, and possibly others.

IBM has always managed to use open source in a way that would allow them to make money out of it. They’ve always had a great relationship with Apache Software Foundation for example, where they’ve provided resources for some key projects, and used the resulting code in their commercial products. They’ve chosen a model that works better for the  parties who do not want to pay for Java licences. However, in supporting Open JDK, they are actually ending a long term relationship with Apache Foundation around Harmony. Harmony is the open source JVM developed by Apache Software Foundation, into which IBM has put resources in the past, and if I’m not mistaken, they’ve used the results in their products and/or solutions. Oracle however simply did not let Harmony get branded as a Java standards compatible JVM. They simply did not let the process go forward, with no explanation, at least I did not come across one.

So IBM announced it will play along with Oracle and focus on Open JDK. By doing that, in a way they choose to have greater control over the open Java Virtual Machine space, since investing in Harmony would mean an obligation to listen when Apache Software Foundation talks. Or this is the way I interpret their move. Oracle ended up happy, since they managed to point towards a free option with backing from names like IBM and Google, and IBM and possibly Google ended up happy, since they’ll still have an open codebase which they can use in their own business models, in the way they’ve done so far.

Again, I can not blame IBM for their choice, but this does not mean I’m happy about it either. The problem is, Open JDK, even if it has the same codebase with the actual Sun Microsystems JVM, has not been a major choice for Java projects in the past. We all used the Sun JVM all the time, because it was being used and therefore tested by a very large community.  I can’t see the same kind of maturity in Open JDK, and even if IBM backs it up, I will have serious doubts about its scalability, reliability etc.

Inevitably, this will lead to issues in the Java space in the near future. Until Open JDK reaches a certain maturity, investing in Java will mean that someone will have to pay money at one point, if the application makes it to enterprise scale.

This does not work too well for the things I’ve been doing. I simply had the option of putting together a set of components which would go all the way up to cloud level scalability, without paying anything at all for software licences. When this situation changes, people like me, trying to do serious work with Java, will not feel as safe as they used to feel with their choice of technology. For tooling and non-enterprise uses, Open JDK can easily be an option, but if you want me to run Hadoop (a cloud storage and processing engine in Java), I’d rather run it on Sun JVM, at least for some time from now on.

The only assurance I can see for the Java community who’d like to have the same advantages we have now, is that Java is now too big to kill. There are a lot of opportunities around the open source JVMs, that at one point one large vendor or another would step up and support it to create, sustain and grow the open source model that has been very successful for many cases in the past.

Oracle’s control over is going to be an issue though. If they repeat the same thing they’ve done with Apache Software  Foundation’s Harmony project, we’ll either have to use non certified Java Virtual Machines, or we’ll have to live by the choices Oracle approves. Due to its size, Java still has enough gravity to keep us around it, but we’ll have some muddy times ahead.

Web based tooling for openEHR


The web is swallowing everything in the software world. Everything from accounting applications to clinical apps are turning into web applications. The trend is there, and it is so strong, that betting on emergence of a web based application for pretty much anything is possible now.

You think that there are many things for which you can say “that’d never be a web app”? Think again. Sure, it is taking some time, but the trend is very strong.

The reason behind this is one of the most costly aspects of software life cycle:  deployment & maintenance. Maintenance usually includes repeated deployments, so I’ve joined these phases.  If you develop any product, you’ll see that issues around deployment and maintenance is taking a huge amount of your time, and therefore costing you a lot. The cost is so great, that pushing applications to web, even with considerable limitations is paying off for the vendors.

In doing this, vendors are aiming for even lower costs by investing into certain web technologies, since the web based application domain is much more fragmented than a first comer would expect. For many solutions javascript + HTML is enough. It is a good combination, especially if you’re interested in the mobile extensions. Personally, I think javascript + HTML is introducing a significant cost into software development for the web. Due to nature of the development process with these technologies, you will have a higher alternative cost in many cases, usually without noticing it. There is hope for this combination though, but I’d give it at least 3 years before we can carry the mature practices of other technologies into this space. This is a big topic, so I won’t go into it in depth here.

Now an interesting question is: what would happen if we move some key tooling in EHR domain into web. I’m talking about modelling tools like archetype & template designers & editors, and more. Personally I think this is a good idea. The problem (at least for me) is: I have some evil plans for very capable user interfaces for next generation of these tools, and I want to use proper tooling platforms for creating them.

My tooling platform is Eclipse, everyone who has worked with me longer than a week knows that. Eclipse is great, but in terms of UI technology, its various limitations worry me. Yes, people have build lots of complex tools with Eclipse, but I still want more power for UI layer, and I still want to keep the framework’s good bits.  On top of all of that, I want to extend my tooling to the web. Now this is pushing the limits of technology we have. I can always develop solutions to problems I encounter on the way, but it is too expensive to do so! I’d rather see these concerns incorporated into my framework of choice.

Eclipse  people have been following trends, and they have been hearing about this kind of issues for quite some time now. So the next generation of the framework, E4, is going to be a huge jump forward in terms of its architecture. The whole tooling concept matured in Eclipse is going to move forward with web rendering support. This means running the tooling framework in the browser. Needless to say, this will be a big, big step forward. Eclipse is targeting Flash runtime as its web front end. And silently, this is proving all my points about the limits of HTML, even with HTML 5.  I’ve not had the time to look into documents in depth, but I guess it won’t be hard for others to plug silverlight rendering engines, or even HTML 5 rendering to E4 architecture, in the future.

For the moment, Flash is certainly the right choice. First of all, Flash player 9, has a huge installation base. The current player version is 10, but version 9, released in 2006, has managed to find its way into almost all desktop computers, even the ones in slow changing corporate & enterprise setups.

I can’t emphasize the importance of this enough. You’ll find alternatives like Silverlight and JavaJX out there, but JavaFX requires Java runtime 6.13 or later (or something like that) and Silverlight requires its own plugin installed. I also don’t see Silverlight taking off in  non-MS platforms (another long discussion I’d like to avoid for now) Flash is simply out there (imagine X-Files  intro playing  at the background)

Now if you put together all the things I want for openEHR tooling: Eclipse + Nice & capable UI + Web enablement + easy deployment (drums rolling…)

The answer is Eclipse + Flash integration with current technology (possible) and migration to E4 in two-three years or so.  I’ve also been looking into other technologies to support Eclipse’s UI layer, namely the QT framework, but that locks me into desktop space.

I have a feeling that an early entry into web based tooling will become a huge advantage in 5 years or so. If I invest into desktop technologies too heavily now, I’ll probably get stuck in it. The fact that everyone learns after their first 10 years in software business is: products & business models get stuck into whatever founding technology & architecture they are build on. It is incredibly hard to re-write products, or jump into other domains like distributed architectures, or web based applications.  So not giving up on power we need, but investing into desktop technologies that has a link to web is the critical strategy. CKM on its own is a success story, but its advantages in terms of collaboration is slightly masking its other benefits around the issues I’ve listed above. CKM does not build models, it only helps keep track of their evolution. Why not move the rest of the clinical tooling into this space? Archetype editor? Even the IHTSDO workbench. We either have the necessary technology now, or it will be there in almost a couple of years.

You see, just because of this vision only, Eclipse is worth investing into. Of course I need to take a better look into docs for E4, because my assumption is, I’ll be able to merge the complex Flash based GUIs in Eclipse I’ll be building soon, into emerging architecture in the future. If that assumption is wrong, I’ll have to reconsider some things, but architecture wise, I can’t see it being very hard.

So, this whole thing is about a trend, where not only end users, but also more technical communities begin to migrate to web. The technology is emerging, and cost argument is valid for everyone. Today, I believe Flash (Flex framework running on top of it) is the right choice for this. In 5 years or so, I expect Adobe to provide tools that’ll simply keep everything same, but render to HTML5 instead of Flash runtime. I’ll be betting on that.

So here I go, and announce my vision for openEHR tooling (heroic, but also emotional strings at the background): an Eclipse based framework, that will become web  enabled  in two years or so. I’ve managed to put together a large amount of work in many technologies to enable this, and very slowly, I’m binding them together. Let’s see how it goes.