Soa

Eclipse ESE 2010 and STP News

Eclipse ESE 2010 w00t!

Eclipse ESE 2010 starts tomorrow, and I'm going to be there - well, I'll be there from Wednesday to Friday. I'm delighted, because I had written it off this year, having had to dramatically scale down my Eclipse community involvement. But with the help of Herr Program Chair Bernd, and cheap Eurozone flights, I'll be helping whip the room into shape in the Build Systems Exposed: Strengths & Weaknesses of Build Technologies at Eclipse panel discussion. Present will be the usual suspects, Henrik "Buck" Lindberg, Jason "Tycho" van Zyl and Nick "Athena" Boldt. Unfortunately, the fourth stooge, Dave "Agile" Carver, is being held incommunicado by his cats and can't make it. The point of the session is to help you, the attendee Eclipse developer, to get your brain-gear about how to make your projects build, get tested and get packaged. Questions are very important in this regard. Bring 'em.

For myself, I'm too long in the tooth and cynical to insist that there is one true path here, that one of the approaches is the best in all cases. I've been in Enterprise Software for the last 17 years, you see. In any case you have to do your own research as to what will work for you - I want you to consider this as school homework. No-one is going to do your assignment for you, because every project is different, and frankly, you need to learn how this stuff works or else you will be doomed next time around. Put it into the schedule.

Maybe that came across a little cranky. I've been on both sides of the issue and neither is comfortable, but I think you do have to learn it yourself for the knowledge to stick, so you can maintain it. However, that doesn't mean I think everyone needs to start from scratch - there's a base level of mechanics that can be given as an exemplar from which people can extrapolate. Lots of examples exist for this particular sphere of issues, so what I would really like to see would be The Eclipse Ultimate Guide To Building Eclipse By Example, which would take N types of Eclipse project and for each one show the M different ways to build it. A way to kick off would be to take Wayne's article on building Woolsey with Tycho and do a similar one on building Woolsey with Buckminster (or Athena).

In any case, looking forward to getting there and reminding myself how good German beer can be!

Eclipse STP News

The Eclipse SOA top-level project is now up and running pretty much completely, and with that the merge of the Swordfish and the projects contained by the Eclipse STP top-level project is complete. More than complete, in fact, with the addition of the eBPM, eBAM and Java Workflow Tooling projects, there's a comprehensive and diverse range of solutions available. Now, there is merely tidying up to do, and the remaining strands of connective tissue (build, web, etc) that kept those projects in place in STP needs to be removed. With this message to the STP and SOA PMCs I've initiated that process. Congrats to all projects on their move to Eclipse SOA and best of luck to the combined Tools + Runtime top-level project!

WSDL Revisited

Waay back in May last year, I wrote a little blog entry taking WSDL and associated tools to task. You can imagine my delight when my esteemed colleague Guillaume Nodet sent me a link to a Google Code project called Relax-WS.

The author states

WSDL is a key technology for SOA, and yet creating and editing these files is about as much fun as straightening all the noodles in a bowl of spaghetti with a pair of tweezers.

and goes on to promise

Relax-WS aims to provide a simple, programmer-friendly syntax, without losing any of the metadata

all good, right and true, in my opinion. I would go even further on the last quote there and say that Relax-WS should aim to provide the simple, programmer-friendly syntax, but should also lose any metadata that is not necessary and add metadata where it is missing from WSDL.

One comment I have on the Relax-WS approach is a reaction to the sample code that is on the front page

service Hello {
  port {
    operation SayHello {
      in {
        element name {xsd:string}
      }
      out {
        element message {xsd:string}
      }
    }
  }
}

What's wrong with this, you might ask? It's clear and concise. Indeed it is, say I, and there is nothing at all wrong here, but the bit that makes me somewhat uncomfortable is the use of the service term there. Once you start to mention services, you are looking at a crossover from definition of schema and operation to a service provider definition, which necessarily leads on to having concrete pseudo-physical resource details in the Relax-WS file. What's a pseudo-physical resource? It's an artifact that has a constraints on a machine - so things like ports, databases, file systems, etc fall under this category. If you nail down your pseudo-physical resources at development time, then you are in for a reduced amount of fun when it comes to deployment. Ideally, you bind all those pp-resource details at the last minute (delay your decisions -- a lean maxim), so when you are developing you should set up the capability to discover those details at start up time from a fixed place, rather than baking them in.

A good example would be coding a Spring application for the ServiceMix 4 kernel, burning in the configuration into the bundle, and then binding it to a little properties file that contains the pp-resource specifics for the particular [virtual] machine upon which it is to be hosted.

