Wednesday, April 30, 2008

[Misc] Strong Opinions on Freedom

Today I listened to the IT Conversations Podcast: "Eben Moglen on Licensing in the Web 2.0 Era". I must say, that this talk made me thinking. It for sure left me with mixed emotions. Eben was discussing with Tim O'Reilly and I definitly disliked the fact, that he attacked O'Reilly on a quite personal and in my opinion unprofessional level.

Still, there is a point he makes. Eben Moglen is a professor of law at Columbia law school and founder of the Software Freedom Law Center (and working with Richard Stallman). He was recently busy with the GPLv3, and this was part of the discussion. The main point Eben again and again raised was however, that we wasted at least 10 years in discussing "Open Source" and not about discussing freedom. We should talk about patent laws and other regulations in the first place.

I think that there is something to it. I also tried in discussions and publications to focus less on Open Source, but on conditions that make Open Source the right way to go, as Open Source itself is not the issue. I always felt that e.g. protocols are the more important field of discussion and policy than Software actually is. And here is the point where legal policies could also play an important role for freedom (of choice) and lay a proper foundation for non-monopolistic commerce: If we would e.g. have a proper regulation on Office protocols, like defining that only open specified document formats (like used in Open Office) are allowed in public services, this would lead to a pressure to software vendors and to a proper competition on the market and finally also to a rich Open Source scene. Then we would have the freedom of choice, the freedom to use our data and information in any way we want plus it would have positive effects on the Open Source scene, but not the other way round.

Ok, these are my two cents to the topic. To conclude, I think that Eben is definitly making a valid point, even if he decides to use an aggressiv tone in his speech that is not appropriate in my opinion. Listen and decide for yourself.

Tuesday, April 29, 2008

[Pub] Implementing Enterprise Integration Patterns using Open Source Frameworks

Robert Thullner recently finished his excellent master-thesis with the title "Implementing Enterprise Integration Patterns using Open Source Frameworks". In his thesis he is refering to the EI Patterns described by Hohpe and Woolfe. Robert analyses a set of leading OS frameworks in this domain (Mule, Apache ActiveMQ, Service Mix and Camel) for how they implement patterns and how they support developers in implementing EI scenarios using patterns. (Particularly Camel impressed us from the conceptual level and also the ease of use).

He defines a set of scenarios using specific patterns (the figure above shows one of the scenarios) and are implemented with various (combinations) of technologies to evaluate and demonstrate the capabilities of the specific technology or mix of technologies. Finally he categorises the frameworks and gives hints on implementation best-practices.

I don't want to go into details here, but who is interested in Enterprise Integration Patterns and Open Source frameworks might want to download the full thesis here. The sources of his examples can be downloaded as well.

[Tech] Database Migration

I found an interesting project: migrate4j which was introduced at Javalobby today. The idea behind this tool is to leverage the issues that come up when applications are developed using a relational database and the database schema changes between version. I.e., databases at customers or used by other developers have to be modified to the needs of the new version of the software. Probably you even want to downscale again.

The main page of the project already gives a good insight into the functionality of this tool. The idea is to describe "up" and "down" grading steps in Java classes that can be executed within the build automation cycle. Up and down are relative to the current version of the database. So it should be possible to up- and downgrade the database to the desired level automatically when needed.

Very interesting idea, however, I am wondering, why there are not more tools like that around; everyone developing database-applications is fighting with such issues I suppose. Have I overseen such tools? Recommendations?

Wednesday, April 23, 2008

[Conf] IDC SOA Conference

Today I was invited to hold the keynote speach at IDCs SOA conference in Vienna. I was talking about building agile business processes from "decoupled" services. I discussed three different views on aggregation: 
  • A "formal" top-down approach using Standards like BPEL or SCA; this approach typically is process driven
  • Event-driven architectures, which is a rather bottom-up approach (and a very agile and flexible one!)
  • And finally a data-driven approach using "syndication" features and standards, typically following the REST principles (which reminds me, that I want to write something about REST since an eternity...)
If you are interested in my presentation download it from my website.

Friday, April 18, 2008

[Tech] Tech Brief on Mule 2

For few weeks the new major release of the Open Source ESB Mule was released. On TheServerSide Ross Mason, the founder of Mule and CTO of MuleSource gives some statements about the new version. In this tech brief he points out the following issues:
  • Major API changes and improvements
  • Architecture improvements
  • Transports, transformers, Connectors have consistent look and feel
  • Schema-Based Spring XML configuration
  • A REST pack was released with 2.0 hosted on MuleForge
  • Future support for SCA
My impression about the new version is very positiv. It's much cleaner and the new schema based configuration makes Mule configuration an easy task, not least through the XSD support of my XML editor. There is now much work to do in order to migrate some support modues and extensions available on MuleForge.

