Mar 23, 2006
Jon Stahl wrote an excellent post recommending the construction of "cross-stack applications" rather than choosing a single platform and hanging all your applications off of it. In the post, Jon also lists some applications that have excellent APIs for integration.
The only thing I would add is that I am hoping a shift away from "Enterprise Applications" which connotes one big system that does everything for everyone (which leads to Enterprise Licenses and Enterprise Lock-In), to "Enterprise Architecture" which focuses more on interoperability and best of breed. I am also happy that I am seeing this meme more and more in the open source world because that is where open source has a distinct advantage over proprietary software which tries to add more breadth with every release.
However, this does raise an issue with the internal I.T. organizations that try desperately to increase efficiency by reducing the number of tools and frameworks that they need to know. This is largely a cultural factor. At some places I have worked, developers are always itching to try and learn new technologies. Other places have developers who are afraid of being made to look foolish by what they do not know. Being a long time consultant, you can probably guess what camp I fall into. For me, having a cross-technology perspective and constantly struggling with new syntax is what makes programming more interesting than just getting paid to type. But I recognize that is not for everyone.
Mar 22, 2006
For those still regretting that you missed Mitch Pirtle's Joomla! talk at the January BostonPHP Users Group, mark your calendars. BostonPHP will host Mitch again on Monday, April 03, 2006 At 06:30 PM. In his last talk Mitch told the story of Joomla!s break from Mambo and gave an introduction to using Joomla! This talk is going to be more technical.
I hope to see you there!
Mar 21, 2006
The new member membership fee for CM Professionals is increasing from $50 to $100 on March 31st. While this represents a 100% increase, it is still rediculously cheap for all the value you get. For those of you who are unfamiliar with CM Professionals, it is membership organization for content management practitioners and experts. The community is free of corporate bias and it is an excellent resource for asking questions and networking. Most of the luminaries in the field that I know of are already members. You should be too.
If you have been considering joining. Now is the time.
Sorry for the shameless plug. Now onto our regular programming.
Mar 21, 2006
[Unfortunately, this white paper is no longer available without registering with Optaros. The links in this post no longer work. If you don't mind being called by one of our nice sales people, follow this link and register. ]
My colleague, Sebastian Wohlrapp, and I just published a new white paper on Open Source Document Management Systems. Last year, it seemed that most of what open source content management had to offer was in the WCM and personal publishing space. A lot has changed and there are now several viable DMS options. This paper focuses on basic document management functionality needed by the typical knowledge worker as an alternative to what most companies resort to today: shared file systems and email. There is great potential for open source to answer the need for open/affordable/simple solutions that deliver this functionality. Several projects are well on their way.
The following projects were evaluated:
We evaluated the projects along the following dimensions:
-
Creating and storing content
-
Organizing content and collaboration
-
Search and accessing content
-
Usability
As usual, feedback is welcome.
Mar 14, 2006
I just got back from the Plone Symposium in New Orleans. At first I thought I was going as a spectator but due to a last minute scheduling conflict, I was asked to do a presentation on the world outside of Plone. What follows are my notes and thoughts about the conference. Apologies for the detail and roughness. These are half notes to myself but I figure they might be interesting/useful to others so here they are.
First of all, the venue. I commend Plone co-founder Alan for supporting the resurrection of New Olreans by holding the Symposium there. Probably most are interested in knowing what The Big Easy is like post Katrina so I will say a few words. The symposium was held at the Astor Crowne Plaza, which has not yet returned to its (I am told) usual splendor. The hotel is still hosting many storm refugees and there is a FEMA registration desk in the lobby. Housekeeping was hit or miss (either not at all or at 9:45 PM) and every once in a while the carpet seemed a little sticky. I didn't get much opportunity to venture outside of the French Quarter so I saw very little remaining damage or debris that I was certain was not related to Mardi Gras which happened just a few weeks before. The primary noticeable difference was the lack of people and energy that I remember from my last visit to New Orleans back in 1991. Bourbon Street still has loud music and drunken tourists wandering around and making out at the bar Â? just a lot less of it. I read a copy of the Times Picayune and every article was either directly or indirectly related to Katrina or Katrina recovery. The overall impression that I got was that the city was tired and still a little bit in a state of shock. OK, enough with the travel log. Onto the conference.
The attendance was decent for a Plone Symposium, which are generally smaller than the Plone Conferences. Many of the big names were there and there was a very nice feeling of community and openness. The program was packed with good content and I frequently found myself torn between two concurrent sessions. Generally the technical sessions got the majority of the audience.
Best Practices: Plone Development
By Joel Burton
If you are looking for a good Plone trainer, call Joel. I am told that Joel is doing a week long Plone Boot Camp in Seattle soon and that the cost is amazingly low. If this 3 hour session was a representative sample, then the Boot Camp should be excellent. Some of the best tips:
-
Make a Product for each distinct grouping of functionality and one Â?site productÂ? to hold the skin. This will make your feature code more portable across projects.
-
Use ArchGenXML to generate classes. It will also generate the scaffolding and directory structure that is required for Plone Products.
-
Use VERSION.txt. It will cause Plone to remind you to reinstall the product if anything changes.
-
Read the MySite and RichDocument tutorials.
-
Have a routine that packs your ZODB every week.
-
Configure your text editor to automatically create a .metadata file for your code. The .metadata file holds settings like cache, security, that you might be setting through the ZMI.
-
Use the form controller framework which is configured throuth the .vpy (for validation rules) and .cpy file (for request processing sequences).
-
Use SpeedPack for perfomance. This caches lookup of where to find skin assets.
-
When skinning Plone, consider three strategies:
-
CSS Only. Don't touch the zpt code. Just use CSS. You can do a surprising amount with just styles. The next day Alexander Limi walked through he did Plone.net all with styles.
-
Modify the existing Page Templates and CSS. Do this when you want to make deep modifications to the UI and you have total control over the HTML. Example: http://usepropane.com
-
Replace the normal view framework entirely. Rather than have the normal main_template.pt and macros, just use the HTML that you are given and use TAL syntax to reference content. Use this when you are given complex generated HTML and you don't have time to break it up into the Plone page rendering framework. This model makes the management view totally different from the Â?retailÂ? or public view. The HTML code may be more difficult to manage (if it starts out messy) but render times might be a little faster.
-
Leverage documentation generators. DCWorkflowGraph makes a nice picture of the workflow that you defined. EpyDoc generates Javadoc style documentation for your Python classes.
-
Use setup scripts rather than through the web configuration. The code goes in the setup directory of your project. Put it in a file called CustomSetup.py.
-
Check out the commercial but cheap Python editor Wing. In addition to having nice IDE functions, there is a great debugger that will allow you to visually step through your code with breakpoints and watches.
-
Use PTProfiler to debug your template code: http://debris.demon.nl/ptp
-
Use Zelenium (http://www.zope.org/Members/tseaver/Zelenium) for functional testing.
Make Plone Go Fast
By Geoff Davis
Geoff Davis talked about his CacheFu product which aggregates and simplifies all the various caching settings that you need to support a high traffic site. Plone.org runs CacheFu and Wichert Akkerman, who administers and was in the audience, testified to its effectiveness. Plone.org serves 100,000 pages per day from a single low powered machine without the help of clustering. Geoff demonstrated a performance increase from 4 requests per second to up to 300. One of the keys to the solution is to have as much content served up by Squid (a web proxy that caches images, styles, javascript and page content) and add some intelligence as to how long Squid should hold onto things. CacheFu overrides the default Plone HTTP headers which are read by Squid to determine what to cache and how long. CacheFu also sends Squid purge commands when things change.
CacheFu thankfully comes with a simplified sample configuration file that replaces the daunting default configuration file that comes with Squid. In the wild, Squid is used both to relieve the load on a dynamic website (as in this case) and to cache requests from an internal network to reduce the amount of bandwidth needed as in the case of a hotel. If you are not using Squid for the latter, the configuration file does not have to be so complicated.
Geoff also covered some of the subtleties of the HTTP spec and how to optimize browser behavior through the use of HTTP headers. For example, telling the browser not to re-request an image or to use ETags that allow a quick check to see if the cached version is out of date.
Resource Registries do things like merge CSS files and give the merged result unique identifiers which enables you to set an HTTP Header to tell the browser to cache the CSS file forever. When the CSS is updated, it is given a new name so you don't have to worry about a stale browser cache.
Other performance strategies introduced include optimizing code with a profiler such as Zope Profiler, Call Profiler, and Page Template Profiler. If possible, Cache portlets that are slow (such as the calendar portlet) by wrapping the portlet in a macro and caching the string it outputs using RAMCacheManager.
State of Plone
By Alan Runyan and Alexander Limi
In the annual State of Plone speech, Alan and Limi talked about their vision for Plone and what is happening in the community. One of the interesting points made is that they think of Plone as the Â?middle classÂ? of the Python community. The Plone community is large and the majority of users just know enough about Plone and Python to do their job. That is the
attractive thing about Plone. It is simple, usable and has a wide range of capabilities. Zope was described as the Â?J2EE Liberation Front.Â? Plone won several awards and press mentions over the year. There are currently 50 translations of Plone and over 300 add-on products.
Alan has been thinking of defining Plone's place in the world as a tool for content production. This is somewhat at odds with the view of many who see Plone and it's many add-on modules as a Universe unto itself. In a later talk, Alan talked about how the future of Plone development should be integration with other technologies rather than building more functionality onto the Plone platform. In fact, Runyan's company Enfold makes a product called Entransit that allows Plone content to be delivered through other presentation tiers. Alexander Limi's vision is very usability focused. From watching his presentations and a couple of one on one conversations, I really get how Limi drives the Plone UI (He almost got me to buy a Mac to BTW).
The next release, 2.5, is going to be a major architectural release. It will not be as bad a migration path as 2.0 to 2.1 where all the content types were migrated to Archetypes and much of the UI was optimized. 3.0 is going to be a UI release and Limi has lots of ideas for improvement. One possibility is to move CMFEditions, which provides version control, into the core. In my opinion, that will open up Plone to much broader usage because lack of versioning has been a barrier for some companies that I have talked to. The history feature which was removed temporarily due to a bug will be back too.
There was discussion of the relationship between Plone and Zope 3. Alan Runyan described how Zope 3 is now being thought of as an R&D project where useful innovations and improvements would be merged into the Zope 2 line or made available through the Five project. There are solid efforts being made to coordinate the development of Plone and Zope such as Goldegg.
Alternative Templating with Zope
By Chris McDonough
Chris McDonough introduced his new templating system Meld3. The design is a large departure from typical templating frameworks where the template pulls in and renders content. Meld3 Â?pushesÂ? content into simple HTML view files using the DOM library ElemenTree. The advantage is that you do all your programming in straight Python classes. There is a very clear separation between the code and the format. This could lead to better division of labor between the programmer and the web designer. There is even a diff tool that shows you what nodes in the DOM tree have changed. The downside is that there are more files to keep in sync and there is not yet a production system running Meld3. Managing HTML forms is also a little more complicated than the traditional Pull model but there are some work-arounds.
Introducing CMF 2.0
By Tres Seaver
Tres Seaver talked about what is happening with Content Management Framework now that much of the functionality is folded down into the Zope stack. Goldegg financed Zope and CMF developers to harmonize where in the stack various services belong and clean-up or re-implement code to leverage Zope 3 technologies. There was also an interest int mending the gap between Plone/CMF and Zope. Part of that is to push some of the things that Plone does down the stack to increase the potential for reuse and also get more people involved with the maintenance and testing of this code.
Some cool things that you can expect to see are more use of Python eggs which will make installing various configurations of Plone a little like Red Hat RPMs which will walk through, download and install additional dependencies; use of Zope 3 events, use of Zope 3 views which is a MVC implementation; cleaning up Zope Page Templates by moving Python (such as all the tal defines) out (this will have the added benefit of making ZPTs render faster because they will no longer be untrusted code which has a bigger security overhead); and better content export/import to the point where it could be used for data replication services.
__Putting a new look on Plone and keeping accessibility __
By Alexander Limi
This was a talk that you really had to see to appreciate. Limi walked through how he skins sites. He did almost the whole things just using styles. He recommends strategy because the HTML generated by the existing templates is very well optimized for accessibility and search crawlers. The code and notes were promised but I have not been able to find them yet.
Compliance Management using Banyan
By Munwar Shariff
Munwar Shariff did a nice demo of a Plone based system called Banyan that is useful for solving problems like managing engineering documentation, configuration management, and strategic planning. One of the strengths of the application is that it maintains references between documents for things like traceability. The tool looked very flexible and would be useful for many business processes. It is being used effectively at Lars Livermore National Laboratory (http://www.llnl.gov/) for managing engineering documents.
Integration not Isolation
By Alan Runyan
Alan Runyan started the talk with the premise that most open source developers prioritize writing new code over integration with existing code. The problem is especially bad, he says, in the Python world because developing is so efficient and fun. However, most enterprises care the most about integration and how the various components within their architecture fit together.
Alan wants to get make Zope less of an island. The example that he uses is that CMFBoard (an add on bulletin board that can be added onto a Plone instance) is a dead project but there is no good reason to write another one in its place. The Zope platform is not optimized for the kind of thing that a bulletin board is designed to do. Bulletin boards are write-intensive whereas the ZODB is more efficient with reads. Instead, Alan recommends integrating with an external BB software built in something like PHP. He did this using Simple Machines Forums (SMF: http://www.simplemachines.org/) for the OXFAM site. All that they needed to do was make some modes to SMF to enable single sign-on.
Alan wants to create a repository in the Plone collective (which is used to store add-on products) for integrations with external systesm. These integrations could be patches that can be applied to external systems or adapters. Zope could be a very good platform to support this integration based architecture because of its strong support of XML-RPC. I really like this idea and I hope the dialog continues.
Feb 23, 2006
French systems integrator, Nuxeo, makers of CPS, just announced a new project called Apogee. Apogee is an Eclipse RCP based thick client for ECM systems such as CPS, Documentum and Interwoven. I think this project has a lot of potential.
First of all, although everyone loves a web based client, there are some structural limitations of using a browser to manage files. For security reasons, browsers are designed to have very limited interaction with the underlying file system. Signed applets and ActiveX controls can circumvent this security system but users need to know what to trust and what not to trust. An installed thick client avoids this issue.
Training is a key issue in rolling out any content management system. If you can standardize on a UI, you may be able to lower your switching costs from one ECM product to another. Most ECM products have standardized on Windows Explorer as the interface by exposing the repository as a file share. However, this model has its limitations because Windows Explorer does not expose metadata and other functionality that makes an ECM system more than just a file system. There are work arounds. For example, Tortoise SVN and Tortoise CVS both give right click menu options for source control functions such as dif, check out, commit, and history.
For those who are not familar with Eclipse or Eclipse RCP, Eclipse is mostly used as an Integrated Development Environment (IDE) for building Java applications. However, it is designed as a framework for building many different other kinds of applications. Many big companies (such as IBM, BEA, Borland) that have their own IDE's contribute heavily to Eclipse. The idea is that there is core functionality that is common to many different kinds of business applications (navigation, editing interfaces, different views). Eclipse supports these basic services and the actual business applications are implemented as plugins. RCP is the core for building these plugins. For example, the open source reporting tool BIRT is implemented on Eclipse RCP. If you can get Eclipse installed on your users machines, rolling out Apogee and BIRT is very simple thanks to the Eclipse plugin manager.
It will be interesting to see if the major proprietary ECM vendors get behind this initiative. They could take the view that Eclipse contributing companies do: cooperate to reduce the cost of the delivering the basic core functionality and compete on the value-add differentiators. Somehow, I don't think that the big ECM vendors will have this perspective. One can always hope though.
Feb 21, 2006
Michael Sippey has a nice post annotating Tom Coates' slides on the future of web apps. Sippey adds to the dialog started by Jeremy Zawodny in a similar post by describing why Coates' rules matter. I think there are some good takeaways for the future of content in a Web 2.0 world.
Feb 21, 2006
The Plone Blog just published links to a road map that describes the next three releases of Plone: a maintenance release (2.1.3), an infrastructure release (2.5), and the next major release (3.0). It looks like release 2.5 will take more of the configuration that is currently done in the ZMI and put it into control panels within Plone. There is quite a usability gap between the Plone administration pages and the underlying ZMI. There will be a new framework team setting the technical direction for Plone 3.0. The new team consists of Wichert Akkerman, Martin Aspeli, Rocky Burt, Raphael Ritz, Hanno Schlichting, Vincenzo Di Somma, and Helge Tesdal. Plone 3.0 is expected to have more AJAX based rich client functionality (LiveSearch, which was released in 2.1, is great), QuickEdit (which allows content to be edited a field at a time), and a number of performance enhancements. I was a little surprised that adding versioning to the core was not slated for this release. For versioning, the product that I like the best is PVSForPlone2, although CMFEditions seems to have the attention of Plone core developers.
Feb 17, 2006
A couple of days ago, I listened to an AIIM webinar presented by Stellent and DocuLab's Jeetu Patel. It has been a few months since I have listened to commercial ECM messaging and I have to admit that I was a little surprised. The key theme was ECM as Infrastructure. This concept is not new, Alan Pelz-Sharp nicely described the trend of Oracle, ECM, IBM, and Microsoft working their way into the content management market. The growth of several standards in content management (JSR 170, JSR 168, DocBook, and DITA...) shows that buyers now think the technology has reached a point where it is "good enough" and they will no longer stand for being locked into a single vendor's technology stack. Now that the basic functionality is widely available, companies can now make more strategic choices about their technology portfolio.
What surprised me was that the message was sponsored and endorsed by Stellent, a pure-play content management company. Moving content management into an infrastructure play essentially commoditizes the space and makes it even more accessible to the big hardware/software vendors and, you guessed it, open source. This reminds me a little of ATG. They used to have one of the better Java web development platforms. They were one of the earlier companies to have a certified J2EE application server and they pushed the envelope on Java Server Pages with their tag libraries. We all know what happened after that. Java application servers became dominated by BEA and IBM then open source (Tomcat (really a servlet container but frequently used as a web application server), JBoss, JonAS, and Geronimo) so ATG got out of it. Their repository layer was no longer special thanks to open source object-relational mapping technologies like Hibernate and Castor. Their "Nucleus" architecture is no better than open source Inversion of Control frameworks like Spring. Now they just keep their customers with their personalization and commerce functionality. The customers that don't use these features are drifting away from the technology. So will Stellent become a big infrastructure winner like BEA, IBM, and Oracle? Or will it suffer the same decline that ATG did?
Jeetu's part of the talk was mainly about Service Oriented Architecture, which is also one of our practices. Our SOA practice lead, Adam Michelson has two excellent white papers ("Service Oriented Architecture and Open Source Solutions" and "Delivering Service Oriented Architecture") that discuss how to leverage open source in service oriented architecture. One of the key aspects that Adam really understands and is able to eloquently communicate is that SOA is more than just installing an Enterprise Service Bus (ESB). Success in SOA, like all previous generations of Enterprise Architecture, requires diligent planning and consideration for the organizational and political context. The technological plumbing is secondary. You just need to make sure that you are supporting the right standards, your components are reliable, and get into the right pricing model success (putting more applications on the bus) is not cost prohibitive. Adam also makes the point that it is difficult for a Service Oriented Architecture to cross divisional or P&L lines because of conflicting priorities and the inability to standardize. So maybe an enterprise-wide content infrastructure in a large company is unrealistic. I think Jeetu's talk, while very good, under-emphasized these issues. Still, I think that there is a huge potential to establish some core content services at the divisional level - which is where most I.T. decisions are really made anyway.
Other good points in the talk:
-
80% of content is unstructured
-
90% of content is unmanaged
-
This unstructured content grows at a rate of 36% per year.
Wow. I have to get to work!
Feb 14, 2006
Joel Spolsky, author of the very popular technical blog Joel On Software, is currently doing an experiment of using a wiki for translating his blog content into other languages. From his global readership, Joel definitely has the resources to do the translation, it was just the management and coordination that proved to be the problem:
Sadly, I fell down in face of the effort needed to maintain 30-odd local language versions. Such a job can't be coordinated by one person, especially when that person is me.The translation wiki (powered by MediaWiki) seems to be having some success. Joel announced the wiki on January 27th and there are already 117 registered users generating a good amount of content. The Spanish, Greek, Hebrew, Japanese, Polish, and Russian sections have the most translations.
A wiki allows users to work directly with each other to sort out issues like "speakers of the Flemish dialect ask me to change it one way, then speakers of Netherlands Dutch suggest putting it back, and I have no idea what they're talking about!" What of the concern of vandalism? Joel feels confident that the community will work it out: "If you're feeling naughty, add some fart jokes to somebody's excellent translation. We'll see if the community spots it and fixes it." Fortunately, the Joel's readership is probably dedicated and smart enough to be up to the task. (BTW, there are two very good articles on Wikipedia in the Boston Globe here and here that talk about the culture of the Wikipedia). There is also a page that serves a place to discuss cultural reference and terminology questions. There is also a kind of logistics page and a guidlines page to mention best practices.
So what are the weaknesses of this format? The key one that I see is the lack of structure. However, it is really no worse than the source (blog entries) the only thing missing is a field for date and title. There is a guideline to link back to the source article so it may be possible for the translations to share this information with the original article through a very loose foreign key relationship. Using WikiText may make it easier to parse content than giving users HTML WYSIWYG editors. It is not too difficult to parse MediaWiki text. For example, "==" means a HTML heading level two (H2) tag. But in a WYSIWYG editor, you would most likely get some kind of font tag which would give you no clue that this was the heading of a section.
I will keep my eye on the Joel on Software translation wiki. It looks like it has all the ingredients for successful wiki: dedicated readership, good content, and community.