Anyway - fair play to the author of Relax-WS for taking this on. I'm sure there will be take-up of the project.

Off to Eclipse Summit Europe

I'm waiting for my flight to Frankfurt to attend the Eclipse Summit Europe that is being held in sunny Ludwigsburg, in Germany. Due to a typical pebkac error, I'll be staying in 3 hotels over the 5 days that I will be there :)

The Euro Summit is an interesting conference - the content is usually good, the venues conducive to meeting people and of course the German beer is without peer. This adds up to a fun-filled few days. During the conference, Adrian from STP will be updating us on what's new and noteworthy on the project, and of course bringing us up to date on the old material too. One of the evenings will contain an STP BoF, although the date has to be confirmed.

TSS Java Symposium Barcelona

&

I got a chance to attend, and speak</a;, at The ServerSide Java Symposium in Barcelona at the end of June. The talk I gave was about how Enterprise Software can be delivered using Open Source as the basis for satisfying some of the most common Enterprise Software requirements. I wasn’t talking about business logic here – I was talking about the nonbiosphere that surrounds a piece of Enterprise software, including process automation support, addressing chargeback in a transparent manner, managing middleware heterogeneity. I also guaranteed the listeners that I wouldn’t use any buzzwords :)

You can download the slides and notes and check it out. From the top of the room, I observed the reaction: a healthy mix of boredom, horror, torpor, confusion, outrage, interest, catatonia and crackberry tapping. After the talk, I did get some compliments and interesting questions. No pitchforks and torches, so that was good.

On the subject of pitchforks and torches, I was lucky enough to be invited to sit on a SOA Industry Leaders Panel with Martin Fowler and Gregor Hohpe. It was an interesting thing to site between those two guys, whose books and articles I’ve avidly consumed in the past. Mainly I worried about looking like a total idiot. According to Jay at DeCare Systems, I did ok - if you read that entry, you’ll see the torches reference I made earlier.The whole thing was filmed, so perhaps we will get to see it online sometime. The panel moderator, the inimitable Ted Neward, gets my vote for best panel mod evah, coaxing some excellent tough questions from what turned out to be a good audience. It was with a mental sigh of relief from me that Gregor got in first on the inevitable What is a Service, anyway?.

Update - check out Ade’s experiences at TSSJS

Eclipse Europa has Shipped

Well, it shipped nearly a couple of weeks now, and I've been taking a bit of breather and getting back in touch with some other things that get left by-the-by as we went through the release process. Bjorn and the legal team deserve great praise for their mammoth efforts in getting everything lined up for those of us who delivered projects.

From the perspective of SOA Tools, it's a time to gather our wits and make some plans, with the help of the community. I'm glad to say that over the last few months, there has been a considerable amount of interest in the project from a number of organizations that wish to contribute code and expertise. The PMC's challenge is how to make sure that all these prospective committers can work together in a way that is conducive to developing the best open source tools and frameworks.

Enter the Incubator. This is to be an STP sub-project (it's in pre-proposal phase right now), which I hope will address our challenge. It works like this -- a number of organizations decide they would like to contribute some code, but in each case, they have code that does the same or similar things. The best thing for the project is that the committers come together, bring their solutions to the table, re-architecting if necessary, and producing a joint vision for the merged code. The 'table' in that metaphor is the Incubator sub-project. Once the technical vision has been constructed and agreed upon, and a draft plan put in place, any work that has taken place in the Incubator is ready to 'graduate', that is, move to full STP sub-project status.

It's also time to let us know what you would like to see happening in the current areas of the project - let us know on the dev list or the newsgroup!

Service Pattern Approach to SOA

I just read Beth Gold-Bernstein's blog entry entitled Categorizing Web Services in which she proposes the development of Service Patterns to provide a recipe-style approach to SOA development. I would certainly recommend to her that she visit the Enterprise Integration Patterns, get the book and read it cover to cover. There's enough patterns in there to be going on with - the book is quite information-dense, but if you go to the website there is a breakout of each of the patterns.

Beth also states that these patterns should be embodied in tModels for storage in UDDI registry. I can only attribute the continued existence of UDDI to some kind of dancing bear syndrome - while I don't agree with everything that Peter Lacey says in his criticism of web services, I think he is spot on with the UDDI comments. Rather than continuing to lipstick this pig, I think that it's time the industry looked at a SOA-coherent and standardized repository API. Not something that is infinitely flexible or can be repurposed to anything (an ex-colleague of mine used the public UDDI servers to store his bookmarks), but something that has Services, Intermediaries, Policies and the like as first-class items and allows them to be tagged, typed and corralled into workflows. Then the patterns would make more sense.

Welcome to 2007

What a start to a new year - finding ones phyzz adorning the front page of The Server Side! Steve and myself did a piece before the holiday where we spoke about the company we work for and some of our favourite topics. link

Now I know what the phrase you have a great face for radio really means.

Celtix Enterprise

IONA, the company I work for, has just released an Open Source bundle called Celtix Enterprise. It's a collection of Open Source elements geared towards helping you create your distributed SOA infrastructure -- we've integrated and tested these.

So where's the return? IONA is doing the for-pay training, consultancy and support for this product. Check it out and let me know what you think.

celtix_ent_components.jpg

Release the Hounds!

Or, in this case, the incubating projects. Apache Yoko incubator has published an M1 release. Yoko (no, I don't know why it's called that) is a fast Java CORBA server which can be used in Open Source JVM and JEE implementations. Hot on it's heels, it looks like the Apache CXF (yes, I know why it is called that - don't ask) is gearing up to an imminent 2.0-M1 release. CXF should be very interesting to people who are doing JAX-WS service development - I have been using it myself in another project and it has worked very well.

