<!-- Content Here -->

Where content meets technology

Apr 16, 2007

Alternatives to Commercially Licensed Software

Last week, I was in San Francisco at the Gilbane Conference on Content Technologies. Like all Gilbane conferences, I enjoyed attending the sessions and getting together with my friends in the industry. My panel was on "Different Approaches to Purchasing a CMS: Open Source vs. SaaS/ASP vs. Licensed." (my slides). Speaking with me were Kevin Cochrane (VP of Web Content Management at Alfresco) and Jim Howard (CEO of CrownPeak). If you didn't make it, here is what you missed....

I lead off with a presentation saying that commercially licensed software, SaaS, and open source software all have their strengths and serve different kinds of customers doing different kinds of things. I got a good amount of head nodding some good note scribbling but I didn't change anyone's world. (If you were there, tell me if I changed your world.)

Then Kevin got up and the man was on fire. His presentation was about how traditionally licensed proprietary software was dead and open source was the wave of the future. He was banging on the podium (so much so that the moderator whose laptop we were borrowing was concerned for her computer) talking about the corruption and arrogance of commercial software. Kevin was one of the early guys at Interwoven and recently left to join Alfresco so he had the authority of an insider whistle-blower. He even pulled up a picture of a Gandhi and the quote "First they ignore you, then they laugh at you, then they fight you, then you win." Kevin got the audience pretty fired up and lots of people were asking how to get Alfresco.

I think one of Kevin's best points was the different economics of open source software. Commercial software is a sales driven business. Sales people stand in between the customer and the software (sometimes creating a barrier) and earn big commissions on every license that they sell (maybe not the $1MM bonuses that Kevin talked about but they can be pretty high because the variable cost of a license is very low). The open source model uses open source licensing to distribute the software. Anyone can download it and form their own opinion of whether it is a good fit for their business. Customers can also decide whether they would get value out of a support and maintenance package that the open source vendor sells. That said, not all companies are well positioned to participate in this kind of sales process. Many customers like having sales guys and sales engineers to bring the information to them. They like someone to do demos for them and to fill out their 30 page request for information (RFI). I would say that this kind of company would not be a good candidate for open source. To realize the benefits of open source, you need to be more proactive and can't rely on a sales team to bring the product to you.

Jim talked about how content management vendors should take more responsibility in customers overall success with content management - not just focus on the success of the implementation. He talked about how companies succeed or fail with content management after deployment when they are trying to use and adapt the system. I agree with his point that SaaS is very well positioned to facilitate ongoing success with content management. They can, for example, monitor who is being naughty and nice with the system or whether the software is being used at all. Of course, different SaaS vendors are going to provide different levels of hand holding. Not all customers want or would be able to afford someone observing every action, poised to intercede at the first sign of user confusion.

I think open source and proprietary software companies could do a better job providing this support as well. My old colleague Nathan Rawlins and his employer, Serena Software published a book Web Content Management for Dummies. Aside from the fact that all the screenshots are of their Collage product, the book is product-neutral and has some very good advice. Open source projects do their part with community generated add-on modules. Plus, the absence of license costs frees up resources for things like training and coaching. There is also an opportunity to build communities of business users that might derive a similar benefit to what the developers enjoy. The Drupal and Plone communities are talking about these opportunities and are having mixed success.

Jim also raised the very valid point that managing content management systems are expensive no matter what way you slice it. In addition supporting the infrastructure (servers, rack space in a data center, bandwidth), you also need people who can monitor the system and correct issues as they arise. Some companies already have these resources. For example, at Optaros, we already had the infrastructure and the staff who knew the technology. Those kinds of companies tend to derive less value from the SaaS model because they need to make the investment in people and infrastructure whether they host their CMS or not.

Those who were hoping to see contention between the panelists were probably disappointed. No Springer-style bouncers were needed. Kevin said there are many customers that would do better on a SaaS model than to use open source. Jim said that SaaS is not for everyone and some companies want the control and responsibility that open source allows. If they do this session again, I hope that the Gilbane folks put someone from a commercial proprietary software company on the panel. Put Kevin up there with an Interwoven sales guy. That would be fun.

Apr 14, 2007

WCM 2.0

