wso2

Celebrating 5 years of WSO2

While our official birthday is August 4th (pretty much a random date that I chose between the various steps of starting that we went through!), this week we’re going to be celebrating our 5 year anniversary with a bunch of events!

The entire WSO2 family has traveled (or are still traveling) to Sri Lanka – Paul is on his way from Emsworth, UK; Paul’s mom from Glasgow (Paul’s late father was of course one of our seed investors and we’re honored to have his mom be with us for this occasion!); Jonathan from Auburn, CA; Mahesh from Sydney, AU; Rebecca Hurst (our PR person, President of KineticPR) from San Francisco, CA; Pradeep Tagare (Intel Capital) from Mumbai, India and last (but never least!) James Clark from Bangkok, Thailand. We’ll miss one 3rd board member Alok Mohan who unfortunately couldn’t make it!

First up is to announce that we’re just about to cross the 100 employee mark! We have a bunch of new folks starting today .. um, yeah, 25 to be exact :). Yes, that’s a HUGE number of and we’re going to be working hard to get everyone properly integrated and settled in!

Actually when you add the 20 or so people on study leave from us working towards their PhD’s in Computer Science, we’re really about 125 employees .. but with the new group we’ll cross the 100 active members count. That’s a major milestone and its great to have it happen in sync with our 5 year anniversary as the new people get to experience our culture right out of the box.

To accommodate all the new people we’ve been doing some major office refurbishment / redesign in Colombo and have also signed up a 2nd location. That is just down the street from where we are at and we will be ceremonially opening that up later today as well! Its been a marathon effort by Udeshika and her team to get all the changes implemented and while its definitely coming down to the wire it looks like it’ll all be ready :). Awesome power of teamwork!

We’ll post some pictures of our offices soon!

Tomorrow (Tuesday 14th) and Wednesday are of course the dates of our first ever WSO2Con Conference!

We have prepared an excellent program for this and have nearly 300 people signed up to attend! We also ran a promo on WSO2 OxygenTank to give a free trip to attend WSO2Con and I’m thrilled to announce that Adam Firestone from SAIC, USA and Jagannath Nori from Inland Revenue, New Zealand were selected! I think Adam landed a few hours ago and Jagannath should be here soon as well. I look forward to meeting them in person soon!

After the conference on Wednesday night, we have organized an invitation-only Gala Dinner for business leaders, senior government officials, senior academics, and the diplomatic community in Sri Lanka to introduce WSO2 to them. I’m amazed at the strong response we’ve had from the top business leaders in Sri Lanka to our invitation! I look forward to presenting a very different kind of company to them :). We have engaged the best musical talent in Sri Lanka to help set the right environment for this event- Ananda Dabare, the lead-violinist of the Colombo Symphony Orchestra and Bhatia & Santush, the best of the best musical group in Sri Lanka!

After the conference and gala dinner we have invited partners and select others attending WSO2Con to participate in a 2-day technical workshop to give them a deep understanding of our entire platform. We have about 25 people participating in that and will have our new team join as well so they will also get a “bootcamp” session!

Finally, on Friday night comes the real celebration :). We have organized a full scale party for the entire WSO2 team, their friends and family, ex-employees etc. to get together and have fun! That’s going to be a (long) night of good food, drink and great live music and lots of dance!

Of course this celebration is nothing but a simple yet important milestone in our journey! WSO2 is really just begun .. and to use Shakira’s Waka Waka words:

You're on the frontline
Everyone's watching
You know it's serious
We're getting closer
This isn’t over

And to the WSO2 team, my message is:

The pressure is on
You feel it
But you've got it all
Believe it

Looking forward to an amazing, memorable week; followed by the next amazing 5 years!




wso2

Growing the WSO2 business

I wrote a blog on the WSO2 Corporate Blog on growing WSO2. Check it out!




wso2

Are you attending WSO2Con 2011?

WSO2Con 2011 is happening in Sri Lanka at the awesome Waters Edge Conference Center (just outside the capital Colombo) from Monday, September 12th to Friday, September 16th. Have you signed up yet? If not here are a bunch of reasons to do it NOW!

The Program

The overal agenda is a combination of superb keynotes, talks by users about various solutions / case studies, talks by WSO2 folks about various new and up and coming cool things, couple of superb panels and of course some pre- and post-conference tutorials to help get an overview first and then an indepth understanding of various topics. Here's a circular view of the week:



This year we ran an open call for papers and selected nearly 20 external speakers to present their stories from amongst a large number of submissions. The speakers are coming from more than 10 countries (14 if I remember right) from North America, South America, Europe, Asia (including Sri Lanka, of course) and Australia/NZ. With attendees coming from various other countries too this is a truly global event with one hell of a program.



I would be doing a great dis-service if I didn't highlight our keynote speakers. We have 4 outside keynotes from IBM, eBay, Google and Cognizant. Paul and I are doing keynotes too. These folks who are coming in to give the keynotes are highly accomplished individuals who will undoubtedly have superb stuff to say .. listening to them itself will justify the trip!

The Place



Sri Lanka is one of the hottest tourist destinations in the world today. In one small accessible package, Sri Lanka offers everything from awesome beaches to great surf to archeology to history to mountains to hang gliding to hot air ballooning to just plain going native. After having ended a 30-year horrendous war more than 2 years ago, we're now one of the safest places in the world! Interestingly, while most places in the world are increasing their security levels Sri Lanka is massively opening up.

We still of course have ways to go to build up many key infrastructure aspects in the country. In a way the whole country is under construction right now .. but not in the way that you wouldn't have the best time of your life here! Coming now will save you a lot of bucks too .. tourism in Sri Lanka WILL get much more expensive in the next 5 years!

