Thursday, July 13, 2006

Opensource BaseCamp alternative

activeCollab an open-source project management and collaboration tool (alpha) aimed fairly squarely at Web 2.0 / Ruby on Rails poster-child 37signals's Basecamp except you download and install this on Apache (it's PHP+MySQL). Interesting. Base Camp's sweet spot seemed (at least to me) to be loosely formed projects teams. We trialled it with teams consisting of our professional services field staff, system integrators and engineers from customer sites. These teams generally don't live long enough to establish lots of procedures, so something like Basecamp, provides them with this basis and more importantly provides us with visibility into and accountability of the various activities of team members.

But it isn't that cheap and we don't need a hell of a lot of functions from it. So does BaseCamp have a future or is something like activeCollab going to be the next Drupal for the informal project management space. Or put another way, since many of the customers of BaseCamp are ably capable of installing a PHP/MySQL application, would have a corporate knee-jerk reaction to in-house all sensitive data, what should be the price point of BaseCamp?

We'll spend those terrrorists out of existence by golly

Shield Bubble to protect airports - about time, it is the 21st Century afterall.

Of course if they went the whole hog and spent the money on making hover-cars, airports wouldn't really be necessary. Plus Gay Byrne would be able to hover, like Darleks do.

Tuesday, July 11, 2006

Good comparison of JSON and XML

XML.com: JSON on the Web, or: The Revenge of SML provides an interesting comparison of JSON and XML and their relationship to YAML (popularised in Ruby on Rails configuration files). JSON seems to obviously be preferable when one of the parties can execute Javascript, read it directly into Javascript runtime, walk it like any javascript object tree - no mucking around with E4X. You can also convert back and forth between JSON and XML, which is nice. It's also clearly useful in loosely-typed situations. Where the information being sent over is structured but not necessarily validated, so nice for tightly coupled applications.

Thursday, July 06, 2006

ApacheCon Europe06

Generally this was a good conference. I only went for one day to see the web services stuff. This track was managed by WS02 (which were one of the conferences sponsors). Most of the talks were a good level. Here's my impressions of the things I attended.

Keynote Wednesday Morning: Open Source 5 years ahead.

ZZZzzzzz... boring. Focused on challenges to open-source. Nothing new. Could have given this talk 5 years ago.

Woden WSDL 2.0 Processor

New API's from the people who brought you WSDL4J (WSDL 1.1). Talk was interesting from the brief overview of WSDL 2.0. WSDL 2.0 is not compatible with WSDL 1.1. - refined semantics, new grammar elements. Going to be a nightmare for everyone involved. I wonder where the push is going to come to upgrade to WSDL 2.0 (sure all the vendors will love it, but will people stubbornly keep writing to WSDL 1.1 (a ala HTML/XHTML split)?

Anyway some nice things about WSDL 2.0:
  • Pluggable type system (ok nice but weeny).
  • Message Exchange Patterns (MEP's) clean-up the interaction patterns between communicating parties, e,g, in-out, robust-in-out (i.e. faults allowed).
  • Operations reference elements directly (no Messages and RPC-literal consigned to an extension element).
  • Slightly less verbose through the use of properties, rather than embedding the extension elements directly.
The Woden API's are familiar enough if you know WSDL4J, but they are a work in progress (read but not write), but they do have semantic validation (which will be a big help).

REST in Peace - Web Services with Axis2

This showed how Axis2 can be used to expose web-services with HTTP GET/POST bindings meaning that you can send POX (Plain Old XML) direct to Axis2 and get it to process it as if it were SOAP (by the trick of wrapping it in a SOAP envelope when it arrives). This isn't that exciting for us (Cape Clear has been able to do this for some time) - but the implementation seems pretty good (you can mix both GET and POST or just use one or the other) and the standard of the talk was high.

I think they said that the default configuration for the server means that any web service deployed is automatically deployed as a REST style service, which seems (a) just a little dangerous from a security/auditing point of view and (b) unless it's adding bindings dynamically to the "?wsdl "- effectively a publicly accessible but undocumented endpoint.

Apache Synapse


I thought this was the best talk of the day. Apache Synapse is a thin layer on top of Axis2. They call it an ESB. I'm not sure I agree, but that's immaterial really: Apache Synapse is kinda cool. It basically can support a number of functions
  • As a Gateway - to allow mediation between protocols (e.g. HTTP-REST in - WS-RM out)
  • As a Router - on the basis of rules - route to different services / act as a proxy.
  • As a Mediator - transform incoming messages
It does this through a simple language which it uses to tell it how to handle messages. The language consists of the following statements on messages. send, drop , log, xform (transform e.g. XSTL), filter, header, valdiate, script (execute a script), switch, mediate (they have pluggable mediators).

One of the nice features it that it uses AXION the object model from Axis2 that can use STaX-based pull-parsing to parse the incoming message - so it can operate quite fast. This combinded with the footprint of the Synapse jar (around 300K) means that you can really see synapse working well within small fast devices or edge / customer-premises devices, basically a fast XML content-based router. There are a lot of problems that this kind of routing is suited to and this seems like a pretty nice solution.

WS-ReliableMessaging with Sandeesha2

This was also a good talk, although pretty poorly attended (I guess people just don't care about WS-RM). Anyway, the Sandeesha2 implementation seems pretty nice, but perhaps for a WS-RM implementation a little too dependent on Axis2 (through the handler declaration - would be nice to see something more abstract that doesn't depend directly on the INFLOW/OUTFLOW pipe definition within AXIS2). We don't use Axis2 in here as part of our product and in the future we may wish to upgrade to support JAX-WS (now I know that IBM has contributed JAX-WS on Axis to Axis2, but I don't actually know what's happening with this contribution). Anyway, we would like have the option of using Sandeesha2, but if it's too intertwined with Axis2, that could present difficulties for us. 

Sandeesha2 also implements Full WS-RM 1.0 and CD3-level WS-RM 1.1. It has been shown to interoperate with both Microsoft's Indigo WS-RM and and BEA's WS-RM.

They have implemented two storage mechanisms: inMemory (ok useful for testing) and one implemented on hibernate/Derby. To date there hasn't been any load testing and I would suggest that when they do they choose a real database MySQL, Postgres or Oracle for the purposes of load-testing- no one will want to base their persistent store on Derby (certainly commercial companies will want to know it's been tested on a commerically supported database).

Saturday, July 01, 2006

Firespark sues Redhat for Hibernate 3's infringement on ORM/Mapping

This story is going to run and run. It's a frivolous patent against ORM/Mapping technology hibernate 3. Bizarrely this patent was filed in 1997 - which is well after mapping to ORM was introduced. So it's frivolous, but why now? Well obviously because Jboss was bought by Redhat and Redhat has deep pockets. But hibernate isn't the only ORM mapping tool in town. Toplink has been going for longer so  why not attack attack Oracle? Also since hibernate 3 is now mostly an extension to the EJB3 specification, why not attack Sun?