The Joomla! Community Portal ™

Sat

13

Apr

2013

Kickstarting web services in Joomla
Written by Chris Davenport   
Saturday, 13 April 2013 14:39

Joomla Web Services graphicWith the ever-increasing demand for content to be consumed across platforms and across devices, Joomla urgently needs a RESTful web services API.  It is no longer enough to just publish content on a website and expect people to use a web browser to access it.  Nowadays people want to consume content on smartphones, tablets and other devices, and they want to be able to connect information systems together to break out of the old content silos.  Joomla as a content management system (CMS) needs to be more open to new methods of publishing content and we need to think beyond the traditional web CMS to embrace the full extent of our mission "to provide a flexible platform for digital publishing and collaboration".

The rise of REST APIs can be seen as being part of the trend towards leveraging web technologies to liberate data and expose it to access by many different devices on many different platforms; allowing it to play a more dynamic role in business and organisational processes.  For Joomla websites to become first class citizens in a world of distributed hypermedia content we first need to provide a comprehensive standards-based REST API that will enable any website owner to easily provide access to content that has hitherto been obscured behind a wall of HTML.

I really want to see this technology incorporated into Joomla 3.x as soon as possible.  There is a massive amount of work to be done to make that happen and at the present rate of progress it is doubtful if it could be achieved before the Joomla 3.5 release in March 2014.  That’s why I’ve recently announced a new crowd-funding project on Kickstarter.  If I can attract sufficient funding I intend to work full-time on achieving the goal of getting comprehensive web services support into the Joomla 3.2 release in September of this year.

That’s the quick introduction to the project.  For the full description please go to the project page on Kickstarter: http://www.kickstarter.com/projects/964120480/joomla-web-services

Questions that some have asked

I believe this is the first time that anyone has attempted to crowd-fund a Joomla development project and due to its trail-blazing nature it has raised a number of issues that are important to address. I have been listening carefully to the comments made in various arenas and below I have tried to answer the most common questions and concerns.

Why doesn’t OSM/Joomla pay for this development?

Some people are uncomfortable with the idea of the project paying people directly to work on developing code that the project needs, even though the funds are theoretically available to do that.  Regardless of my personal opinions in that regard, using crowd-funding bypasses any questions regarding what the project should spend its resources on.  The community will decide in the most direct manner possible if this is something worth investing in.

Why Kickstarter?

I chose Kickstarter because it is the premier crowd-funding platform with huge visibility and a strong reputation.  Until quite recently it was restricted to US citizens and as a UK citizen I was ineligible.  However, this is no longer the case and the project has passed Kickstarter’s approval process.

Why should it be you?

I have already spent hundreds of hours researching, thinking and writing about web services in Joomla.  I was the principal author of the first two drafts of the web services API specification (see the Web Services Working Group page here: http://docs.joomla.org/Web_Services_Working_Group) and I have recently developed a proof-of-concept for web services in Joomla 3.x (available at https://github.com/chrisdavenport/j3-rest-api).  I have set up an online demo where you can play with the current code operating on a stock Joomla 3.0 installation with test sample data.  You can browse the API using the HAL Browser by starting at http://demo.davenporttechnology.com/api/hal-browser/browser.html#/api.

In short, I don’t think anyone is better placed to get advanced web services into Joomla 3.x.

What happens if the project fails to gain sufficient funding?

Then no money changes hands.  But I’m not going to suddenly stop working on getting web services into Joomla 3.x.  I’ll continue to put whatever time I can into working on the code and encouraging others to assist in the process.

What happens if the idea of crowd-funding development takes off and we get multiple competing projects for the same feature?

We should be so lucky!  Actually this is no different from having multiple companies with differing visions putting forward competing code for the same feature.  Of course, ultimately it is the PLT’s decision as to which, if any, of the competing contributions is accepted.  However, we would always try to encourage teams working on the same feature to join forces and work together.  With crowd-funding this is actually more likely to happen because the competing projects must inevitably be widely publicised before being funded, so it is much less likely that someone would be working on a feature without everyone else knowing about it.

Why should you be allowed to blog on the Joomla community site?

This is a question of policy that needs to be addressed by the leadership teams.  My personal opinion is that it is perfectly fine for any crowd-funding project to be permitted to blog so long as it is for something of benefit to Joomla.  The fact that I am a member of the PLT should have no bearing on the issue.  If crowd-funding turns out to be hugely popular then such a liberal policy might need to be reviewed, but for now I don’t see any issue.

Others could be doing the work for free.  Why should you be paid?

Others are perfectly free to do the work for free if they choose and I would welcome their assistance.  Personally, I would love to be able to put more time into the Joomla project for free than I already am, but the reality is that I need an income and that currently limits the amount of time I can donate to the project.  The purpose of this Kickstarter project is to give me an alternative source of income that will allow me to donate full-time hours to the project, specifically for development of web services.  It in no way prevents others from donating their time, paid or unpaid, to the project too.

Package xyz already supports web services.  Why don’t you just include that?

I have looked at all the Joomla web services projects currently available that I’ve been able to find or which has been brought to my attention.  All of them are interesting, but all of them fall short of what I want to achieve.  The basic idea of RESTful web services, using HTTP verbs, is really not that hard to implement.  But if you read the specification for web services in Joomla, available from the WSWG wiki page, you will see that we have much greater ambitions in mind.  The idea is to create a state-of-the-art hypermedia-based web services platform that will serve as a foundation block for many new products and extensions, client-side as well as server-side.  I have come to realise that awareness of the potential of web services is currently quite low so I will be putting together more educational material to try to explain these ideas in more detail.

I don’t agree with the idea of paid development

We have an open development process where anyone can submit whatever they like and it will be considered on its merit. If it’s a feature intended for the core distribution this will be by peer review through community discussion on the development mailing lists in the first instance, with the Production Leadership Team (PLT) having the final say.  We have never made any distinction between those who self-fund a contribution and those who have been paid to develop the code.  Indeed, in most cases there is no way for us to know if any money changed hands during the making of a new feature.  All we ask is that the contributor (or in some cases his/her employer) has signed the Joomla Contributor Agreement (JCA).  Paid development of contributions goes on all the time and has done since the project’s foundation.  One of the most important roles of the PLT is to ensure that what is accepted into the core distribution benefits the community in general by furthering our mission “to provide a flexible platform for digital publishing and collaboration” and it does that without regard to who paid, or did not pay, for each contribution.  I doubt you will find any major open source project that discriminates against paid development.

The project proposal says that a backer at the “Hero” level will get “a prominent link to your extension page on the Joomla Extensions Directory.”  Isn’t that an abuse of your position in the Joomla project?

 This should read a “a prominent link from the project website to your extension page on the Joomla Extensions Directory.”.  Sometimes I really hate the English language; it’s so easy to accidentally introduce ambiguity that it becomes the very enemy of communication. Unfortunately the text on Kickstarter is locked and I can’t now correct it.

 You’ve answered all my questions, now where can I contribute?

 I’m really glad you asked :-)

 Here’s the link: http://www.kickstarter.com/projects/964120480/joomla-web-services

 Thank you.

Edit: Discuss this blog post here: http://forum.joomla.org/viewtopic.php?f=704&t=798795