Tuesday, October 30, 2007

Bringing relational data to the Web

Everyone has data locked away in relational databases and other data sources. There have been several approaches for getting at this data- EJB entity beans being the worst of all the possible approaches probably! All the mess with object-relational mapping and the tens of ORM tools out there have been part of the strategies people have used to bring relational data to the Web.

WSO2's Web Services Application Server, WSAS, now has a feature that allows one to easily map relational data to the Web and back. Basically, what you do is write a parametrized query (or stored procedure call), decide how to get the values for those parameters from the incoming request (from the URI and the body) and then describe how to map the resulting table to XML. There's no bringing the relational data to objects at all- its directly relational to/from XML/URIs. Its actually quite a bit more general than that- we can also go to JSON or other serializations and on the other side, we can handle not only relational data but also Microsoft Excel files, CSV files, JDNI data sources and more. Kyle Gabhart has written a nice article on this technology for xml.com and has a figure I really like:

The details of the data services language we came up with can be found here. We've also sorted out how to make these data services into properly RESTful data resources (details in that document) and will have that working soon as well. (If any REST fan wants to review that bit of the spec and help improve it and/or help implement it please do!)

This is somewhat similar to what Microsoft Project Astoria is doing, but that's a lot grander and grandiose than our approach. Ours is a bottom up, pragmatic approach that targets folks with databases and specific query patterns they'd like to make available on the Web. The result is that someone can now write a mashup that directly touches your relational database and all you had to do was fill in a few forms and write down the query to execute. Basically, if you know a query you want to execute against a database you have, in 10 minutes you'll be view your database contents using the Web browser. Don't believe it? We have customers who've done that with mainframe databases! Try it and see.

And our stuff is ready to use right now and we'll support it for real use.

More information about data services is available in the following articles and blogs witten by Sumedha Rubasinghe, the lead on that work:

You can download WSO2 WSAS v2.1 from here. The source for all of this is available too - everything under Apache License. See the open source project home for WSAS on WSO2 Oxygen Tank.

serial entrepreneurs and silicon valley

Marc Andreesen has written a great blog about what makes serial entrepreneurs tick!

Friday, October 26, 2007

open source business love fest .. not!

Looks like InfoWorld bloggers Dave Rosenberg and Savio Rodrigues and CNet blogger Matt Asay all think that open source companies shouldn't compete with each other but only with the proprietary companies. Dave Rosenberg started this line of thought .. soon after we published some performance data showing how the WSO2 ESB was faster than both Mule and ServiceMix. Just for the record, we did publish results prior to that showing that our ESB was faster than the leading proprietary one too (from the company which is in the news lately) but their license explicitly states "you will not publish performance results of our stuff" .. so we couldn't name them.

So, should open source companies compete against each other? In an ideal world, no. In the real world, they jolly well do. They compete for community, they compete for mindshare, they compete for press coverage and of course they compete for customers. Thinking that they do not, and should not, is totally naiive.

There was a time when there were lots of evil proprietary ones and exactly one open source alternative. Today, everyone's doing open source and its no longer that simple. Can you seriously say that Apache Synapse and Apache ServiceMix are not competing with each other? Or that Apache Axis2 and Apache CXF are not competing with each other? If nothing else, they're competing for the precious community; in both those cases the products are even in the same open source community. What about the big guys' open source products? Should JBossAS not compete with IBM WebSphere CE? Open source is everywhere and is simply an alternative business model for many- to say two open source products shouldn't compete with each other simplifies reality too much.

Dave, Matt & Savio all seem to think that customers only compare the evil proprietary products against one of our products. Hello? Are we on the same planet? Any customer worth their muscle will compare against all available options and take the one that best suits their needs. Why in the world would they restrict themselves to only one open source alternative? That makes no sense whatsoever.

Even if they are restricting to one, let's be real, we all want to be the one don't we? Otherwise how do I become the one to take money away from BEA instead of Dave? While it is indeed great if the fraternity of the open source brotherhood wins against the proprietary ones, its much better (for me) if in fact I win with my product instead of Dave with his. And if Dave doesn't feel that way I'm sure his investors will remind him that that's his job :). I don't think my investors would be happy if in a few years WSO2 has to go under because "open source won, but not us". They don't give a hoot about who wins against you- if you lose you lose. It doesn't matter if its an open source competitor or a proprietary competitor; its simply a competitor.

Now, when we do run into a customer that's only comparing us against a bunch of proprietary alternatives then that's a great situation and we love it. To do that, we need to win the mindshare battle against other open source projects to the point that the customer looks at us as the de facto open source winner in that space. Apache HTTP is in that mode. MySQL is in that mode. JBossAS is in that mode. Mule is in that space to a great extent for the ESB now.

So what is an upstart like us who has an ESB supposed to do? Give up and go home because a project that was the first and only open source ESB for many years has mindshare? Or go out and prove to the world that we have a better product? We have chosen to do the latter.

(I'm not picking on the ESB .. at WSO2 we compete in a bunch of areas, not just in the ESB space .. but ESB is an easy one to use because there are simply so many of them around.)

Does that make me a bad open source citizen? Hogwash. Competition is good for you. If its not us it'll be someone else. If your product can't be the best and if you can't deliver better value around the product (services, documentation, stability, comfort and all that stuff) then you will lose. And you deserve to lose.

Bottom line today is that if you are an open source company competing in a crowded space, then you have to compete with other open source products as well as proprietary ones. Certainly, don't focus on the open source ones only (as Dave and Matt and others are certainly correct that you are then competing for crumbs instead of the sandwich) but don't give in saying "ah you're using someone else's open source product? No problem then, we'll go away."