O'Reilly Tools of Change 2009: Tim O'Reilly makes the argument for Open Publishing from Open Publishing Lab @ RIT on Vimeo.
Tuesday, February 24, 2009
O'Reilly Talks Open Publishing
O'Reilly Tools of Change 2009: Tim O'Reilly makes the argument for Open Publishing from Open Publishing Lab @ RIT on Vimeo.
Interview: Carl Malamud's Grassroots Campaign for Public Printer of the United States
I just published an interview with Carl Malamud. Malamud has been working in gov't transparency forever (since I was in middle school in the 1980s). Malamud is trying to follow in the footsteps of Augustus E. Giegengack who lobbied for his own appointment to the same office under the FDR administration. If you don't know about Carl Malamud's work, take a look at public.resource.org. He has an impressive record, and I believe he's the right guy for the job. Malamud as Public Printer of the United States would help bring real change to the Federal Government.
Listen to my Interview with Carl Malamud on O'Reilly Broadcast
Sunday, February 22, 2009
CJCOOK: 0.14: Bulk of Jakarta References Removed
This is a quick follow-up to release 0.13. Most of the references to Jakarta are now removed from the book. Some projects, like the now defunct Slide or the very inactive ORO, are still in Jakarta. Projects like Lucene and HttpClient which were both parts of Jakarta when the original book was published have been updated, and I'm pointing to the project sites for Apache Lucene and Apache HttpClient (or is it HttpComponents? See a later update.)
Read Commons Java Cookbook Release 0.14 Online
Next steps:
- Changing all internal link elements to xrefs and getting rid of hard-coded section references. For some reason, the XML I got back from O'Reilly has hard-coded text in link elements that reference section numbers. So if you see a reference to Section 1.4, click on it, and end up looking at Section 1.2, this is because I must have deleted a section. DocBook has the facility to generate XRef text at render time so I have to modify all the internal link elements to xrefs and set the label style.
- Write a Unit Test that compares the text of a ulink element with the target URL. If the text of a ulink begins with "http://", I need to make sure that the anchor tag is going to link to the exact same URL. There are already a few examples in the book where there are inconsistencies between the URL that is printed and the URL that is being linked to.
- Write a Unit Test that tests all ulinks for 404s. This is important for consistency, I need to figure out a way to do this automatically for other books as well, so I'm thinking about a way to do this in a Maven plugin.
Long Term:
I can't tell if the hc.apache.org project has actually released 4.0 or if we're stuck in a perpetual beta. I don't want to update the book to talk about httpcore until I'm sure it isn't going to change. I do know that I have to circle back at some point and:
- Update the Http/DAV chapter: Change it to reference the new Http Components Project
- Update the Http/DAV chapter: Change the sections that discuss Jakarta Slide to reference Apache Jackrabbit
- Update the Lucene Samples to use the Latest Release: Right now this part of the book references version 1.9.1 because there was an API change wrt configuring the Document.
Issue Tracker
I need an issue tracker for this project, and I can't decide between Trac and JIRA. On the one hand, I like Trac's simplicity, but, on the other hand, I'm pretty sure I could benefit from some of the subtask stuff that is available in Jira. Decisions, decisions, decisions....
Saturday, February 21, 2009
CJCOOK: Removing References to Jakarta (up to ch5)
If you haven't noticed, Jakarta was dismantled. It now contains a shell of projects which are largely inactive. The community which was Jakarta once contained hundreds of committers and was the center of open source Java. It was Jakarta that produced Ant, Maven, Struts, Log4J, Lucene... among others. While Jakarta was an interesting crucible for innovation, it didn't scale very well and there were an endless series of flamewars and management problems due to the fact that it was just too large for its own good. Sometime in 2003 or 2004, a decision was made to split Jakarta into separate TLPs and Commons eventually moved to Apache Commons (http://commons.apache.org).
Release 0.13 of Common Java Cookbook updates everything up to Chapter 5, removing references to "Jakarta Commons" components in favor of "Apache Commons". Where a project was called "Jakarta Commons Collections" it is now called "Commons Collections".
Next step: I'll follow this release up with a 0.14 that removes all of the references to Jakarta XYZ.
CJCOOK: Updated All Component Versions
| Component | Version | Notes |
|---|---|---|
| Commons Beanutils | 1.8.0 | |
| Commons Collections | 3.2.1 | |
| Commons Digester | 1.8 | |
| Commons HttpClient | 3.1 | Will update to 4 as soon as the HttpCore stuff is released |
| Commons JEXL | 1.1 | |
| Commons JXPath | 1.3 | |
| Commons Lang | 2.4 | |
| Commons Logging | 1.0.4 | |
| Log4J | 1.2.15 | |
| Commons CLI | 1.1 | |
| Commons Configuration | 1.6 | |
| Commons IO | 1.4 | |
| Commons Math | 1.2 | |
| Commons Net | 2.0 | |
| Velocity | 1.6.1 | |
| Slide | 2.1 | We're replacing this with Jackrabbit |
| Freemarker | 2.3.15 | |
| Commons Betwixt | 0.8 | |
| Lucene | 1.9.1 | We need to upgrade this item. |
| Component | Version | Notes |
Friday, February 20, 2009
Common Java Cookbook: 0.11: Updated Lang and App Infra Component Versions
Open Source Writing: Part I: A Few Problems with Publishing...
Problem: Driven by the Physical Artifact
While most writing projects are governed by the limitations of the book as a physical artifact, books like Maven: The Definitive Guide and Common Java Cookbook choose to fully embrace the idea that a book is an electronic documentation unaffected by the constraints introduced by the printing process. Most programming books you encounter today have to have a practical deadline after which no changes are introduced. In other words, if you are writing a book that needs to be printed in lots of five thousand and shipped to book stores, your process is always affected by the idea of the book as a static, physical object. You have to "finish" the book by a set deadline. Updating and radical changes to a book which has already been printed tend to decrease book, and (quite often) the original authors retain no rights for redistribution online. This attachment to the physical object is driven by the economic realities of the publishing industry, but it creates an odd situation when you are writing about a rapidly moving open source project. There is a large disconnect between how we develop open source software and how we write books about open source software. Successful open source projects usually don't have a set release date, software like Maven is released when it is ready. Imagine how awful open source would be if everyone had to run around like headless chickens to cut a CD for something like Apache HTTPD. Imagine if a Maven release vote were predicated by "People, if we don't send the Maven ZIP file to the CD factory by next week, they might cancel our contract. Can I get three +1 votes, now." It just seems odd that we have to dance around publisher deadlines when we are writing books about collaborative, unpredictable, schedule-less open source projects.Problem: Deteriorating Economic Model
Take, as an example, the Jakarta Commons Cookbook. I wrote this book between 2002 and 2003, and I probably invested about an entire year in the effort. It was my first book, so progress was very, very slow. The book was published, I felt great about the process. I think every first-time author has this initial excitement about having published a book. I didn't write the book for acclaim, I wrote it because it was my way of giving back to the community. A year passes, and you get the sales figures back and you, the naive author, are impressed that five thousand people bought the book. You get a flood of email from people who have read the book, maybe 10% are fuming mad at typos and the other 90% is just happy to have read the book. The publisher has a totally different view, 5,000 copies is actually viewed as a quarter success, the publisher would have liked to sell 10,000. While you feel great about the idea of a community of 5,000, the publisher is lukewarm about the idea of printing a second edition. Right right right, 5,000 is a loser? Visualize 5,000 people in a line all holding $20.... If that's a failure, if that doesn't justify a second printing, then something is wrong with the model. These days, publishers don't like to commit to books that are not going to move a significant number of copies. It is becoming more and more difficult to sell a good book to a publisher because as the open source world continues to evolve every topic becomes a niche topic with a limited audience.Problem: Where's my community....
When you sell 5,000 copies of a book, you certainly get feedback both good and bad... But, you don't get the customer relationships. You don't get a chance to interact, and you certainly don't establish any sort of persistent HTTP 1.1 connection with your readership. Publishers provide some tools to enable this support: forums, blogs, etc. If you've grown used to the "intimacy" and unstructured creative anarchy of open source communities, you'll feel a bit stifled. Efforts like Jono Bacon's The Art of Community are an attempt to address this, and publishers like Pragmatic have done a good job of creating that sense of community... But, as an author, you will want to either create that community yourself or (better yet) integrate that community with the community that has already developed around the project you are supporting. Publishers serve an important curation function they provide the necessary work to ensure that the book meets production standards has come to be expected in a book, but they often don't do a great job organizing a community. Just like an open source project manages software production, I think authors and open source projects should manage a community of readers. Publishers used to be a necessary intermediary, but as the importance of the book as a physical artifact continues to decrease, I think we're going to see authors take more initiative and publish works online.Tuesday, February 17, 2009
Common Java Cookbook: Release 0.10: Book Examples ZIP
- Go to the Online Common Java Cookbook.
- Click on "Download Book Examples" in the upper right-hand of the page header
Monday, February 16, 2009
Common Java Cookbook: Release 0.8: Working External Links
Common Java Cookbook: Release 0.7: Fixed ID References
Common Java Cookbook: 0.7: Consistent Internal ID References from Tim O'Brien on Vimeo.
Common Java Cookbook Arrives
Common Java Cookbook: Hello World from Tim O'Brien on Vimeo. Stay tuned.