Certainly don't just take my word for it. Instead, how about:
Who am I to argue with places like New York Times and National Geographic telling you to come to Sri Lanka!

The conference hotel we've chosen is Cinnamon Lakeside in Colombo. This is one of the best (5-star, of course) hotels in Colombo and sits next to the Beira Lake in Colombo. In addition to being a great hotel smack in the middle of Colombo, it also houses several superb restaurants. Do not miss Royal Thai.

The conference itself is being held at the very very cool Waters Edge Conference Center, about 10km (6 miles) out of Colombo. Its a very large facility and is in fact part of a golf course and is home to all the high-end events in Colombo. We will have buses organized to shuttle you to/from the hotel to the conference location.

The People

One of the best things about going to a conference is of course the opportunity to hang out with like minded people .. some of who will end up becoming your buddies for the rest of your life. At WSO2Con 2011 you will have the opportunity to interact with people from 20 countries, people who are total geeks, people who are world famous and of course the people from WSO2 who create and develop the products you love.

In order to make sure you get maximum time to interact and engage with each other we are also organizing several evening events. Don't plan to leave as the sessions finish!

The Deal

We want you to come from wherever you are in the world. At the same time, we realize its not easy to get travel approval these days with an unknown budget to travel to an exotic destination ("you want to go to a conference where?").

So, in order to make that process easier we're offering a complete, soup-to-nuts package that covers everything:
  • round-trip (economy class) airfare
  • up to 6 nites hotel accommodation at the conference hotel
  • all ground transportation in Sri Lanka
  • all meals within those 6 nights
  • (oh yeah) a full conference pass including both tutorial days
How much? They are priced based on where you're coming from:
  • Anywhere from South Asia: $1,900
  • Anywhere from Europe, Australia or New Zealand: $2,400
  • Anywhere else in the world (America, Africa, rest of Asia, Arctic region, Antarctica etc.): $2,900
If you've ever paid and attended a 5-day event anywhere in the US you know that you easily spend more than $2,900 for that week all told. This is an incredible value .. even your manager will grok it :). AND you get to spend a week in Sri Lanka as a bonus!

We OF COURSE are hoping lots and lots of folks from Sri Lanka will attend! We don't have airfare included rates for that :) .. you just have to register at the regular rates (and we give a special discount to most LK organizations - government, SLASSCOM members, AMCHAM members, IESL members, etc. etc.).

What are you waiting for? REGISTER NOW and reserve your spot :-).




wso2

WSO2Con 2013 is here!





After months of planning, WSO2Con 2013 is starting today in London. We already ran the tutorials in Sri Lanka last week - today (Tuesday 12th) is tutorials in UK and then the main conference is Wednesday 13th and Thursday 14th.

Yes this is a globally distributed conference! We have nearly 500 registrants (which is at least 50% more than we expected) in the two locations and they are connected via 4 high quality video streams so we have 2-way video interaction. The amount of technical details underneath is incredible - we will blog about that later. We even have one speaker doing his presentation from New York as he was unable to travel .. if everything goes off without a hitch that'll be a technological marvel :-).

We have 4 fantastic external keynote speakers:

Eben Upton, Founder & Trustee of the Raspberry Pi Foundation talking about the hottest little computer in the world. Oh and BTW, if you haven't heard yet, we've been putting together around 40 node R-Pi cluster and that system will be live running WSO2 middleware powering the WSO2Con app. Azeez has been blogging about it.

Brian Behlendorf, Founder of Apache, CollabNet and a long time god of open source (and my friend and also WSO2 Advisor) and currently Senior Advisor for Science and Technology at the World Economic Forum talking about how open source can still save the world.

Pankaj Srivastava, Vice President of the Cisco Industry Solutions Group talking about how they are building next generation cloud and embedded business systems. Guess what stuff they use :-).

 Yefim Natis, VP and Distinguished Analyst at Gartner talking about their view of Platform as a Service. Yefim leads Gartner's analysis on PaaS and has a super clear view of the future.



In addition, Paul and I will be doing keynote talks as well - I will be talking a bit about WSO2, our vision and most importantly how we see the future of enterprise computing. Paul will be talking about how to achieve that vision incrementally via a pragmatic milestone plan.

In addition we have nearly 20 external speakers (selected from over 50 submissions which we got in response to our open call for papers) and another 20 WSO2 speakers covering all aspects of our product platform.

We also have some super cool sponsors for the first time this time. Thank you to our Gold Sponsors Suse and Yenlo and our Silver Sponsors Grid Solut, Wipro and Redpill-Linpro.

The App

Oh yes the conference app .. we have a conference app that lets you do a bunch of stuff including rating talks and chatting to others. This too of course was written our stuff (and PhoneGap) and the back end will run on the Raspberry Pi cluster. Crazy? Yes. But super fun and majorly cool :-). Search for WSO2Con in the Google Play Store or you can use it with a browser here: https://wso2con.com/m/.  You need to have a WSO2 user account to log in - get one at https://wso2.org/user/register. Unfortunately the wonderful people in the Apple App Store haven't yet approved the updated version :-( .. we're keeping our fingers crossed it will happen today at least.

Putting it together

This event, like every previous WSO2Con event and all WSO2 events, is being organized by our internal marketing team. Hasmin (Director of Communications) is the general chair and she lives in Saskatoon, Canada and most of the rest of the team are in Sri Lanka! Harindu is out event God and he doesn't seem to lose hair yet. The "advance team" (of Harindu and Tasha) moved to London about 3 weeks ago and have been operating out of our Portsmouth office putting the final touches together. The rest of the marketing folks operating the UK event started arrived a week ago. There's another team managing the event in Sri Lanka. The Sri Lanka event is at a rather odd time since it starts at 2:00pm and runs until 10:30pm! We were very keen to have a live, bi-directional telecast in Sri Lanka as that's where we are based and that's where we have our team and a large community of supporters, users, and customers.

