Services 3 alpha released

The first alpha release of Services 3 has just been rolled and should be available for download on the project page by the time you read this. This is a full rewrite of Services from scratch, with a variety of new features and improvements. This rewrite was initially done by Hugo Wetterberg and then taken over by me for various cleanups and fixes. Services 3 includes a variety of new features and upgrades including

  • Multiple endpoints - In Services 2, you could only have one endpoint per server, so if you wanted to have one set of services that was authenticated and another set that was anonymous, you were stuck. Services 3 allows unlimited endpoints, with configurable servers and authentication options.
  • REST Server included in Services core - The REST server module is now included in the Services core module, and Services as a whole is moving in a more REST-centric direction in accordance with general trends. The REST server also natively handles JSON submissions and responses, rendering the JSON Server module obsolete as of version 3. XMLRPC server will also still be bundled and supported.
  • Multiple authentication methods per endpoint - While authentication became pluggable in Services 2, you could still only have one authentication method per endpoint. In Services 3 you can mix and match, allowing auth modules to build on and complement each other.
  • Increased consistency for service declarations - The service declarations will now be organized and named alongside standard CRUD-style operations. No longer will you wonder why there is node.get but user.view.
  • Better documentation - Doxygen has been added and/or cleaned up throughout Services, and api.php files have been added to detail the usage of hooks defined by Services. Additionally a whole new set of reorganized and rewritten handbook pages have been begun created for Services 3 with the intention of making it easier for people to get involved in using and testing Services.

There's more but those are the big hits. I'm really excited about this release and I hope everyone else is too. As always with alpha-releases, we do NOT recommend this for production code at this time. There are still some gaps to be filled in, a LOT of testing to do, and a significant amount of UI cleanup. That said we do hope people will start playing with it and filing bugs. Up to this point development of Services 3 has been going on at github, but as of this alpha I'm moving everything back to drupal.org CVS so that we can increase visibility and take full advantage of the community and the issue queue.

Services 3 is currently only available for Drupal 6, however it will also be the basis of Services for Drupal 7 which is being ported as we speak. These two projects will run in parallel until release. Kyle Browning from Workhabit has graciously volunteered to lead the D7 effort and he was added as a co-maintainer today.

None of this would have been possible without the incredibly generous sponsorship we got from Adobe a couple months ago. This money allowed me to take almost two full weeks focusing on code cleanup and testing as well as writing a ton of documentation to help people get a leg up on the new version. My thanks again to Ryan Stewart for making that happen. It was a fantastic success and I hope that our relationship with Adobe continues and serves as an example for other companies who have an interest in seeing Drupal functionality developed and maintained.

Enough of me! Go forth and play!

tags: 
topics: 

Comments

It is very exciting to see Services 3 Alpha. I know ya'll have worked long and hard on it. And it is fantastic to see others (esp. Adobe) getting involved in helping however they can.

We use Services, and each new feature I see go in becomes another potential way we can extend our site's capabilities. Very cool.

Thanks Hugo and Greg for all your hard work! What is the impact of the rewrite on the Services api and the modules that make use of it? For example would modules like Deploy need significant changes or would they require no updating at all?

The impact will be great, there is no backwards compatability and the upgrade path has not (and may not) be written. A lot of dependent modules will need to update their code. I am going to contact the maintainers I know about and ask that they add hook_requirements() to their modules so people don't enable them with 3.x by mistake.

Add new comment

I wrote two chapters of this book - Drupal 7 Module Development and I co-wrote it with Matt Butcher, Larry Garfield, Matt Farina, Ken Rickard, and John Wilkins. Go buy a copy!
I am the owner of the configuration management initiative for Drupal 8. You can follow this work at the dashboard on groups.drupal.org.
I work at Lullabot!. If you don't know who Lullabot is then you haven't been around in the Drupal world long have you? Come check us out!