At the risk of adding to the confusion and hype, Brice Dunwoodie (CMSWire) and I just released the first of a 3 part series on Web 2.0 and content management. In this article, we define Web 2.0 in practical terms that can be applied to web content management. Our next two articles will focus on functionality that will be critical for Web 2.0 "compliance" and the adjustments that WCM customers and vendors will need to make to stay current. I consider Brice and myself to be reasonable and realistic people. We tend not to get swept up in the hype. Yet both of use are seeing profound changes on the web. Not keeping up with these developments will probably not translate into ruin for your business, but may lead to to some missed opportunities. Brice and I are looking forward to getting your feedback.

Apr 05, 2007

Apr 04, 2007

Open Source Content Management Summit Video Posted

I had it in my calendar to check back to see if anyone uploaded video footage from the 2007 Open Source Content Management Summit and I was happy to see that six sessions are posted on Google Video. Definitely watch Dries' keynote on the state of Drupal. One of the ideas he explores is that the features that Drupal has pioneered have become commoditized and there is a convergence of functionality that has grown from sharing of ideas. Even companies like IBM and Microsoft are starting to catch up :). As products become functionally similar, the meaningful differentiation will be ease of use and adoption that the product affords. Dries put out as a challenge to the Drupal community to make it easier for people to get involved by improving the website and incorporating some of the energy and innovation that is happening on the periphery (through module development) into the core.

He also talked about how Drupal eliminated the need for a traditional webmaster who coded HTML all day. CCK and Views make traditionally technical tasks achievable by non-technical users. Next in Drupal's sights is to make non-designers able to design websites. I don't know about the last one, I think that the web is still recovering from bad design empowered by Microsoft FrontPage. And with that, I leave you with this chilling thought... (click on the image to get the full animated effect!)

Apr 03, 2007

Apr 03, 2007

XSL - Your Next Templating Language?

When you implement a web content management system, you usually do most of the development on the presentation tier. Expect to spend 2/3 to 3/4 of your development time working on page templates. (Also expect to spend double what you expect in content migration but that is the topic of another post). That is where you define the page layouts, the formatting of the content, and other visitor facing behavior.

If you have implemented a number of WCM products, you know that most have have their own proprietary templating syntax or at least their own set of tags to use. After a while you begin to realize that while the syntax varies, the core concepts are common. Most are designed on the assumption that a dynamic web page is actually mostly static with a few dynamic regions embedded within.

As a result, the page template is mostly static HTML with a bit of code to retrieve and display dynamic content in the defined regions. The proprietary tags (be they JSP tag libraries, XML tags, or scriptable objects) encapsulate the work of finding, retrieving, and formatting content from the underlying repository. Some templating systems are stricter than others about keeping business logic out of the template code and forcing that logic to be embedded in more reusable objects. For example, in the Java world, FreeMarker and Velocity deliberately limit what can be done in a presentation template. JSP, with its ability to embed any Java code scriptlets, puts developers on the honor system.

With this delineation, server side developers and web designers are able to keep from treading on each others toes. There is a long standing process for implementing the presentation tier that goes like this: graphic designers create page mockups in something like Adobe Photoshop; creative developers code the mockup in statich HTML (or DHTML); and then the server side developer embeds the objects and tags to replace the static example text and pictures with dynamic content. Some templating syntaxes are supported by HTML editors (such as DreamWeaver) to facilitate round trips between server side developers and HTML developers. With the appropriate plugins you can get code completion and other conveniences. Zope's Tag Attribute Language (TAL) is nice because it does everything in extended attributes within regular HTML tags and that reduces the chances that the HTML editor will scramble the dynamic code.

The common patterns, tool support, and the fact that you can orient yourself in the code by reading through the familiar HTML, make the traditional templating systems relatively easy to learn. It's a great system that the majority of the industry has embraced. It's great, I should say, until those bits that you expected to be static and unchanging start to change. To make matters worse, they become variable in unexpected ways: by exception. All of the sudden, someone from the business side wants to do a "small change just on a few pages." Or it might be a global change like when a new browser comes out and HTML tricks that you used to be able to get away with start breaking pages. Of course, these changes are urgent and need to be done yesterday. You put in a hack like a temporary template expecting to fix it later. However, you know that later you will be responding to some other urgent change.

Even if you are clever about using server side includes, macros and other best practices, unless you constantly refactor your template code and actively manage the presentation tier, you will start to experience template proliferation. At first, this seems like an acceptable price to pay for the ease of development. Having lots of templates may not seem like such a problem if they are easy to read and edit. For companies with small to medium sites and modest pressure to make special feature layouts, this might be totally acceptable. But for large media sites with lots of content and lots of editors, things get out of control. One of my clients had 7,000 templates.

