Blogging Roller

Dave Johnson on open web technologies, social software and Java

Above: a random selection of photos from my Flickr photo-stream.

Tuesday Dec 20, 2011

Rollarcus: from 9 to 2

rollarcus github logo

I made some progress in Rollarcus over the past couple of weekends, but not a lot. This makes me wonder how I ever found the "nights and weekends" to get Roller started in the first place, but that's a different topic.

What I've done so far in Rollarcus is to simplify things. While I was at Sun, we split Roller up into a number of parts: a weblogger part for blogging, a planet part for RSS/Atom aggregation, a core part for things common to both. After Sun, I worked to move Roller to Maven and further split things up into a total of 9 Maven modules including an assembly for building the release. Now, I think that all these modules are unnecessary -- we never shipped a Roller-Planet application and nobody wants to use parts of Roller -- and even if they did, the modules did not really help.

Here's the before view: apache/roller

Here's the after view: snoopdave/rollarcus

So, in Rollerarcus, I've merged all the modules. Except for one "test utilities" module, all Java code, JSPs and other code is now in one module and much easier to deal with. Next, I'm going to attack the (what I consider to be) unnecessary dependencies and drastically reduce the number of jars in WEB-INF.

Saturday Dec 03, 2011

Fork it all

I just forked Roller on Github.

The new project is called Rollarcus and is mostly just an experiment and, I hope, a learning experience. I've got some ideas about stripping Roller down to it's core and making it more fun and easy to develop and deploy. We'll see how far I get.

arcus rolling cloud
In case you don't already know, an arcus cloud is a low, horizontal cloud formation.

Saturday Nov 26, 2011

Upgraded to Roller 5.1-dev

I just upgraded this site to Roller 5.1-dev, Subversion rev 1175172. This unreleased version of Roller includes new mobile theming capability (mentioned in my previous post), allowing a theme to define both a standard and a "mobile" version of each weblog page. I haven't added mobile pages for my blog yet, but that is what I plan to do next.

Saturday Sep 03, 2011

GSOC 2011: Mobile-enabled themes for Roller

I'm going to break blog silence now to tell you about Apache Roller and Google Summer of Code 2011, which just wrapped up about a week ago.

GSOC logo

This year we were very fortunate to get a another highly motivated and smart student, Shelan Perera, and an good proposal as well: Mobile-enabled Templates. Over the summer Shelan designed and implemented a new feature for the Roller blog server, one that enables theme authors to provide an alternative "mobile" template for each page template in a Roller blog theme. You can see a screenshot of the new Edit Template page in Shelan's blog How to change template codes in Roller.

Now, when a page request comes into Roller, Shelan's code determines if it's from a mobile device and, if it is, switches to a mobile template, if one is available. There's also an easy way for template authors to create a button to allow users to switch to the "Standard" site instead of the mobile version. The screenshot on the right, of Roller with a mobile theme comes from Shelan's most recent blog.

screenshot of a mobile Roller theme

It was an honor to act as mentor for this project, and fun talking to Shelan via Skype most Fridays. I'm looking forward to getting this on my blog, and getting this cool new feature into an Apache Roller 5.1 release sometime soon. Thanks, Shelan! And, thanks to Google for running the most excellent Summer of Code program.

Wednesday May 25, 2011

Apache Roller 5.0 released

(cross-posted from the Roller project blog)

Here's some more happy Roller news. Apache Roller 5.0 has been released!

The major new feature in Roller 5.0 is Media Blogging, a set of enhancements to Roller's file upload and management capabilities. Also included in 5.0 are simple multi-site support, OpenID and OAuth support for Roller's AtomPub interface. All major dependencies have been updated and Roller now uses Maven for build and dependency management. You can find a summary of Roller 5.0's new features on the Roller wiki.

The road to Roller 5.0 has been a long one and if you are interested the history, you might want to check Dave Johnson's What's New in Roller 5.0 presentation from ApacheCon US 2009. Roller 5.0 includes contributions from contributors from Google Summer of Code, San Jose State Univ. and the usual case of Roller committers. Thanks to all who contributed to Roller 5.0 over the years.

To download Apache Roller 5.0 and documentation, visit the Apache Roller download page at the Apache Software Foundation's website.

Monday May 23, 2011

