Dave Johnson on open web technologies, social software and Java
I travelled to Budapest, Hungary for a couple of weeks for a very nice vacation with my wife and to speak at ApacheCon EU. Here are the slides that I presented at ApacheCon EU:
(you can also view the presentation on Slideshare.)
And here is the session abstract:
Whether you are building a mobile app or a web app, Apache Usergrid (incubating) can provide you with a complete backend that supports authentication, persistence and social features like activities and followers all via a comprehensive REST API — and backed by Cassandra, giving you linear scalability. All that, and Usergrid is open source too.
This session will explain how you can use Usergrid to provide a back-end for your application. We’ll start with an overview of Usergrid features, then explore in depth how to authenticate users, store data and query data with the REST API provided by a Usergrid server. We’ll develop a simple HTML5 app and package it as a native mobile app via Apache Cordova. We'll also cover how to run Usergrid locally for development and testing.
One year ago on this day I wrote that Sun Microsystems is willing to contribute Project SocialSite" to the Apache Software Foundation. My contacts at Sun told me it was OK to make that announcement because a VP approved. One year later, we have established Apache SocialSite (incubating) project, setup user accounts, put up a status page and setup source code control but we still have no code from Sun.
Since March 2009 I've been exchanging emails with my helpful contacts at Sun and trying to help them move forward with the contribution, but because of the ongoing Oracle/Sun merger things have moved incredibly slowly. Finally in late December 2009, my Sun contacts had permission to actually release the code to Apache, but there was a problem.
When Sun said that they were willing to contribute the SocialSite code to Apache, I figured that they would do so using the standard Software Grant agreement that was used for Roller and all other projects entering Apache via the Incubator. Unfortunately, the Sun lawyers did not want to use the standard Software Grant agreement and Apache did and does not want to devise a new legal agreement just to accommodate Sun. That's where we stand today. Sun committed to contributing SocialSite to Apache and now we're waiting for Oracle/Sun to follow through on that commitment.
Meanwhile, others have been making some progress with SocialSite. A major sports brand has launched a SocialSite based network with a million-plus users. A couple of developers have rewritten the build script to use Maven, others have "ported" to JBoss and there is still interest in and a need for what was Sun's Project SocialSite. Neither effort has contributed code back to SocialSite-proper and because of legal concerns are waiting for the main code to appear at Apache.
SocialSite is a small project and it will not survive for much longer with resources spread across multiple sites and a community working separately. So, I'm asking again and publicly: Oracle, please follow through on your commitment and grant the Project SocialSite codebase to Apache.
I took a break from blogging during my first couple of weeks at IBM. My blog broke and it took me a while to find the time and motivation to fix it, but now it's time to return. I think. I have been doing some internal blogging at IBM, but so far it's been mostly boring stuff: status reports and the like.
What I want to talk about today is Project SocialSite. Since my last post, where I mentioned that Sun is willing to contribute SocialSite to Apache, I did some work to move things along. I wrote an Apache Incubator proposal, started a discussion and this week calling for a vote on the proposal. Here are the relevant links:
If you want to support the project, and especially if you're on the Incubator's Project Management Committee, now's the time to do so.
For Java developers starting out with RSS and Atom, here are some notes to help you figure out the differences between the Java.net ROME and Apache Abdera (incubating) projects.
ROME is a set of Java tools for parsing, fetching and generating all forms of RSS and Atom feeds. The core ROME library is relatively small and depends only on the somewhat creaky old JDOM XML parser. Available separately are modules to support various feed extensions such as OpenSearch, iTunes, GeoRSS, etc. ROME was originally developed and open sourced by Sun Portal dev team members in 2004.
ROME Propono is a subproject of ROME that supports publishing/editing entries and files to blog servers and AtomPub servers. Propono is made up of three parts: 1) a Blog Client library can publish via either the old lagacy MetaWeblog API or the shiny new AtomPub protocol, 2) an AtomPub client that publishes only via AtomPub and 3) a framework for creating AtomPub servers. Propono was developed by Ramesh Mandava and Dave Johnson, based on code from RSS and Atom in Action and open sourced as part of the Sun Web Developer Pack in 2007.
Abdera is a set of Java tools for working with Atom feeds and AtomPub protocol. This includes a parser, writers, an AtomPub client and a framework for creating AtomPub servers. Abdera's Atom feed parser uses STAX, so it uses less memory and is faster than ROME. Abdera's Atom feed support is more comprehensive than ROME's and it supports signatures, encryption, Atom to JSON, extensions for Threading, Paging, GeoRSS, OpenSearch, GoogleLogin, etc. etc. Abdera was developed by IBM and contribued to Apache in 2006.
Now let's compare frameworks. The pros and cons of ROME are:
The pros and cons of Abdera are:
There you have it. ROME and Abdera folks: think that's a fair comparison? Are you a ROME or Abdera user? How would you like to see these frameworks move forward?
As usual ApacheCon was a blast. I showed-up on Tuesday, made myself at home in the hackathon room and started reconnecting with old friends and meeting new ones. I arrived at the members reception a little late and missed the beer, but was not too late to meet Lars Trieloff of Mindquarry, a startup that's working on an interesting open source product suite that combines content management, task management and wiki functionality. Behind the scenes the product combines Subversion, Apache Jackrabbit and other open source products. Apparently everything is tied together via the Java Content Repository (JCR) API and that's why Lars is interested in the possibility of hooking Roller up with a JCR backend.
Talks began Wednesday and I sat in the business track for most of the day. I particularly enjoyed Rebecca Hansen's talk Better than free: Strategic opportunities in open source and Bill Stoddards talk on Best Practices for Incorporating Open Source Code in Commercial Production. I also enjoyed Alexandru Popescu talk on Up to Speed with Java Content Repository API and Jackrabbit. I attended Stefano Machacci's excellent Community Building Practices talk again -- I think it should be required for all Apache contributors.
Thursday night was the Sun party at Lloyd Hotel, which was was quite successful. I had an interesting Roller-related chat with Paolo Castagna of HP, who is investigating new ways to integrate blogs, planets and wikis -- so we had a lot to talk about. I'm hoping he'll find that Roller is a good foundation for his work and encouraged him to collaborate with us via the Roller mailing lists. By the way, like Lars Trieloff, he is also interested in JCR as a back-end for blog/wiki data.
My talk Roller and blogs as a web development platform was scheduled for 10:30 Friday morning. It didn't go so well. Power went out at around 10AM and didn't come back until about 20 minutes into the talk. That left me a bit frazzled and feeling rushed, so I don't think I gave my best performance. If you'd like more information on the talk, you can find the outline here and the slides here (1.6MB PDF).
Finally! Roller has graduated to become a top-level Apache project and we've shipped the long awaited Apache Roller 3.1 release. You can find the full announcement on the Roller mailing list and on the Roller project blog and our new top-level site at http://roller.apache.org.
In case you're wondering what's going on lately with Roller, ROME and other projects I've been working on, here's a status update from my point-of-view.
Apache Roller graduation. The Roller team voted for graduation, the Apache Incubator PMC voted for incubation and the next step is to take the resolution to the Apache board meeting, which is coming up in the next week or so.
Roller 3.1 release. We've been moving slowly on this one. RC1 was released Nov. 20 and today RC4 just about ready to go. It's possible that 3.1 will be our first "official" Apache Roller release -- depending on what happens on the board meeting. Wonder what's coming in Roller 3.1? The What's New in Roller 3.1 page is now available on our new wiki at apache.org.
Roller 4.0 development. We started the Roller 4.0 branch a couple of weeks ago and I've been spending most of my time updating and trying to perfect Craig and Mitesh's new JPA back-end. Elias outlined a bunch of IBM contributions including an iBatis based back-end. We hope to get some of those in the 4.0 and do some JPA vs. iBatis testing, but we haven't seen any proposals or code yet.
Roller-Planet. Actually, Allen's taken over work on Roller-Planet and he's implementing many of the things I outlined in the Roller-Planet mind-map. He promoted Roller-Planet from the sandbox, built a nice Struts2 UI, added a Roller-style feed/page rendering system and Roller-style caching. Good stuff. We have not discussed when to start making standalone releases of Roller-Planet.
ROME Propono. I've been working on a new ROME subproject called Propono that will include a blog client library, an Atom protocol client library and an Atom protocol server kit. I've been quiet on the ROME dev list, but I've been working on the client bits an they're basically done. I'm waiting for final approval to commit them to ROME CVS.
Blogapps examples and server. I'm still working on a 1.0.5 release, which will include updated Atom protocol support and some bug fixes. I just haven't had the time to get a release out, but I have had some time to work on Blogapps 2.0 where I've ditched the chapter-based directory names and switched to org.blogapps packaging. Once ROME Propono is available, I'll include it in Blogapps 2.0 and drop my old Blog Client library.
Abdera is an open source Atom parser, generator, client and server tool-kit for Java. James Snell announced a new version of Apache Abdera (incubating) the other day and the feature list is impressive, especially for a "0.2.0" release. Here's an excerpt:
The goal of the Apache Abdera project is to build a functionally-complete, high-performance implementation of the IETF Atom Syndication Format (RFC 4287) and Atom Publishing Protocol (in-progress) specifications. [... incubator blah blah blah ...]We might have to steal that IRI support for ROME. Actually, that's something that should be built right into the Java platform. Apparently IRI support was considered for Java SE 6 and something was implemented, but then rolled back.
- A reworked API that improves usability
- Decoupled extensions from the underlying parser implementation
- An Atom Publishing Protocol client implementation
- Updated support for the current Atom Publishing Protocol draft specification
- Added support for Internationalized Resource Identifiers (IRIs)
- Improved Thread Safety
- Fixed a number of Classloader issues that kept Abdera from working properly in application server environments.
- Improved Javadocs
- Added test cases and sample code
- Added experimental Bidirectional Text support
- Improved implementation of OpenSearch v1.0 and v1.1 extensions
- Implementation of MediaRSS extensions
- Implementation of Feed Paging and Archiving extensions
- GoogleLogin Authentication Support
Robert Burke: And it was kinda cool to be the Microsoft guy running Apache and PHP on his laptop :)I'm sorry I missed that talk.
It's a week late, sure, but I wouldn't want to let this list of the excellent
conference bag goodies go to waste:
Magnetic LED Flasher
Watermelon Pop Rocks
Strawberry Pop Rocks
Nerd Specs Super Eye Glasses
USB rechargeable flashlight.