Coming back to London, overall we have nearly 50 WSO2 folks flying in from all over the world to London! I'd be remiss if I didn't acknowledge the infinite amount of work done by Maryam and our outsourced travel team lead by Zakir .. its not easy to manage all of this while still running the daily operations of the company.

Thank you to all the wonderful team at WSO2 for putting this together! And thank you to everyone participating (whether in London, Colombo or just watching over the Internet) ... we're doing this for you.

I look forward to a fun week :-).




wso2

WSO2 moving to a new building in Sri Lanka

After many many months of painful work, we are finally starting work at our new location in Colombo, Sri Lanka. Here's a picture taken from my cell phone yesterday afternoon:



The most awesome thing is that we will all be in one building again in Sri Lanka! That's after more than 3 years when we started adding new offices .. we had three here until yesterday; today we have one!

We still have quite a bit of work to do to finish everything .. including a nice surprise coming in the front at the street level :-). The cage you see on the roof is our enclosed rooftop basketball court! The rest of the roof is taken up by the gym and the creche - will take another month to be fully ready. I'm waiting for the punching bag.

Today's not our official opening day - that's next Wednesday with Paul Fremantle also present. We are moving in today however and will have a small ceremony (lighting the lamp and kiribath table).

Its taken just over 8 years of incredible hard work by a super team of passionate people to get us here. Thank you to everyone who made it possible - including our customers, investors and of course the killer (past and present) team! 

This is only a small step along the way however ..




wso2

WSO2Con Barcelona 2014 in just one more week!


Time flies when you're having fun .. the conference is now just a week away and the advance team is flying in today. If you've ever been to one of our conferences you know what an awesome event it is - Barcelona is going to notch it up again with a really cool Internet of Things platform for attendees (built with our own products of course - plus soldering irons and acid baths).

Hope to see you there!



Learn more about industry trends, being a Connected Business, the WSO2 story, and much more through our esteemed panel of keynote speakers at WSO2Con EU 2014.
Alan Clark
Director of Industry Initiatives, Emerging Standards and Open Source
SUSE
Chairman of the Board
OpenStack®
Serves as the chairman of the board at OpenStack. Alan has developed a reputation in fostering the creation, growth, awareness, and adoption of open source and open standards across the technology sector. He will explore the evolution of open source cloud platforms in enabling the Connected Business.
James Governor
Principal Analyst and Co-Founder
RedMonk
Leads coverage in the enterprise applications space, assisting with application development, integration middleware, and systems management issues. He also has served as an industry expert for television and radio segments with media such as the BBC. James will examine how open source middleware contributes to the Connected Business.
Luca Martini
Distinguished Engineer
Cisco
Leads the Cisco virtualization strategy in two major areas: mobility and home broadband access. He has been involved in the Internet engineering task force (IETF) for the past 15 years, contributing to many IETF standards. Luca will discuss the role of intelligent orchestration and how it is more than simply a Web services engine.
Paul Fremantle
Co-Founder & CTO
WSO2
Paul co-founded WSO2 in 2005 in order to reinvent the way enterprise middleware is developed, sold, delivered, and supported through an open source model. In his current role as CTO, he spearheads WSO2's overall product strategy.
Sanjiva Weerawarana Ph. D
Founder, Chairman & CEO
WSO2
Sanjiva has been involved with open source for many years and is an active member of the Apache Software Foundation. He was the original creator of Apache SOAP and has been part of Apache Axis, Apache Axis2 and most Apache Web services projects. He founded WSO2 after having spent nearly 8 years in IBM Research, where he was one of the founders of the Web services platform. During that time, he co-authored many Web services specifications including WSDL, BPEL4WS, WS-Addressing, WS-RF and WS-Eventing.
Learn how WSO2 can help you build a Connected Business
 Contact Us




wso2

WSO2 at 10

Today August 4th 2015 is WSO2's unofficial official birthday - we complete 10 years of existence.

I guess its been a while.

Its unofficial because not a whole lot happened on the 4th of August 2005 itself. Starting a global set up like WSO2 had many steps - registering a company in Sri Lanka (in early July 2005 IIRC), registering a company in the US, getting money to the US company, "selling" the LK company to the US company etc. etc.. We officially "launched" the company at OSCON 2005 in Portland, Oregon the first week of August.

However, I gave a talk there on the 4th on Open Source and Developing Countries. The talk abstract refers to the opportunity that open source gives to "fundamentally change the dynamics of the global software industry".

That's what we've been up to for 10 years - taking on the enterprise middleware part of the software industry with open source and Sri Lanka as the major competitive weapons. We can't claim victory yet but we're making progress. Getting into nearly 20 Gartner Magic Quadrants and Forrester Waves as a Visionary is not a bad track record from zero.

This is of course only possible because of the people we have and the way we do things (our culture) that allows people to do what they do best and do it well. To me, as the person at the helm, its been an incredible ride to work with such awesome people and to have such an awesome work environment that births and nurtures cool stuff just as effectively as how well it chews and spits out stupid stuff and BS.

We're now somewhat sizable ... just about crossing 500 full time employees globally on August 1 this year. I am still (and will be for the next 10 years) the last interview for every employee .. no matter what level and no matter what country they're in (yeah that means Skype sometimes). I don't check for ability to do the job - its all about what the person's about, what they want to achieve in their life and how well I think will fit into our culture and approach and value system. I have veto'ed many hires if my gut feeling is that the person is not the right fit for us.