Wednesday, April 16, 2008

[Conf] Object Database Conference Review

On 13th and 14th of March Berlin saw the ICOODB 2008 i.e. the First International Conference on Object Databases (some pictures here).

Despite several transportation strikes more then 150 registered users were able to listen to the 25 talks at TFH-Berlin. The conference started with the science day on Thursday the 13th. Some of the first speakers have been:

  • Christof Wittig (CEO db4objects Inc.) with a cool Web 2.0 keynote
  • Mice Card from the OMG about database standardization
  • Prof. Subieta presenting his stack based approach to object databases
There has been a hot discussion after all these talks about future directions of object databases. One main question was if new developments should be user driven or standards driven.

The second day (14th) was the application day with talks from:
  • Robert Greene (Vice President Versant Inc.)
  • Leon Gudzenda (CTO Objectivity)
  • Ralf Westphal with two invited talks about Transacional Memory and AmazonDB
  • Carl Rosenberger
  •  Chris Beams (Spring Source)
and many more ...

So as you can see the program didn't just cover object databases: We had talks about LINQ, JPOX, SQL 2003 and even Oracle contributed a lot interesting stuff!

In the next month we finish the proceedings covering the science papers. Those who are interested can order them (by contacting me).

Furthermore we will put in some interesting slides on the webpages in a few weeks.

To conclude: Due to the great visitor response the ICOODB is likely to be continued 2010 and then subsequently every two years at a different location. We are currently negotiation to provide the best place in the world for ICOODB 2010. So stay tuned!

[Pub] Enterprise Service Bus - Concepts

For our German speaking audience: Markus wrote a very good article about Enterprise Service Bus concepts for jaxenter. This article gives a good introduction on ESB concepts, Integration Patterns, Binding, Transformation... the whole program :-)

It is freely available, so...

Wednesday, April 09, 2008

[Misc] Google App Engine

Today I came in contact with a post writing about the Google App Engine.

"[...]Google App Engine is designed for developers who want to run their entire application stack, soup to nuts, on Google resources.[...]"
Focusing on service oriented architecture, this approach can be interesting, because companies can host their services on google and service consumers have a common way to access these services. By using the google platform developers can do the following:
  • Write code once and deploy
    Developers write the code, and Google App Engine takes care of the rest
  • Absorb spikes in traffic
    Automatic replication and load balancing with Google App Engine
  • Easily integrate with other Google services
    Using built-in components provided by Google
The service is now launching in beta and has a number of limitations. The first 10 000 developers will get a committment for development.
"The service is completely free during the beta period, but there are ceilings on usage. Applications cannot use more than 500 MB of total storage, 200 million megacycles/day CPU time, and 10 GB bandwidth (both ways) per day. We’re told this equates to about 5M pageviews/mo for the typical web app. After the beta period, those ceilings will be removed, but developers will need to pay for any overage. Google has not yet set pricing for the service."
At present applications must be written in Python, because Googles infrastructure is based on it.

Update: Christoph wrote us a comment and refered to the Google App Enging Blog as good resource!

Monday, April 07, 2008

[Event] Sustainability and IT

Today, on Monday 7, we invite to an event at the Austrian Computer Society with the topic "Sustainability and IT", the rest of this posting is in German, so is the event:

Ich möchte alle Mitglieder des Open Source Arbeitskreises der OCG sowie alle anderen Interessenten und Spätentschlossene (!) zu folgender Veranstaltung Einladen:

Heute, am Montag den 7. April (!) 2008, 16:30

Zemanek Saal der Österreichischen Computer Gesellschaft (OCG)

Wollzeile 1-3, 1010 Wien

"Nachhaltigkeit und IT - Eine Neuorientierung"?

Folgende Programmpunkte sind geplant:
  • Alexander Schatten: Einführung zur Veranstaltung, und Idee der Neuorientierung des Arbeitskreises
  • DI Friedrich Schmoll (Umweltbundesamt): "Green IT---Nur ein Marketingschlagwort?"
  • DI Georg Meixner (IBM): "IT-Nachaltigkeit und Kosten"
  • Diskussion mit den Vortragenden
  • Diskussion über zukünftige Aktivitäten und OCG Arbeitskreis-Ausrichtung
Für alle weiteren Vorschläge bin ich natürlich offen, bitte entweder hier diskutieren, oder persönlich per Email an mich. Weitere Details auch im neuen Blog: Forum Nachhaltigkeit.

Thursday, April 03, 2008

[Pub] Open Source ESB Mule