Back in the SOA Tools Platform project we're adding UI support for JAX-WS service development and we are testing against CXF to make sure that we are generating the correct classes and dealing with the JAX-WS and other annotations in the right way.

WSDL to *

It's expected that once you have an interface language, like WSDL or CORBA IDL, that you will have a suite of tools that allows you to generate stubs, skeletons, starting code, tests and so forth from the basic interface description in the implementation language of your choice. This is a very important productivity element for any developer, as having to code up server skeletons by hand is just an outrageously dull task.

When I was putting together CORBA systems, I used a tool called idlgen which saved huge amounts of time by generating complete test suites with randomized data, and allowed you to produce stubs, skeletons and mainline code in a jiffy. In my current work, I'm using EMF to represent a suite of models, from which I generate implementation code.

But there's one thing that's starting to bug me about some code generation tools, and here I'm talking about one particular tool that is almost always called wsdl2java, and that is there are so many of them. Everyone! Stop writing new wsdl2java tools and just write a wsdl2star tool instead! Take wsdl4j or Woden as your model and write some backend processing that allows people to develop Velocity templates, or write JavaScript/E4X code to generate the necessary. Wrap all of this up in a single Open Source project and kick-off a community of Open Source script/template developers so that other projects can contribute their code generation incantations (there's your regression test suite too, by the way).

Is there someone doing this already? Let me know if you find them!

Eclipse Summit Europe

Barely has my backside hit the office seat when I am off on a plane again, this time to the Eclipse Summit Europe.

Everytime I come to an Eclipse event I find out some new stuff. Here's one example: in STP, we've been doing some work on developer support for JAX-WS, code-first web service development. Here we've put together an annotations view, which allows the developer to edit the parameters of an annotation with support for validation of the annotation content, hints for enums, that type of thing. At the Summit, I attended a presentation by one of the guys from the Dali project</a, which is all about the definition and editing of Object-Relational (O/R) mappings for EJB 3.0 Java Persistence API (JPA) Entities. Of course, JPA uses Java5 annotations to implement its POJO persistence, so it makes sense that Dali have invested time in creating a Java annotation view, similar to what we've done in STP. The next job is to see how well the two approaches can be merged.

I was going to include the STP bugzilla link here, but bugs.eclipse.org appears to be suffering some database overload at the moment -- I'll update the posting later.

EclipseWorld 2006 - SOA Tools

soatools.png I’m in Logan Airport, on my way back to Dublin after a hectic few days in Cambridge at the EclipseWorld 2006 conference. I went over there with a job to do: as the the PMC Lead for the SOA Tools Platform (STP) project, I had a talk to give, updating the attendees with the status of the project. I think it went over pretty well - our presentation (pdf link) was chock-full of details of the STP sub-projects and included a number of demos of the code contributions.
After the presentation we had some great questions and I’ll be frank and say for some of them I didn’t have really good answers - especially on how the SOA tools project is going to enable and support security aspects of many runtimes and services programming models. I got lucky though when a guy from the Australian Bureau of Statistics volunteered to help us out with putting together our vision around security. Wayne, I thank you most sincerely and look forward to working with you. I’ve subscribed you to the stp-dev mailing list too :-)