Dave Johnson on open web technologies, social software and Java
I'm not motivated to write new blog entries but for some reason I was motivated to update my blog's theme. This time I decided to go with Twitter Bootstrap + jQuery. It's responsive, so to speak. What do you think? I think it takes a little too long for the banner image to load.
Latest links, favorites and photos shared elsewhere:
As you may remember, ROME Propono is a subproject of ROME, the Java-based RSS/Atom feed library. ROME Propono includes an AtomPub server library and an AtomPub client. I added OAuth support to the AtomPub client and in this post, I'll show how you can use it to post to the Roller 5.0-dev (i.e. the snapshot build that I made available yesterday).
In case you haven't already heard, thanks to the recent hard work of Nick Lothian, ROME 1.0 is now available. You can find downloads at rome.dev.java.net and a list of changes in the Change Log there. To celebrate this momentous event, I'm planning on releasing ROME Propono 1.0 as well, and in preparation, I've made a release candidate available. The new Propono includes ROME 1.0 and support for OAuth. You can get it via the links below:
rome-propono-1.0RC1.tar.gz (2.0 mb)
rome-propono-1.0RC1.zip (3 mb)
To use the Propono AtomPub client, you place the Propono jars in your Java VM classpath and then call the
AtomClientFactory to get started, as described in the ROME Propono 1.0 Javadocs.
Below is a Groovy example that shows how to post a blog entry to Roller via AtomPub and OAuth. You can get the consumer key, secret and URLs you need to call your instance of Roller from the OAuth Credentials page in the Roller admin interface.
import com.sun.syndication.propono.atom.client.* import com.sun.syndication.feed.atom.* def authStrategy = new OAuthStrategy( "roller", // username "55132608a2fb68816bcd3d1caeafc933", // consumer key "bb420783-fdea-4270-ab83-36445c18c307", // consumer secret "HMAC-SHA1", // key type "http://blogs.example.com/roller-services/oauth/requestToken", "http://blogs.example.com/roller-services/oauth/authorize", "http://blogs.example.com/roller-services/oauth/accessToken") // get the AtomPub service def appService = AtomClientFactory.getAtomService( "http://blogs.example.com/roller-services/app", authStrategy) // find workspace of my blog def blog = appService.findWorkspace("Blogging Roller") // find collecton that will accept entries def entries = blog.findCollection(null, "application/atom+xml;type=entry") // create and post an entry def entry = entries.createEntry() entry.title = "TestPost" def content = new Content() content.setValue("This is a test post. w00t!") entry.setContent([content]) entries.addEntry(entry)
If you have questions or feedback about ROME Propono 1.0 RC1, please post them to the ROME dev mail list and I'll do my best to respond there.
Over the past month or so I've been adding OAuth support to just about every open source project that I can commit to. I added OAuth support to Roller so that you can now use OAuth to protect Roller's AtomPub server and other things. I also added OAuth support to ROME Propono's AtomPub client so you can now use Propono to post to Roller (more about that later). Here's a quick overview of how OAuth in Roller works.
NOTE that this post applies to Roller 5.0, which has not yet been officially released.
If you want to use OAuth with AtomPub on your Roller site, go to the Server Admin page and find the Web Services section, enable AtomPub and specify 'oauth' as the authentication mechanism, like so:
Once you've done the setup, you'll find an OAuth Credentials link on the Roller Main Menu page, which will lead you a page like the one below showing your OAuth consumer key & secret and, if you are a site admin user, the site-wide key & secret. Currently, there's only one set of site-wide credentials; I plan to fix that.
Of course, those aren't my real keys. You'll want to keep your OAuth keys secret as they can enable anybody to access your Roller account via AtomPub.
I mentioned that Roller 5.0 has not yet been released and that's true. There's still a lot of work to be done on 5.0, but that doesn't mean you can't get your hands on the code and binaries now. To make it easy, I've made an unofficial snapshot version of Roller 5.0-dev available for testing purposes only. It's what I'm running on my site. You can get it here in two flavors:
The instructions in the old Roller 4.0 installation guide should work fine, so follow them to install and configure the 5.0-dev SNAPSHOT. Please send questions and feedback to either the Roller dev mail list and I'll do my best to respond there.
You'll also need an OAuth capable AtomPub client. More on that topic tomorrow...
The day before the layoff axe fell at Sun, I blogged about my upcoming Shindig for Blogs and Wikis talk at ApacheCon EU in March. Since then, I've been working almost non-stop on finding a new gig and have had little time to work on my presentation. That's not good, because I have fairly ambitious plans for this talk. I'll explain.
I want to be able to show how to add social features including OpenSocial support to a blog server and a wiki server by using plain old Shindig and then Project SocialSite. I'm targeting Roller and JSPWiki because they're the blog and wiki source code bases that I know best right now and they're both Apache efforts, but the same techniques should work with other systems like Wordpress or Drupal. If I have time I might be able to demo those too (but I wouldn't count on it).
I'm not sure how far I can go with plain old Shindig because, like most blog and wiki servers, neither Roller nor JSPWiki has detailed profile data, social relationships or activities. I should be able to get Google Gadgets working via Shindig, but OpenSocial Gadgets will take a lot more thought and effort.
I'm much more confident in the Project SocialSite approach. SocialSite provides for storage of detailed profile information, groups, activities and app data as well as the necessary UI. I'm confident enough that I'm going to deploy it on this site. So, stay tuned. I hope to have something to show by the end of next week.
Oh, and by the way. Today is the last day to register for ApacheCon EU with the early-bird discount. So sign-up already!
It was over four years ago when I discovered that Sun was using my software, Roller, to power blogs.sun.com. I was thrilled to go to work for the company back in 2004 and what an awesome cast of characters I've gotten to work with over the years. I really enjoyed the folks I worked with on the blogs.sun.com team, the open source folks and most recently, the Glassfish team -- some of the most talented and nicest folks I've ever worked with. It's been a great four and a half years but all good things must come to an end and today is the day.
I've been swept up in the latest round of Sun layoffs. Sun has decided to disinvest in Project SocialSite and as of today I'm free and available for employment. Though I do feel some urgency due to the bad economy, Sun's layoff package is pretty good and so I have some time to figure out what comes next and no need to make hasty decisions. Whatever I end up doing, I'll be blogging it here.
Oh, and about Apache Roller and Project SocialSite? I'm not ready to give up just yet. I'll be using a little of my time to do some mentoring and to move forward plans for Roller 5.0 this spring. And I see real value in the Project SocialSite "social-enable existing web sites" concept and I'm considering ways to move that forward as well, with or without Sun. I'm still giving my talk Shindig for Blogs & Wikis in March 2009 and, actually, I'm pretty happy I have some time right now to focus on those demos and slides.
Here's the announcement from the Roller project blog:
It's been over a year since our last Roller release and we've fixed a couple dozen bugs in that time including an XSS vulnerability reported recently by Secunia.com. Now those fixes are available as an official Roller release, 4.0.1
- Bugs fixed are listed in the JIRA Issue Tracker Release Notes page.
- Updated files and docs are available via the Apache download mirror network.
This is a bug-fix only release with no new features.
Wondering what's next for Roller? I'm going to push for a Roller 5.0 release in Spring 2009, as we've got good stuff in the trunk and more on the way, but I'm going to need your help to get there. More about that later.
I'm happy to report that I'll be traveling to Copenhagen, Denmark to talk about Roller and Project SocialSite at the Open Source Days 2008 conference on Oct. 3-4 this year. I'm going to tell the story of Roller and lessons learned along the way and then talk about blogging in the age of social networks and how to social-enable Roller with the SocialSite widgets. The session is called titled The once and future Roller.
I remember how freaked-out I was to see the referrer hits start rolling in (pun fully intended) from http://blogs.sun.com/roller. I can't believe it's been four years already. Thanks to Linda for the reminder.
I asked for Google Summer of Code (GSOC) ideas for Roller a couple of days ago. Below are links to the proposals I thought were good enough to volunteer as possible mentor for and to submit. The deadline is tomorrow, so you've still got time to suggest additions to the list.
Here's the full list of Apache GSOC proposals.
I've been busy as can be, working on launching a new project at work, lots of presentations and not enough code. March seems to have snuck up behind me, spun me around and punched me right in the stomach. Not good. I need more time. Slides for my Advanced Roller talk are due today, ApacheCon EU is a little over a month away and JavaOne is right around the corner (more about that later). That's enough whining. Now, it's my duty to remind you that there's still plenty of time to register for ApacheCon EU in beautiful city of Amsterdam, so here goes:
And in other news, the ApacheCon US 2008 Call For Papers is now open. This year ApacheCon US will be November 3-7 in New Orleans, Louisiana.
I mentioned the Social Software for Glassfish (SSG) EA2 release before the winter break, but I never got around to posting any details. Since then some documentation has appeared, Manveen Kaur blogged it, The Aquarium too and now screen-cast master Arun Gupta has created an excellent Social Software for Glassfish screencast that walks you through the features in this very early access release. Now I don't have to say nearly as much.
SpringSource, the company behind the Spring Framework, has purchased Covalent, a company that provides support for Apache projects. This popped up on my radar because Covalent offers support contracts for Roller and in fact, SpringSource CEO Rod Johnson mentioned Roller specifically when talking about the deal (emphasis mine):
Rod Johnson: "We want to support the open source software that people want to use," including the Geronimo application server, the Axis Web Services Framework from Apache, and the Apache Roller Blog multi-user blogging software."
Sounds like a good thing and hopefully it will improve the support story for all Apache products. In fact, it could be a really good thing for Apache projects because Rod's philosophy is that you can't support software unless you are one of the software's creators.
Rod Johnson: "You can't divorce the process of maintaining software from the process of creating software...That's not the future of enterprise open source - unless open source has no future"
Based on that, we can assume that SpringSource will now be paying committers to do creative work on Roller and other Apache projects so that they can provide the best maintenance and support of those same projects. Right? Maybe I'm too naive -- after all, I figured having Roller in Lotus Connections meant IBM would be contributing.