Welcome new Apache Roller committer Shelan Perera

(cross-posted from the Roller project blog)

Here's some happy news. A new committer has joined the Apache Roller project. Shelan Perera has been helping out on the mailing lists, submitting fixes and recently won a Google Summer of Code (GSOC) project to add mobile blogging features to Roller. He was nominated for committer-ship and voted in on May 5, 2011.

Shelan's GSOC project is to add mobile theming capabilities to Roller. You can find the Mobile Theming for Roller proposal on the GSOC website. Shelan is seeking feedback on requirements and design for the project, and keeping the community in the loop by running a blog to journal his progress: Apache Roller Mobile Platform.

Welcome Shelan!

Wednesday Feb 09, 2011

Roller 5 and WebSphere 8 (beta)

Websphere logoIn my quest to get Roller running on the latest in Java EE servers, the last server I tacked was the WebSphere Application Server. Unlike Glassfish and JBoss, WebSphere's Java EE 6 offering is not available in final form yet. Java EE 6 support is coming in WebSphere 8. So, for this exercise I used the WebSphere 8 beta, which was made available in July 2010. In this blog I'll describe how I approached the problem what I learned along the way.

[Read More]

Thursday Jan 20, 2011

Roller 5 and JBoss 6

JBoss logo In my quest to make Roller work on Java EE 6, the next server that I tackled was JBoss 6. In this blog I'll describe how I approached the problem what I learned along the way.

Tested with Hibernate JPA

Roller uses JPA for database storage and specifically the Apache OpenJPA implementation. I knew that JBoss uses the Hibernate JPA implementation and I suspected that there would be JPA portability problems, so I decided to run Roller's JUnit tests against Hibernate JPA. There were many test failures and fortunately, the failures were easy to fix.

[Read More]

Monday Jan 10, 2011

Roller 5 and Glassfish 3

Duke and GlassFishIn my quest to make Roller work on Java EE 6, the first server that I decided to tackle was Glassfish 3. In this blog I'll describe how I approached the problem and what I learned along the way.

Tested with EclipseLink JPA

Roller uses JPA for persistence and specifically the Apache OpenJPA implementation. I knew that GlassFish uses the EclipseLink JPA implementation and I suspected that there would be JPA portability problems, so I decided to run Roller's JUnit tests against EclipseLink JPA. I wanted to find and fix those problems before even touching GlassFish. The tests ran and there were many JPA related failures and errors, most due to differences in the way that EclipseLink handles bi-directional relationships and the use of unmanaged objects.

[Read More]

Wednesday Jan 05, 2011

Roller 5 and Java EE 6

It's hard to believe, but I've been dorking around with Roller, the blog software that powers this site, for almost 10 years now. I started in summer 2001. In the past couple of years, I've had a lot less time to work on Roller. I devoted some of that time to mentoring student developers, which was fun and rewarding. I also spent time making Roller more consumable for developers by making it easier to build, run and deploy to modern Java app servers, which was not really fun but was definitely educational, bloggable even.

[Read More]

Tuesday Jan 04, 2011

Apache Roller 5.0 RC3

On the last day of 2010, I made available the third release candidate for Apache Roller 5.0. The main difference between this new candidate and the previous one is that the new RC3 runs on Java EE 6 servers: Glassfish 3, JBoss 6 and Websphere 8 (currently in beta). Making this happen took a lot more work than I expected and I'll blog about that over the next couple of weeks as it is an interesting case study in Java EE 6 portability.

Here's the announcement:

Apache Roller 5.0 Release Candidate RC3 is now available for testing.
Note that this is NOT a release of the Apache Software Foundation or
anybody else; this release candidate is for testing purposes only and
not recommended for production.

   What's new in Roller 5.0:
   https://cwiki.apache.org/confluence/display/ROLLER/What's+new+in+Roller+5.0

   Change list (issues resolved since 4.0)
   http://bit.ly/gAhDWR

   Issues resolved since last release candidate (RC3)
   http://bit.ly/dZ27Nx

   Signed binary and source files. Also, documentation in PDF form
   http://people.apache.org/~snoopdave/apache-roller-5.0/