An alternative strategy is to use XSLT. Unlike traditional web templating technologies, XSL templates build the whole page dynamically as a result tree and fragments can be overridden in a CSS kind of way (not exactly, but you get the idea). So, if you want to override a section of static HTML markup in one area on the page, in one section of the site, you do not have to write an alternative template out include that is identical but for that one difference. The die-hard JSP guys out there are thinking "I wouldn't do that, I would write conditional logic around that little fragment." You could. But that makes the JSP harder to read and manage. Think about how easy it is to have a media specific CSS style sheet for a print-only view that does a "display:none" for all the HTML classes and IDs that you don't want on the print version. Contrast that with writing a bunch of JSP "if" statements around screen only HTML.

Do not think that XSLT is all light and happiness. There are several limitations that may rule out XSLT for you. For example, XSL has nowhere near the tool support that traditional HTML based templating languages have. Forget about WYSIWYG editors. There are a couple of them out there but they are nowhere near as good as straight HTML editors. Most HTML programmers get totally lost in XSL code. XSL processors have traditionally been slower than other presentation systems that are optimized for request time response. There are a couple of WCM systems that use XSL (commercial products like Ingeniux and Hannon Hill and the open source WCM Apache Lenya. Alfresco has an XSL templating option), but as one sales engineer said, they have had to sell around this aspect of the product rather than highlight it. Writing dynamic, request time logic for something like personalization is harder on a presentation tier built on XSLT. Apache Cocoon is an XML web application framework designed to address this limitation but, for some reason, it has not getting a lot of attention lately.

Still, I think that the tide is shifting on XSLT and here is why:

  • Layout is now more driven by CSS. This does two things. First of all, the HTML is getting much simpler (no more nested tables for positioning) and semantically meaningful so the XSL will need to do less work. Second, the declarative style of CSS is similar to XSL so HTML programmers are more prepared to think in this way.

  • With all of interest in AJAX, HTML developers are starting to get more comfortable with XML.

  • XSL processors are getting faster.

  • Also thanks to AJAX, you can have a statically deployed ("baked") HTML website with dynamic AJAX components layered in. Baking style presentation tiers are especially appropriate for XSLT.

  • XML is becoming increasingly popular for data exchange and storage. You can't go to a content management conference without hearing the term XML in every presentation. Even large companies like Content Here are using XML for content authoring :).

  • Better browser support for XML may make client side XSLT rendering a reality soon.

  • Architects are looking for standards and de-coupled architectures to reduce lock-in. Just as the JCR or any other standards based repository presents flexibility and an exit strategy, a presentation tier that uses XSLT will make it cheaper to move to another platform. All you need to do is get another platform that publishes XML and your page templates will still work.

Depending on your need
s, XSLT may not be appropriate for your architecture. But if you are searching for a presentation tier to address problems in template proliferation and poor separation between business and display logic, you might consider it.

Mar 30, 2007

The End of the Technical Résumé

Having been employed at startups and fast growing companies, I have seen my share of technical résumés and my conclusion is that the technical résumé is nothing more than a misleading garble of acronym soup. They are totally worthless. Developers list every technology they have ever heard of regardless of whether they understood the technology or are current on it. Many developers work on large systems and have very little understanding of the technology beyond a narrow little slice that they were responsible for. Don't even get my started on certifications. In fact, my experience is that the more certifications, the less competent the developer. The technical résumé is the equivalent of search engine optimization circa 1999 - load your résumé with keywords, post it on Monster, and wait for the hits.

The truth is that a developer is not good just because she knows a certain syntax or has worked with a product. What makes a good developer is how she thinks and how she works on a team. Good developers are interested in the underlying design and function of the technology and are diligent about following best practices - not because they are told to but because they understand the value behind them. Even when they are heads down, they are aware of what other people are working on. They anticipate interdependence and communicate. Good developers make other people on the team better.

Luckily, with the advent of social networking and Google, the era of the technical résumé is about to end - certainly for senior technical people and upcoming tech rock stars. The reason is that these people who are smart and love their field do not just code anonymously in their cube. They interact out in the open and with some good Google searching, you can follow their tracks. This is certainly the case for open source developers but it also holds true with developers that specialize in proprietary applications as well.

