Dave Johnson on open web technologies, social software and Java
I've been working at Apigee since September 2013 and one of the things I love most about my new job is the fact that I'm actively contributing to open source again.
I'm working on Apache Usergrid (incubating), an open source Backend-As-A-Service (BaaS) that's built on the Apache Cassandra database system. Apigee uses Usergrid as part of Apigee Edge (see the Build Apps part of the docs).
Apigee contributed code for Usergrid to the Apache Software Foundation back in October 2013 and Usergrid is now part of the Apache Incubator. The project is working towards graduating from the Incubator. That means learning the Apache way, following the processes to get a release out and most importantly, building a diverse community of contributors to build and maintain Usergrid.
One on the most important parts of building an open source community is making it easy for people to contribute and and that's why I submitted a talk to the ApacheCon US 2014 conference (April 7-9 in Denver, CO) titled How to Contribute to Usergrid.
The talk is intended to be a briefing for contributors, one that will lead you through building and running Usergrid locally, understanding the code-base and test infrastructure and how to get your code accepted into the Usergrid project.
Here's the outline I have so far:
I'm in the process of writing this talk now so suggestions and other feedback are most welcome.
Ten years ago on this day, O'Reilly published an article that I wrote called Building an Open Source J2EE Weblogger, the article that introduced the Roller weblogger (now known as Apache Roller) to the world. It changed my career and my life in a bunch of nice ways and 10 years later I'm still benefiting from my choice to create Roller and write that article. So you can get a taste of the times, here's the intro:
Building an Open Source J2EE Weblogger: As a Java developer, you should be aware of the tremendous wealth of open source development software that is available for your use -- even if you have no desire to release any of your own software as open source. In this article, I will introduce you to some of the most useful open source Java development tools by showing you how I used these tools to develop a complete database-driven Web application called Roller.
Roller fits into the relatively new category of software called webloggers: applications that make it easy for you to maintain a weblog, also known as a blog -- a public diary where you link to recent reading on the Web and comment on items of interest to you.
The Roller Web application allows you to maintain a Web site that consists of a weblog, an organized collection of favorite Web bookmarks, and a collection of favorite news feeds. You can define Web pages to display your weblog, bookmarks, and news feeds. By editing the HTML templates that define these pages, you have almost total control over the layout and appearance of these pages. Most importantly, you can do all of this without leaving the Roller Web application -- no programming is required.
I've written and talked about Roller and the history of Roller numerous times. If you're interested in learning more about it here's my most recent Roller presentation, which covers Roller history in some detail:
These days, Roller isn't really thriving as an open source project. Wordpress became the de facto standard blogging package and then micro-blogging took over the world. There are only a couple of active committers and most recent contributions have come via student contributions. Though IBM, Oracle and other companies still use it heavily, they do not contribute back to the project. If you're interested in contributing to Roller or becoming part of the Apache Software Foundation, then Roller needs YOU!.
Survey says 80% of New Relic's Java customers choose open source app servers over expensive bloat-ware.
Server wars: Open-source Java vs Weblogic and WebSphere | Software, Interrupted - CNET News: Overall, it's not surprising that users who are deploying their applications to the cloud are more likely to use open source, if for no other reason than that licensing is far simpler. Additionally, there are Amazon Machine Images (AMIs) available for most open source stacks, making it very easy to choose open source over a traditionally licensed application server.
Latest links, favorites and photos shared elsewhere:
Chris Hostetter: Don’t Use Java 7, For Anything shared 06:21:12 PM 28 Jul 2011
In 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]
In 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.
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]
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:
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:
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.
Crammed into one post...After a month of blog neglect, my automatic Latest Links from my Delicious.com account started to pile up. Back in the glory days of this blog, I blogged about things instead just saving links or tweeting about them. I realized that, by adding some commentary/opinion for each, I could turn a month's worth of links into a month's worth of blog posts and thus gain total absolution for my sin of going a full month without a post. So that's what I did. [Read More]
I've attended every JavaOne since 2004, but this year I've got new job and a new conference to attend. This year I'll be traveling to Orlando, FL and attending the Rational Software Conference also known as #rsc2000 in the twit'o'sphere.
I'm not going to be giving a talk, but I will be manning a demo pedestal and showing some of what I've been working on in my first couple of months at IBM: working on getting Rational Team Concert and other Jazz-based products to work well with Lotus Connections, IBM's social software suite which includes communities, forums, blogs, bookmarking, social networking and wikis (coming soon in Connections 2.5).
Why would you want to use Team Concert with Connections? It's all about connecting developers to community, helping developers use social software tools to inform, share and collaborate with the wider community of people that support, manage, sell and use the software.
The tentative plan that we've outlined for all (registered users) to see on the Jazz.net is all about making it easy to setup and integrate community infrastructure for a new software project.
For example, wouldn't it be nice if, when you setup a new project in Team Concert you'd have the option of setting up an integrated Lotus Connections community complete with a project blog, discussion forum, wiki space and shared bookmarks? Shouldn't those blogs, forums and wikis be searched when you do a project search and shouldn't it be dead-simple to fire-off a blog entry or forum post to start a community conversation about a work-item or any other Team Concert artifact? We think so and we think that's just a start; there's lots more we can do.
If you're going to be at RSC 2009, please stop by and say hi. I'll be on duty from 5-8PM on Monday and most of the day Tuesday. Whether you're there or not, if you've got ideas about developer tool and social software integration, I'd love to hear from you.
Nick Lothian on ROME dev:
I've gone and built some preview jars for the upcoming ROME 1.0RC2, ROME Fetcher 1.0RC2 and Modules 0.3 release.
Those jars can be found here: https://rome.dev.java.net/servlets/ProjectDoc...
I've created source and javadoc jars as well as the normal jars - the idea being that I'll get them uploaded to some maven repository.
If you have some spare time, please take a look at these and test them and let me know of any problems. Assuming there are no big issues found I'd like to do a proper release in a couple of days.
Guess that means I should test Propono with RC2.
Tim Bray: What Sun should do: Sun is going through a lousy spell right now. Well, so is the worldâ€™s economy in general and the IT business in particular, but this is about Sun. This is my opinion about what my employer should do about it.
It takes a lot of guts to write a piece like that and I'm really glad Tim did it. I'm going to walk out on the same limb and agree with pretty much everything Tim wrote. Tim wants Sun to focus like a laser on providing the best web platform around with Solaris, storage offerings, Java/Hotspot, Glassfish, MySQL and Netbeans for Java, Ruby, PHP, Groovy, etc. tooling. He writes:
Itâ€™s easy to understand how our servers, CMT and x86, and the Solaris OS, fit into the Web Suite. All the software, including the HotSpot, GlassFish, and MySQL runtimes, needs to be obsessively tuned and optimized to run best in the context of the Suite. Obviously, the Suite will also include Ruby and Python and PHP runtimes, similarly tuned.
All of Sunâ€™s software tooling should have a laser focus on usability, performance, and ease of adoption for the Web Suite.
I agree, but as a web geek I guess I'm pretty biased.
Tim doesn't shy away from the critical question of what Sun should stop doing. Tim says Sun should give up on the client-side, dropping JavaFX and JavaME (and OpenOffice too, I presume). Here's Tim on JavaFX:
For actual business apps, the kind that our servers spend most of their time running, the war for the desktop is over and the Web Browser won. I just totally donâ€™t believe that any combination of Flash and Silverlight and JavaFX is going to win it back.
I can't say I disagree with that either. Cutting JavaFX and JavaME would be extremely tough and painful decisions, but somebody's going to make to make some of those. Looking at things from Tim's web-platform-only point of view, they make sense. Sun needs only enough client-side software to keep Solaris attractive to developers and to support great development tools on all the platforms that web developers love.
Congratulations to the Apache Abdera team, who've just graduated to full Apache top level project status. The don't have the new site at abdera.apache.org up yet and they're still not quite at 1.0 yet, but this is a major milestone. They've got the best Atom format and protocol toolkit around, in my opinion.
Next year there will be two CommunityOne events in the US of A; one in New York City on March 18 and the other, coinciding with JavaOne week in June 1 in San Francisco. Here's the call for papers link. The call closes on December 11.
Meena Vyas, Murthy Chintalapati and Allen Gilliland just published an article on BigAdmin that describes the architecture of blogs.sun.com, a Roller, Sun Web Server, Memcached and MySQL based site that averages 4 million hits a day with its two SunFire T2000 servers at 97% idle. You can get the article for free (registration required) here: Sun Blogs: A Sun Java System Web Server 7.0 Reference Deployment
From the Seam Framework team's wiki page on JSF2 major issues:
The JSF2 expert group should work closely with the JSR 311 expert group to define overlapping integration points (unified configuration) and programming models, so that a JSF implementation can work seamlessly with a JAX-RS implementation. For example, a @Path annotated POJO should work as a JSF backing bean without any additional configuration. A JSF application programmer should be able to expose RESTful remote APIs easily.
Via Matt Raible
We demonstrated the Project SocialSite widgets in Roller at JavaOne, but we didn't show much other than just the basic widgets. We modified a Roller front-page theme to include a people directory, added a profile page for each user and slapped the widgets on the page. It was pretty rough, as you can see on the right, like our other SocialSite demo vehicles.
This week, I'm working to put together a much better demonstration, something useful enough to deploy to our internal blog site at Sun. Since I have limited time and I really need to get back to working on the SocialSite widgets and web services, I've been thinking about minimum set of features needed to add some value. Here's what I think we need:
Most of the above items should be pretty easy with the SocialSite widgets, but I'm sure I'll run into a snag or two at least. I always do. I'll post again next week and let you know how far I got.
On Wed, 19 Mar 2008, David M Johnson said:
I think the goal should be to make JSF applications RESTful by default, with proper use of GET and POST, i.e. only use POST when application data is changing, not for component state. Another goal should be clean, book-markable URLs that only carry path-info and parameters needed by the application logic.
That's easy and the default situation with Rails, Grails, Struts, etc. How hard would it be to redesign JSF along those lines? Would it require EJB2 -> EJB3 level changes to JSF?
I suspect work on JSF 2.0 is too far along for this kind of change now, but it's nice to hear that the idea of a truly RESTful JSF is at least under consideration.