In the current issue of the Java Magazin I published my second article focusing on Enterprise Service Bus. This article illustrates the concepts and basic functionalities of an ESB based on the Open Source ESB Mule. In order to make the illustration more manifest I (supported by Werner Guttmann) implemented a prototyp with Active MQ, JBPM and Mule. A description and a download of the prototyp is available here.

Mule ESB is one of the most used Open Source integration platform in the Java community. This article describes the major components of Mule, such as:
  • Mule Architecture and the programing model of Mule
  • Service Components (alias Universal Message Objects)
  • Endpoints, Routers, Filters
  • Available Transports and how a transport is organised
On March 31, Mulesource announced the major Mule 2.0 release. The new version of Mule comes with a complete new schema-basd configuration style based on Spring 2.x (Enxtensible XML Authoring). Configuration should be easier as before.

As Mule 2.0 uses Spring as default configuration mechanism Mule user can also use Spring cababilities without thoughts, like:
  • Spring AOP
  • Springs transaction management
  • Resource handling of Spring
  • and many other features (DI, ...)
A full list of what is new in Mule 2.0 can be found here. At present many extensions around Mule, available on Muleforge, will be updated to Mule 2.0. After updating the prototyp on Mule 2.0 I will write an extra blog with my impressions about the new version. So for this time, I'll suggest to download the prototyp and see the power of Mule.

Tuesday, April 01, 2008

[Misc] Registry vs. Repository

In present software projects you encounter buzz words, such as SOA, Registry, Repository and many others. Today I took some time to look at the differences between Registry and Repository. From understanding I always had some "question marks" about:
  • Are there any differences between them?
  • Sharing concepts?
  • Is there a relationship between a Registry and a Repository?
  • Why is it necessary for a SOA, or does an SOA also work without an Registry?
Many people use these words as synonym, but there are two different worlds as I found in a blog. On this blog I've found a statement:
"[...] webcast on the topic of registries and repositories, the consensus was that registries hold references to things and repositories hold the things. [...]"
Based on this statement we can say, that Service Registries contains Meta Data about the services available in a repository. A Repository can then be used without an registry, but a registry without repository makes less sense, or does it?
"Design-time data typically reflects artifacts such as code -- and thus typical design-time repositories use standards such as CVS (Concurrent Versions System). Runtime repositories typically store messages and provide query, audit, logging and a variety of archiving capabilities."

RepositoryCode versions
Queriable message store

A RDMBS is a good example for a repository at runtime. You can save your data and query this data by using SQL for example or other query languages. A phone book for example can be seen as a registry.

I hope the difference is clear between them. Some hints from other people about the key differences between a Registry and Repository?

[Tech] Enterprise Integration Patterns with Active MQ 5

In december 2007 the Apache ActiveMQ community released version 5.0 of their message broker. A couple of new features have been added to the broker. One very interesting feature that has been implemented is the complete integration of Camel into ActiveMQ.Camel is a subproject of ActiveMQ, developed by the same community which provides an implementation support for enterprise integration patterns. Patterns can be used by either coding them with a specific Java DSL or by using Spring XML configurations. The Camel project website provides a full list of supported patterns and coding examples for them.

Before the release of ActiveMQ 5.0 the following procedure had to be went through when deploying Camel rules:
  1. Start the message broker
  2. Create a CamelContext, either in Java or Spring configuration
  3. Add all required Camel rules to the context
  4. Start the context
But now it is possible to configure all rules directly in ActiveMQ. The configuration file (conf/activemq.xml) contains an element camelContext where one can specify rules in XML or a package which contains all rules written in Java DSL. When using Java DSL all routes have to be put into a jar file which has to be copied into the lib folder of ActiveMQ.
A simple routing configured in XML could look like this:

The Java class for implementing this route looks like this:

In the ActiveMQ configuration this class can be referenced by using the package XML Tag in the Camel configuration. Thus, there are two ways to configure Camel rules directly in the ActiveMQ configuration file.

I think the prefered way should be to use Java DSL for coding all routes as it is more readable than long complex XML statements. Furthermore the usage of Java DSL splits the configuration of the broker and the implementation of patterns apart which leads to a better clearness as the configuration is not blown up with long Camel XML routes. However for very simple rules the XML approach is faster to configure and to deploy than writing a Java class. But as soon as rules are getting more complex the Java approach should be prefered.


The integration of Camel adds routing and mediation capabilites to ActiveMQ which one would usually expect from an enterprise service bus, but not from a message broker. Thus for business cases where only routing and transformation of messages are needed, ActiveMQ can replace an ESB framework like Mule or ServiceMix.

However if orchestration or choreography are required the use of ActiveMQ alone is not enough. Nevertheless the new release of ActiveMQ makes it a good player in the EAI domain because not only messaging- but also capabilities of an ESB are provided.

Article by Robert Thullner, edited by Alexander Schatten