If you are evaluating a technical candidate, don't spend too much time on the résumé. Start by Googling their name. There you will find posts to mailing lists and forums, chats on IRC, a blog, comments on other people's blogs, entries in bug tracking systems, even user group presentations that the candidate did. Ideally, you see the candidate answering a question or putting forth a well supported opinion. If he is asking a question, you can learn a lot from the quality of the information and the tone in the question. See my post on how to post on an open source mailing list for what makes a good question. Plus, a simple search may turn up any strange affiliations or interests that you might want to know about. For a proprietary product, you can do a lot by searching on the support extranet which may contain a forum or other community content space.

LinkedIn and other social networking sites are a great resource. The candidate might have received recommendations from people he has worked with. You might even know someone in common. If you do, start talking to people and find out what they thought about working with the candidate.

If you are on the other side of the equation and you are a technologist that wants to optimize his employment opportunities, stop getting certifications. Get out there and engage. Rather than get an MCSD, show what you know by writing something helpful on a MSDN Forum. Make more of an effort to understand the other components of the project you are working on. Sit in on someone else's code review. Actively read blogs (comment too). Participate in an open source project. If you are not interested enough to make this commitment, you can still have a comfortable career as a technologist but you will not go far. You will probably wind up being a PM ;)

Mar 27, 2007

New Community Site Using Drupal

A new community site just launched on the Drupal platform. The Date Vine is a site where people can post things to do and places to go. Despite the name, the activities are not all romantic.

This kind of site is the perfect use for Drupal. The tagging framework ("vocabularies") allows users to categorize their entries so that they appear in different lists of content. A voting module allows authenticated users to give listings star-based ratings. The captcha module verifies that a human being is registering for the site. The favorites module is used so that users can quickly go back to entries they like. Plus there is the normal Drupal features like commenting, search, etc.

Overall, a really nice use of Drupal. Now, if only they had a section of the site for Northampton, Massachusetts (currently only Boston, London, Los Angeles, New York, Paris, San Francisco, and Seattle are listed), then I would get really excited. On second thought, I guess my little town would look a little silly on that list of cities.

Mar 25, 2007

Good Article on Web Application Security Vulnerabilities

The PHP programming language has historically gotten a bad rap in the area of security. While the language itself has had some vulnerabilities, three other aspects have (in my opinion) played a larger role:

  • PHP is an easy language to learn so there are a lot of unsophisticated beginners with no awareness of security holes writing web applications on it.

  • The rise of PHP coincided with a rise in community content applications (bulletin boards, blogs, Nukes) where external, untrusted users could insert their own content with potentially malicious payloads.

  • The PHP programming community was a little late in adopting web application frameworks. Good frameworks provide the plumbing for a web application and take care of security holes so that the custom code that developers write doesn't have to worry as much about known hacker exploits.

Two of these three factors are rapidly changing. The PHP development community is getting more sophisticated from a technology perspective and frameworks are getting better and are becoming more commonly used.

I am seeing more and more articles concerning security on PHP developer websites and magazines. For example, there is a really good article on the None site about Cross Site Request Forgery (CSRF) and Cross Site Scripting (XSS). It goes over how a hacker can inject malicious code into your site and how to protect yourself against these attacks. Here is a hint... never trust anything that a user enters. For more reading, check out Rob Miller's None.

If you have been holding back on using a framework, I would reconsider. Most of the PHP frameworks have filter components (The Zend Framework has their None. None has a User Input component) that disarms potentially hazardous user input. Tapping into the collective intelligence about security can free your own mind to building better, more effective web applications.

Mar 19, 2007

Content Management Events Calendar

There seems to a be a real need for a good calendar of content management events. To help fill the void, I started adding events to Upcoming.org and tagging them with "cm+conference." I chose Upcoming because they are owned by Yahoo! (so I am pretty sure they will hang around) and they use microformats. You can see them here.

I also burned the feed on FeedBurner. This allows you to do cool things like the little Ajax block on my resources page (see "Upcoming Content Management Events"). If you want to add the same section to your site, all you need to do is copy the following code onto a page.


<script src="http://feeds.feedburner.com/UpcomingorgUpcomingPublicEventsTaggedWithcmconference?format=sigpro" type="text/javascript" ></script>
<noscript><p> Subscribe to RSS headline updates from: <a href="http://feeds.feedburner.com/UpcomingorgUpcomingPublicEventsTaggedWithcmconference"></a><br/>Powered by FeedBurner</p> </noscript></p>

So, if you have a conference that you want to promote, add it to Upcoming.org and tag it with cm+conference. It will show up on my site and any other site that wants to display these CM Events.

← Previous Next → Page 52 of 75