The biggest change in RC3 is the new support for Java EE 6 application
servers: Glassfish 3, JBoss 6 and Websphere 8 (beta). I've been able
to verify that Roller runs on all of those servers, and I updated the
installation guide to explain in detail how you install on Glassfish,
JBoss and WebSphere.

If you would like to help out then please test RC3, discuss the
problems you encounter here and file specific bugs with steps to
reproduce in the Roller JIRA bug tracking system.

Thanks,
Dave
That announcement is available here: http://markmail.org/message/my5wbld2xqvhqpyg

Sunday Oct 03, 2010

Apache Roller 5.0 RC2

A couple of weeks ago, I made a second release candidate available for Apache Roller 5.0. Here's the announcement (also available at http://s.apache.org/apacheroller50rc2):

Apache Roller 5.0 Release Candidate RC2 is now available for testing. 
Note that this is NOT a release of the Apache Software Foundation or 
anybody else; this release candidate is for testing purposes only and 
not recommended for production.

   What's new in Roller 5.0:
   https://cwiki.apache.org/confluence/display/ROLLER/What's+new+in+Roller+5.0

   Roller 5.0 JIRA change list:
   https://issues.apache.org/jira/sec ... sion=12313828

   Signed binary and source files
   http://people.apache.org/~snoopdave/apache-roller-5.0/

   Issues resolved since RC1:
   http://bit.ly/9eWjJk

If you would like to help out then please test RC2, discuss 
the problems you encounter here and file specific bugs with steps to
reproduce in the Roller JIRA bug tracking system.

I'm running RC2 on this site and it seems to be holding up just fine so far.

Saturday May 08, 2010

Software has feelings too

Be nice to your software ;-)

software_has_feelings_too.png

Unfortunately, she's right on the money with that remark.

Wednesday May 05, 2010

MarsEdit 3 and Roller 5

MarsEdit3Icon128.png

Mac-based weblog editor MarsEdit v3.0 has just been released by Red Sweater Software.

Because MarsEdit v3.0 supports the Atom Publishing Protocol (APP), it works with Apache Roller 5.0RC1's new and improved AtomPub support right out of the box. I'm writing this post in MarsEdit right now and publishing to Roller 5 via APP.

MarsEdit includes a rich text editor and supports image upload via drag-and-drop into the editor. You can edit a draft post locally or use Send to Blog to send the draft to the server for further editing before publish. You can specify multiple tags for your post and MarsEdit will send them to Roller as tags.

Generally, I prefer to edit my HTML by hand but for somebody who wants simplicity and a familiar Mac interface, MarsEdit v3.0 looks like a great choice. And the HTML it generates doesn't look too bad.

Here's a screenshot that shows what MarsEdit looks like when editing a post:

marsedit-roller.png

Here are the settings I'm using (URLs changed to protect the innocent).

marsedit-settings.png

MarsEdit is $39.95 and there's a 30-day free and fully-function trial version available too.

Monday May 03, 2010

Apache Roller 5.0 RC1

It's been a while since the BETA (over 6 months) but we now have a release candidate for Apache Roller 5.0 available for testing. This site is running Apache Roller 5.0 RC1 right now, as you can see in the itty bitty screenshot below:

50rc1.png

Here's a What's New in Roller 5.0 page that summarizes what has changed since 4.0. One thing I forgot to mention on that page was that Roller now uses ROME Propono 1.0 for AtomPub and Roller 5.0's AtomPub support has been successfully tested with MarsEdit and Windows Live Writer.

Tuesday Apr 27, 2010

Roller on OpenSolaris / Glassfish

Dave Koelmeyer offers a nice step-by-step guide to getting Roller up and running on OpenSolaris, Glassfish and MySQL.

Although WordPress undoubtedly has more bells and whistles, with themes and plug-ins galore, I find Roller quicker and less fussy in operation, with far more comprehensive documentation – and its scalability cannot be denied. This guide will enable you to install and run Apache Roller for the purposes of evaluation and tinkering.

We will be using OpenSolaris snv_134 x64, with Apache Roller 4.01, Glassfish v2.1, and MySQL 5.1.

Link

Sunday Mar 14, 2010

Built with Maven

Maven Logo

I was a Maven hater and resisted it for a long time but over the years Maven has gotten much better, it's well supported in IDEs and as far as I can tell, Maven has replaced Ant as the de facto build system for Java projects. If you want new developers be able to easily build, debug and run your code via command or their favorite IDE then Maven is the way to go, and that's especially true for open source projects like Roller.