Here's a graph of how the team has grown:


(The X axis is the number of months since August 1, 2005.)

A key to our ability to continue to challenge the world by taking on audacious tasks is the "so what if we fail" mindset that's integral to our culture. Another part is being young and stupid in terms of not knowing how hard some things apparently are. When I started WSO2 I was 38 .. not that young but definitely stupid in my understanding of how hard it is/was to take on the world of IBM/Oracle owned enterprise middleware market and ultimately stupid about the technical complexities of the problems we needed to solve. BUT what has worked for us so far is the "so what if we fail part" being used by young people who are regularly put in the deep end to get stuff done. I am still utterly stupid about how hard certain things are supposed to be - and I love that. Most of us in WSO2 are very stupid that way - but we're not afraid to try nor are we afraid to fail. Shit happens, life goes on (oh yeah and then we all die anyway at some point .. so why not give it a shot). I have little or no respect to the "way things are done" or the "way things work" - we've challenged and re-envisioned almost every part of our business from the way a normal software company works and I'm very proud of my team for having done that over and over and over again. And I'm of course grateful that they still talk to me for all the grief I give them daily on various little to big aspects of every side of the company - from colors to cleanliness to marketing to architecture to pricing to paying taxes.

The amazing thing is after 10 years we've managed to become slightly younger as a company over time! How is that possible? This is the average age of employees of WSO2 over time (same X axis as above):


We apparently had some old farts (like me) hired at the beginning and then again a few more around 3 years in .. but since then the average age has hovered between 30 and 32! Not bad for a 10 year old company where very few people leave ...

To me the actual physical age is not the issue - after all I'm now 48 years old but I don't hesitate to think and act like a 25 year old either mentally or physically (come and play basketball with me and lets see who hurts more at the end). Its all about how you think and act and accept "experience". I view experience and assumption as things to question and assume as false until proven true in our context. That frustrates a lot of senior people but that is exactly what has allowed WSO2 to keep growing and keep challenging the world of middleware and getting to its front. I view any assumption (e.g. "this is the way others do it") as a likely point of failure until proven otherwise. My challenge is to keep WSO2 "young" - in thinking and in age as much as possible (without age discrimination of course). I love this Jeff Bezos quote:
If your customer base is aging with you, then eventually you are going to become obsolete or irrelevant. You need to be constantly figuring out who are your new customers and what are you doing to stay forever young.
Technology will never stop - it maybe SOA, ESB, REST, CEP, Mashups. Cloud, APIs, IoT, Microservices, Docker,  Clojure, NodeJS, whatever ... and more will come. We need to keep on top of every new thing that comes along, be the ones to create a bunch of these and still deliver real stuff that works.

If we as a team continue to challenge every assumption, continue to treat each other with respect but not fear, continue to fight for doing the right long term thing instead of hype-chasing then we will never lose.

WSO2 is nowhere near the goal I set out to do for us - take over the world (of middleware!). But 10 years later, we're now on a solid foundation to build WSO2 into a much stronger position in the next 10 years. Thank you for all the wonderful people who are still in WSO2 and to those that have moved on but did their part, for helping us get there. Its been my honor and privilege to lead this incredible bunch of crazies.




wso2

WSO2 Stratos - Platform-as-a-Service for private and public cloud

Yesterday we announced something I believe is a game-changer: WSO2 Stratos. What is Stratos?

WSO2 Stratos is a complete SOA and developer platform offered as a self-service, multi-tenant, elastic runtime for private and public cloud infrastructures.
What that means is that our complete SOA platform - now enhanced with Tomcat and Webapp support - is available as a  "cloud native" runtime that you can either use on the Web (yes - you can try it out right now), on Amazon VPC, or on your own internal private cloud based on Ubuntu Enterprise Cloud, Eucalyptus and (coming soon) vmWare vSphere. It is a complete Platform-as-a-Service for private and public clouds.

I'll be writing more about Stratos over the coming weeks and months, and I'll also provide links and tweets to other Stratos blogs, but in this blog I want to simply answer three questions:

  1. I'm already talking to {vmWare, Eucalyptus, Ubuntu, Savvis, Joyent} about private cloud - what does WSO2 add that they don't have?
  2. What is the difference between Stratos and the Cloud Images that WSO2 already ships?
  3. Why would I choose WSO2 over the other vendors offering Platform-as-a-Service?
In order to answer the first question, lets look at the cloud computing space, which is most easily divided up into:
  • Infrastructure-as-a-Service (IaaS): this is where Amazon, Eucalyptus, vmWare, Saavis and Joyent play
  • Platform-as-a-Service (PaaS): Google App Engine, vmForce, Tibco Silver and now WSO2 Stratos play in this space.
  • Software-as-a-Service (SaaS): Google Apps, Google Mail, Microsoft Office Live, Salesforce, SugarOnDemand - these and many more make up the SaaS category.
To generalize wildly, most people talking about public cloud today are talking about SaaS. And most people talking about private cloud today are talking about IaaS.

SaaS is fantastic for quick productivity and low cost. WSO2 uses Google Apps, Sugar on Demand and several other SaaS apps. But SaaS doesn't create competitive advantage. Mule also uses Google Apps. They may well use Salesforce. SaaS cannot produce competitive advantage because your competitors get access to exactly the same low-cost services you do. In order to create competitive advantage you need to build as well as buy. For example, we use our Mashup Server together with our Sugar Business Messaging Adapter to provide insight and management of our pipeline that goes beyond what Sugar offers.

IaaS is of course a great basis to build apps. But it's just infrastructure. Yes - you get your VM hosted quicker. But someone has to create a useful VM. And that is where PaaS comes in. PaaS is how to speed up cloud development.

What does Stratos give you on top of an IaaS? It gives you an Application Server, Registry, Identity Server, Portal, ESB, Business Activity Monitor and Mashup Server. And it gives you these as-a-Service: completely self-service, elasticly scalable, and granularly metered and monitored. Someone in your team needs an ESB - they can provision one for themselves instantly. And because it's multi-tenant, it costs nothing to run until it gets used. How do you know how it's used? The metering and monitoring tells you exactly how much each tenant uses.

2. What is the difference between Stratos and the existing WSO2 Cloud Images?

The cloud images we started shipping in December are not Cloud Native. Stratos is Cloud Native. In practice, this means that when you log into Stratos (go on try it now) you can instantly provision your own domain, together with a set of Stratos services. This saves memory - instead of allocating a new VM and minimum half a gigabyte of memory to each new server you get a new ESB with zero extra memory cost. And it's much easier. The new ESB will automatically be governed and monitored. It's automatically elastically clustered.

3. Why would I choose WSO2 over other PaaS vendors?

Firstly, if you look at PaaS as a whole there is a huge divide between Public PaaS and Private PaaS. The public PaaS vendors simply don't offer private options. You can't run force.com or Google App Engine applications internally, even if you want to. WSO2 bridges that gap with a PaaS you can use in the public Web, on a virtual private cloud, or on premises.

The second big differentiator between WSO2 and the existing PaaS offerings is the architecture. Mostly PaaS is a way of building webapps. WSO2 offers a complete enterprise architecture - governance, business process, integration, portal, identity and mashups. And we support the common Enterprise Programming Model (not just Java, WebApp, JAX-WS, but also BPEL, XSLT, XPath, Google Gadgets, WSDL, etc). The only other PaaS that I know of that offers a full Enterprise architecture is Tibco Silver.

The third and most important differentiator is about lock-in. Software vendors love lock-in - and Cloud vendors love it even more. So if you code to Google App Engine, you are tied into Google's identity model, Google's Bigtable, etc. If you code to force.com or vmForce - you are tied to force's infrastructure services. If you code to Tibco Silver, you are tied to Tibco. WSO2 fights this in three ways:
  • No code lock-in: we use standards-based coding (WAR, JAX-WS, POJO) and Stratos is 100% Apache License Open Source.
  • No model lock-in: we use standards-based services: 
    • Identity is based on OpenID, OAuth, XACML, WS-Trust
    • Registry is based on AtomPub and REST
    • Business Process is based on BPEL, etc
  • No hosting lock-in: you can take you apps and data from our public PaaS and re-deploy internally or on your own virtual private cloud anytime you like.
I hope you found this a useful introduction to Stratos. If you want more information, contact me paul@wso2.com, or check out the Stratos website or code.




wso2

Introduction to WSO2 Message Broker


Introduction to WSO2 Message Broker

Introduction
WSO2 Message Broker (MB) is a new Open Source project and product from WSO2 that provides messaging functionality within the WSO2 Carbon platform and to other clients in various languages. It works either standalone or in conjunction with products and components such as the WSO2 ESB and WSO2 Complex Event Processing Server.

MB is based on the Apache Qpid/Java project (http://qpid.apache.org). From Apache Qpid, MB gets core support for the AMQP protocol and JMS API. On top of that WSO2 has added support for Amazon SQS APIs and WS-Eventing support.

Understanding how the MB broker fits into Enterprise Architecture
The Message Broker provides three main capabilities into an overall Enterprise Architecture:
·               A queueing/persistent message facility
·               An event distribution (pub/sub) model
·               An intermediary where multiple systems can connect irrespective of the direction of messages.

To give some concrete examples of these benefits, here are some scenarios:
1)   In the WSO2 ESB, a common pattern is to persist the message from an incoming HTTP request into a persistent message queue, and then process onbound from there. MB can provide the persistent queue.
2)   The WSO2 ESB already has an event distribution model and eventing support, but the QPid-based broker provides higher performance as well as supporting the JMS API.
3)   For example, you may wish to send messages from outside a firewall to a server inside. You could connect an ESB or Service Host within the firewall to a Message Broker running outside the firewall (for example on Amazon EC2). This model is used by the WSO2 Cloud Services Gateway.

Where does AMQP fit?

AMQP (www.amqp.org) is an open protocol for messaging. Whilst the AMQP protocol is still under development, it has released three stable releases (0-8, 0-9-1, and 0-10), with a 1.0 due during 2011. There are a number of implementations of the AMQP standard in production, including Apache Qpid (both Java and C++ versions), RabbitMQ, OpenAMQ and others.

WSO2 has been a member of the AMQP working group for several years, and we strongly support AMQP as the way to introduce interoperability and greater openness into the messaging space.

The Qpid broker supports a variety of clients on top of the AMQP protocol. The most useful of these for Carbon is the Java JMS 1.1 API, which provides a portable API as well as the main interface with the WSO2 ESB. In addition there are C# and other APIs. WSO2 MB also extends these with WS-Eventing and Amazon SQS APIs for interoperability using HTTP, REST and SOAP.

Installing the WSO2 MB

You can download the WSO2 MB Beta from:

Once you have downloaded and unzipped, simply switch to the install directory

            cd wso2mb-1.0.0-SNAPSHOT
            binwso2server.bat  [ON WINDOWS]
            bin/wso2server.sh [ON LINUX/MACOSX]

Let’s refer to the install directory as from now on.