That's why I spent a couple of weekends learning Maven and converting Roller's build process from Ant to Maven (ROL-1849). The process of conversion wasn't too difficult. Getting dependencies under control was a pain, but it believe it will be a one time pain and a worthwhile one. What took the most time was figuring out how to get Maven to start Derby, create the Roller tables and then run Roller's JUnit tests. Also, getting Maven's Jetty plugin setup to run Roller was a little tricky but hopefully also a one-time pain. The result is that Roller now uses a standard and well known directory structure, dependencies are managed and it's easier for developers to get started with the codebase.

If you have Maven and Subversion installed on your computer then these commands will fetch the Roller source code, compile the code, run all JUnit tests and then build the Roller webapp:


   svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
   cd roller_trunk 
   mvn install

And once all that is done, the following commands will start the Jetty app server, start the Derby database and start Roller at http://localhost:8080/roller, ready for testing, experimentation, etc.


   cd weblogger-web
   mvn jetty:run-war

I think that's pretty damn useful.

Here are some articles/links that influenced my thinking on Maven recently:

  • Comparing Build Systems - Adrian Sutton concludes that Maven is too much work but "the consistency in how a project is built that the Maven project has brought to the Java would is absolutely revolutionary"
  • Maven in our development process - Sherali Karimov explains how Atlassian and says the need for Maven training is "the most important and most overlooked issue of all."
  • Sonatype - The Maven Company. Founded in 2008 by Jason van Zyl, the creator of Maven. Offers training, support and the Nexus Professional repo manager.

Thursday Feb 25, 2010

Roller Beginner's Guide available

photo of beginner's guide to Apache Roller 4.0

I blogged about Alfonso Romero's Apache Roller 4.0 Beginner's Guide book before. It's a great resource for folks who want to get the most out of their Apache Roller-based blogs, and not just beginners. As you can see in the photo on the right, I've got my copy. You can get yours directly from Pakt publishing:

Buy a copy of Beginner's Guide to Apache Roller 4.0

To publicize the book, Pakt publishing has been publishing some useful excerpts and even a complete sample chapter online. Here's summary of the excerpts so far:

If you've been following Roller development you know that Roller 5.0 is on the way. Most of the changes in Roller 5.0 are "under the hood" so 5.0 won't make Alfonso's book obsolete. Except for a couple of pages in Chapter 5 "Spicing Up Your Blog" that need updated screenshots, I believe everything in the book applies to Roller 5.0 as well.

Thursday Dec 17, 2009

Apache Roller 4.0 Beginners Guide

Here it is:

Roller book cover

Isn't that cool? An actual book on Apache Roller and I did not have to write it. I did review the drafts and it looks good, especially for beginners. It's filled with helpful step-by-step instructions and screenshots. I also submitted a forward, but I don't have a copy of the final book yet so I'm not sure my text made it in (I'd love a hard copy... hint hint). Anyhow... big congratulations to Roller user and author Alfonso Romero.

Tuesday Sep 22, 2009

Roller status, CC: world

It's been a while since I have blogged about it, but I haven't completely stopped working on Roller. In case you're wondering what's up in Roller-land, here's an update based on an email I recently sent to the Roller dev mailing list.

I've been doing some weekend and evening work on Roller 5.0 to get it ready for release. Ganesh and Tanuja did great work on the new Media Blogging features, but there were a couple of significant pieces missing such as data migration and I18N. I had hoped to finish that work during the summer, but life got in the way. Now I'm scrambling to wrap things up. I'll be speaking at ApacheCon US 2009 in November on the topic of What's New in Roller 5.0, so I'd really like to have a 5.0 release candidate ready by then.

Just as a reminder, here's what's currently on the 5.0 feature list:

  • Media Blogging Support
  • Externalizable User Management
  • OpenID Support
  • Tag Data API
  • OpenSearch
  • OAuth for AtomPub
  • See the full list on the Roller wiki

Except for Media Blogging, all of those features are complete. My plan is this. I'll do some more cleanup work on Media Blogging, which is the major new feature in 5.0, fix some bugs and then I'll cut an RC.