You should see the server startup:
[2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...
[2011-03-16 14:00:12,840]  INFO {org.wso2.carbon.server.TomcatCarbonWebappDeployer} -  Deployed Carbon webapp: StandardEngine[Tomcat].StandardHost[defaulthost].StandardContext[/]
[2011-03-16 14:00:14,147]  INFO {org.wso2.carbon.atomikos.TransactionFactory} -  Starting Atomikos Transaction Manager 3.7.0
[2011-03-16 14:00:19,952]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Starting WSO2 Carbon...
[2011-03-16 14:00:19,983]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Operating System : Mac OS X 10.6.6, x86_64
[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Home        : /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
[2011-03-16 14:00:19,984]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Version     : 1.6.0_24
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java VM          : Java HotSpot(TM) 64-Bit Server VM 19.1-b02-334,Apple Inc.
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Carbon Home      : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT
[2011-03-16 14:00:19,985]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  Java Temp Dir    : /Users/paul/wso2/wso2mb-1.0.0-SNAPSHOT/tmp
[2011-03-16 14:00:19,986]  INFO {org.wso2.carbon.core.internal.CarbonCoreActivator} -  User             : paul, en-US, Europe/London
2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...

some logs deleted

[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpsTransportListener} -  HTTPS port       : 9443
[2011-03-16 14:00:41,691]  INFO {org.wso2.carbon.core.transports.http.HttpTransportListener} -  HTTP port        : 9763
[2011-03-16 14:00:42,422]  INFO {org.wso2.carbon.ui.internal.CarbonUIServiceComponent} -  Mgt Console URL  : https://192.168.1.100:9443/carbon/
[2011-03-16 14:00:42,499]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Started Transport Listener Manager
[2011-03-16 14:00:42,500]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  Server           :  WSO2 MB -1.0.0-SNAPSHOT
[2011-03-16 14:00:42,506]  INFO {org.wso2.carbon.core.internal.StartupFinalizerServiceComponent} -  WSO2 Carbon started in 27 sec
2011-03-16 14:00:12,471]  INFO {org.wso2.carbon.server.Main} -  Initializing system...

WSO2 Message Broker is installable in more ways for production systems. Typically it is either registered as a Linux Daemon or as a Windows Service – but for now we will stick with the command-line version for simplicity.

Once the server is running you can access the management console. Point your browser at:
            https://localhost:9443

Initially you will see a browser screen warning you about the certificates. Please tell your browser to continue (For a production server you would normally install a proper SSL/TLS certificate, but for initial install we generate a self-signed certificate that you need to agree to use).

Once you have accepted the certificate, you should see a screen like:


You can login using the default user/password which is admin/admin.

Once you login you should see the following screen:


Before we examine the admin console, lets first create a simple JMS client that will communicate with the server via AMQP on TCP/IP.

Getting Started with JMS
The Java Message Service (JMS) specification - http://www.oracle.com/technetwork/java/index-jsp-142945.html - is a specification for talking to message brokers. It is unfortunately poorly named: the word “service” implies this is an implementation, but JMS does not define an actual messaging service, instead just the API which is used to access JMS providers. “Java Messaging API” would more accurately express what JMS is. The result is that there are a variety of JMS providers, and they often have quite different approaches to their core model.

The WSO2 Message Broker is based on the Apache Qpid project (http://qpid.apache.org) and is a compliant implementation of the JMS specification, as well as various levels of the AMQP specification (0-8, 0-9-1, 0-10). 

To write completely standard portable JMS code, you need to use a JNDI provider to gain access to the JMS connection, queues, etc. In this example we will use a Qpid JNDI provider backed by a simple set of properties. This makes the overall system simple and highly portable.

Here is a sample JMS application that can be used to test access to the Message Broker.  You can find this code here:



First are some required imports.

import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;

Next is a simple “main” class definition:

public class JMSExample {

public static void main(String[] args) {
       JMSExample producer = new JMSExample();
       producer.runTest();
}

      
private void runTest() {

Since this is just an example, we will place the complete logic in a try/catch block.

try {

Normally the JNDI is configured by a properties file, but you can also do it from an in-memory set of properties. To see a similar setup with a properties file, take a look at the ESB example below.  Here is a properties object to store the properties:

Properties properties = new Properties();

In order to bootstrap the JNDI entries for the connection factory and queue, we set name/value pairs into the simple properties object:                   

properties.put("connectionfactory.cf",
       "amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5672'");

The property name “connectionfactory.cf” denotes that we are creating an object of type ConnectionFactory with name “cf”. The value is a URL that is used to bootstrap the ConnectionFactory: this URL points to the AMQP broker. The syntax is broken up as follows:
       amqp://               Indicates this is an AMQP URL
       admin:admin@  This is the username/password
       carbon/carbon The client ID and virtual host
       ?                     separator for options
       brokerlist=’tcp://localhost:5672’          A list of broker URLs to use

For more information on this URL syntax please see:

The virtual host name is part of the definition in:
/repository/conf/qpid/etc/virtualhosts.xml

This file also defines aspects such as the maximum number of messages in a queue and the queue depth (maximum size in bytes of the queue).

Now we need to create a JNDI entry for the queue we are going to talk to:

properties.put("destination.samplequeue", "samplequeue; {create:always}");

The property name “destination.samplequeue” indicates creating a destination with a JNDI name of “samplequeue”. The property value “samplequeue; {create:always}” indicates a queue named “samplequeue” with an attribute which tells the broker to create the queue if it doesn’t exist.

These properties are specific to the particular JNDI implementation we are using, which is the Qpid “PropertiesFileInitialContextFactory”. So now we need to configure JNDI to use this implementation:
                     
                     
properties.put("java.naming.factory.initial", "org.apache.qpid.jndi.PropertiesFileInitialContextFactory");

Now we can do our JNDI lookups:

Context context = new InitialContext(properties);

ConnectionFactory connectionFactory =
(ConnectionFactory) context.lookup("cf");

Having “found” a JMS Connection Factory in the JNDI, we can now create a connection to the broker:

Connection connection = connectionFactory.createConnection();
connection.start();

And now we can create a JMS Session:

Session session = connection.createSession(false,
                                    Session.AUTO_ACKNOWLEDGE);

One more lookup from JNDI will lookup our queue:

Destination destination = (Destination) context
                                    .lookup("samplequeue");


Now we can create a Producer, and send a message:
                     
MessageProducer producer = session.createProducer(destination);
TextMessage outMessage = session.createTextMessage();
outMessage.setText("Hello World!");
producer.send(outMessage);

Of course, in real life you would most likely NOT now retrieve that same message from the same application, but for this example we will now retrieve the message:                      
MessageConsumer consumer = session.createConsumer(destination);
Message inMessage = consumer.receive();
System.out.println(((TextMessage)inMessage).getText());

And close up the connection and the initial context:
                     
connection.close();
context.close();
} catch (Exception exp) {
       exp.printStackTrace();
}

To try out this client you need the correct client JARs.

In the beta release you will find:
/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
/jms-client-lib/qpid-client-0.9.wso2v2.jar

You also need to reference
/lib/log4j-1.2.13.jar





Once you have those in your classpath you can run the program. You should see some simple output:

log4j:WARN No appenders could be found for logger (org.apache.qpid.jndi.PropertiesFileInitialContextFactory).
log4j:WARN Please initialize the log4j system properly.
Hello World!

If you got that far, congratulations!

In the next section we are going to look at using the ESB with the Message Broker.

There are two approaches for this:
1) If you are using the existing WSO2 ESB 3.0.1 or similar, you can deploy the MB client libraries and communicate using the network.

2) As of the next WSO2 ESB release (3.1.0) it will include the Qpid/MB features as part of the release and you can utilize the Message Broker/JMS runtime locally in the same JVM.

WSO2 MB and WSO2 ESB together
In this first instance we are going to get the WSO2 ESB and MB to work together.
Assuming that you already have the MB installed and running, you will first need to install the ESB and change the ports of the admin console so that they don’t clash. You can download WSO2 ESB 3.0.1 from:
            http://wso2.org/downloads/esb

The install procedure is similar: unzip the ESB, but don’t start it up yet. Let’s name (for this guide) the directory where you installed the ESB as .

First let’s edit the ports on which the ESB listens. (Alternatively you could do the same to the MB instead).

Edit the epositoryconfmgt-transports.xml

This file defines which ports the management console runs (HTTP and HTTPS).

Please change:

<transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport">
        <parameter name="port">9763</parameter>

to read:
<transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport">
        <parameter name="port">9764</parameter>

Similarly change the HTTPS port to be 9444.

Now the next step is to ensure that the ESB has the right drivers to talk to the MB. Copy the following JARs into the epositorycomponentslib directory:
/jms-client-lib/geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
/jms-client-lib/qpid-client-0.9.wso2v2.jar


We also need to configure the JMS transport correctly. To do this we edit the axis2.xml file:
  epositoryconfaxis2.xml

This file has the JMS transport commented out. It also needs the settings updated to use the Qpid libraries. Change the file so that the JMS receiver and sender sections look like this:
  
       <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
        </parameter>


        <parameter name="myQueueConnectionFactory" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>


        <parameter name="default" locked="false">
         <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
         <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
         <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
        </parameter>
    </transportReceiver>
You can find my copy of the edited axis2.xml here:

If you have looked through the JMS config you will notice it references a JNDI resource: resources/jndi.properties.

This is used to do the same thing the hard-coded properties we used above do – configure the local JNDI that the JMS client inside the ESB will use. In a future release of the ESB we expect to automatically configure this JNDI, but in the meantime, we can simply create a file in the /resources directory.




wso2

WSO2 Workshops in Europe

If any of you are interested in Identity, Security and Entitlement and how these fit into a SOA, Cloud and Enterprise Architectures, then I'd recommend you taking a look at our workshop that we are running in London, Paris, Zurich and Frankfurt.

PS I think I'm meant to be the one on the left with St. George's flag!






wso2

Synapse and WSO2 ESB myths

There are a few myths about Synapse and the WSO2 ESB I'd like to address. Its amazing they still come up.

Not an ESB?
The first and oldest myth is that Synapse is not an ESB. This dates back to the initial creation of the project - before there was even any code! Dave Chappell was at Sonic at the time and he said "This project is related to ESB , but it is not in itself an ESB".

Well, firstly, since at that time Sonic was the ESB leader, he would say that! Secondly, this was purely theoretical - no code had been written at that point. While I love the internet's ability to archive everything for years, to quote this several years later (like the ServiceMix guys do here: http://servicemix.apache.org/how-does-servicemix-compare-to-synapse.html) is disingenuous to say the least.

The fact is that Synapse - both as a pure Apache project and when packaged as the runtime engine of the WSO2 ESB is an ESB. Rather than argue about the definition of an ESB, it would be simpler to describe a few of the many usecases it is in production for:

* Getting the latest trades from a legacy financial system and reporting them to third-parties to meet regulatory requirements.
* Linking an SAP/R3 system with a .NET-based Point-of-Sale (POS) system in 40+ retails stores to distribute the latest price updates.
* Integrating between BMC Remedy, Salesforce and Peoplesoft.
* Providing a full SOA bus for a telecom operator linking to provide a common fabric for payment services, SMS top up and other integrations.
* Lightweight Service Orchestration (what we call Service Chaining) - providing simple non-persistent flows across multiple services.
* Integrating FIX messaging to existing systems.
* etc etc

In addition, the beauty of the Synapse ESB (and WSO2 ESB) is that it can also provide very high performance lightweight routing, load-balancing, failover and security management, so it is often used for high throughput scenarios as well - for example at eBay where it handles well over 1bn request/response interactions/day.

Synapse (and WSO2 ESB) only support SOAP or translate every message into SOAP
This is also a complete myth. The WSO2 ESB has a very effective model for dealing with content that only parses the content as needed. This model is based on the concept of a message formatter and builder. These objects handle the internal representation of content and are very flexible. For example, the normal approach to handling non-XML data is to keep it as a binary stream. In addition, a new transport in the WSO2 ESB (the Passthru transport) supports even higher performance routing of messages where the message body is simply passed from one HTTP endpoint to the next, while still supporting useful functions like header-based routing, authentication and authorization, logging, throttling and cacheing.

For XML data, we have an internal model that unifies SOAP and non-SOAP. What this means is that for non-SOAP payloads, there are two extra objects in memory that represent the envelope and body. This makes it very easy (and performant) to handle scenarios like taking the SOAP body and publishing it (without the SOAP wrapper) onto a JMS queue.

 Because the XML object model we use (Apache Axiom) supports streaming (via StAX), the message is only built into a tree if a mediator such as the XSLT transform requests it.

I think this is where the mistaken belief lies. This is a bit like Heisenberg's Uncertainty Principle! The act of observing a quantum level action affects the action. Similarly, if you examine the message, then if you ask for it as SOAP, we will build it into a SOAP message and give it to you. Of course that doesn't mean it was a SOAP message until you asked for it as SOAP. If you were to ask for the message as pure XML then you would get it as a pure XML element. In both cases it remains as a binary stream until the point you ask for the message. If you simply route the message out to another system, it will not have been converted to or from anything:  Synapse will simply stream the message through and out to the target.

I hope that this clears up these two myths!




wso2

OAuth2 Introspection with WSO2 ESB and WSO2 Identity Server

The OAuth2 specification defines several parties: the Client, the Resource Owner, the Authorization Server and the Resource Server. Here is the (textual) diagram from the spec:



     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

                     Figure 1: Abstract Protocol Flow

One flow that is not defined by the OAuth specification is any flow from the Resource Server to the Authorization server to validate an existing Bearer Token (or other token). 
The spec says:
The interaction between the authorization server and resource server is beyond the scope of this specification.  The authorization server may be the same server as the resource server or a separate entity. A single authorization server may issue access tokens accepted by multiple resource servers.
In many cases the Authorization server offers an API to access this. For example, Google allows you to call a TokenInfo APIto validate tokens. Similarly Facebook offers an API to "debug" a token. The WSO2 Identity Server also offers an API, but (shock and horror) we don't document it yet. The ESB and API manager both utilize this API to validate OAuth2 bearer tokens. The ESB code is of course available, and with a quick look at the code and also the use of TCPMON it didn't take me long to reverse engineer the API. This Gist has a sample HTTP SOAP request against the WSO2 IS to validate a token:
It turns out that the OAuth Working Group at the IETF is working on this and has a draft specification available, using a RESTful service. They call this OAuth Token Introspection. I figured this would be easier (and more pleasant) to call from my Python code, so I knocked up a quick WSO2 ESB API mediation flow to convert from the RESTful API to the existing WSO2 SOAP-based API.
I know that Prabath and the security and identity team at WSO2 will soon add this useful REST API, but in the meantime, here is a quick hack to help you out. Please note you need to hardcode the URL of the IS and the userid/password into the ESB flow. Also I assume if you don't provide a token_type_hint then this is a bearer token. And here is the Gist showing a sample interaction: 




wso2

WSO2 {Paul}

I have an announcement to make: as of this month, I am stepping down as CTO of WSO2, in order to concentrate on my research into IoT secure middleware.

I have been at WSO2 since the start: our first glimmer of an idea came in August 2004 and the first solid ideas for the company came about in December 2004. We formally incorporated in 2005, so this has been more than 10 years.

The company has grown to more than 400 employees in three different continents and has evolved from a startup into a multi-million dollar business. I'm very proud of what has been achieved and I have to thank all of the team I've worked with. It is an amazing company.

In late 2013, I started to research into IoT middleware as part of a PhD programme I'm undertaking at the University of Portsmouth. You can read some of my published research here. I plan to double down on this research in order to make significantly more progress.

Let me divert a little. You often meet people who wish to ensure they are irreplaceable in their jobs, to ensure their job security. I've always taken the opposite view: to make sure I am replaceable and so that I can move onto the next chapter in my career. I've never thought I was irreplaceable as CTO of WSO2 - I've simply tried to make sure I was adding value to the company and our customers. In 2013, I took a sabbatical to start my PhD and I quickly realised that the team were more than ready to fill any gaps I left.

WSO2 is in a great position: the company has grown significantly year over year over year, creating a massive compound growth. The technology is proven at great customers like Fidelity, eBay, Trimble, Mercedes-Benz, Expedia and hundreds of others.

I am an observer on the board and I plan to continue in that role going forwards.

Once again I'd like to thank all the people who I've worked with at WSO2 who have made it such a productive and life-changing experience.






wso2

GNU Terry Pratchett on WSO2 ESB / Apache Synapse

If any of you are following the GNU Terry Pratchett discussion on Reddit, BBC or the Telegraph, then you might be wondering how to do this in the WSO2 ESB or Apache Synapse. Its very very simple. Here you go. Enjoy.
Loading ....