Media companies never agreed on the WCM to use in the past, while many were on Vignette and Fatwire, others were on ground up solutions.  Today, while they are going on their 2nd or 3rd generation WCM, they still dont seem to agree on a clear winner. I know of 6 big companies.

One is moving to ground up CMS on Java Platform based on Apache Jackrabbit Repository.

Other moved from Java based ground up to Microsoft based ground up ( Interestingly Microsoft did this ground up implementation – they couldnt fit MOSS here — does this point to interesting WCM features in next version of MOSS ?? )

Third is moving from Ground up based on microsoft platform to Vignette.

Fourth is moving from Open source PHP to ground up Java.

Fifth is moving from ground up on traditional Microsoft architecture to .NET

The sixth did something more interesting. While they kept the CMS same, they moved away from Taxonomy based navigation and manual ranking to Endeca based content prioritization and navigation. This gives them a really comprehensive navigation. I found it extremely useful for long shelf life content.

The  move to innovative solutions and ground up solutions doesnot seem to be surprising as the fragmented market would have never given good revenues to any single vendor (hence forcing the vendors to focus to corporates).

Advertisements

In past three months, I have been faced with many Request for Proposals for customers looking for mid-market CMS for their second generation web-site – which they want to launch in 3 months time.  Having looked at those again and again – I now in many cases end up basing our proposal on Ektron CMS400 ( alteast for Corporate internet website scenario).  Heres why.

1) Innovative approach to custom meta-data: In top tier solutions, we tend to draw a neat object model depicting properties of different types of content we need ( e.g. Product Vs Press Release Vs other information etc. and possibly within product itself classifying based on types of products to be able to do navigation and filtering properly). In Ektron – its simpler. You define metadata and you associate a subset of it with whatever you want. So at the heart of it, all text content are “html content” type – which means you are free to move the content around and position it whereever you want to – and based on the content location – choose to have different metadata ( if you wish). It is much faster to configure, confuses users less and achieves the original purpose.

2) Multi-lingual capabilities: It provides multi-lingual capabilities allowing you to set up multi-language versions of the site very easily – tightly coupling content in different languages. However it could do with some better support for multi-country scenario ( where we may choose a subset of content).

3) Office and Explorer integration: Ektron offers Document management extensions as office interfaces and explorer interface which let you directly manipulate documents in Ektron repository. These are extemely efficient for managing attachments to pages ( if for a moment we forget document management capability in its own)

4) Forms builder: It has a wysiwyg forms builder which is extremely useful in scenario like surveys, feedback forms and polls. it comes with a good number of template solutions covering many populer internet and intranet scenario – Possibly closest to corporate website.

5) Calendar and events: It has an extremely ready to use Events calendar. Its UI has a few limitations like difficulty in creating multi-day event, but overall it works well out of the box.

6) Seperate content organization and site organization : It has content folders to manage content items, while a combination of taxonomy and navigation for site organization. Which means that you organize the content folders like your content production organization  (e.g. company/department/product/printer ) while you do your website they way marketing wants you to ( e.g solutions/home/printer as well as products/printers/…)

7) Efficient template development : It offers slightly rigit ASP.NET components to render content. You want to use them as you want the in-context editing to work, however it appears to be slightly less flexible than the top tier CMS. However – you soon start to like it as you can get the look and feel you want and your code looks simpler.

8) Publishing options: It has instant publishing – at individual content item level – as well as site replication. It works well in both the scenario of infrequent large updates as well as frequent small updates with required governance model.

 However there are certain things it can do more 

a) Offer friendly URLs

b) Offer static publishing as an option, and offer ways to have a loosely coupled content delivery.

c) Auto generate google sitemaps

d) Offer more tuning options ( like Javascript minification)

e) A more comrehensive multi-site model.

f) In my opinion, the interface works best if you have <10,000 content items and < 200 content items per folder in a single site. Beyond that, it might be more efficient to handle the different sites as different instance. This is good for large corporate sites, but may not be great for media companies. The plus side is that the interface is simple to use and extremely functional.

g) More solution accelerators / startup sites: Currently ektron comes with 4 starter sites – essentially targetted at Internet scenario. A couple of more sites targeted towards B2B  or Intranet scenario – optimized for identified users ( not anonymous users) will be great. Sightly more complex implementations for things like “products” solutions etc. will be welcome.

h) Though the pricing/licensing is simple, its could be simpler. For instance, I find it difficult to understand whether a URL license includes country variations ( like .com/.co.uk etc) or not.  Similarly the development/staging/QA licensing is not very clear – it appears to be bundled with support (i.e. you can no longer use the development/staging/qa if you dont renew the support/AMC). Or – you buy persistant license for each URL/environment. A clarification statement here will help. Also if you switch from URL license to server license , it’s pricing becomes very close to top tier CMS solutions. ( I am sure that Ektron would be willing to negociate the price down though).

There was a time around 1999/2000 when first generation portals coming in place were solving the problem of consolidating information from existing web sites.  Hence they were strong in web “clipping” and allowed easy creation of dashboards. The better ones offered single sign on. However, they were up with very stiff competition – which is simple links and NT Domian/ADS authentication.

These capabilities are driven by having a single entry point to you corporate applications. That seemed to be the only driver here.

Then came mash ups, JSR 168 and WSRP.

 JSR 168, like J2EE JARsand WARs offered the Java world to deploy the same portlet anywhere. WSRP on the other hand was more tuned to mash-ups. No matter where you are running the application, as long as it follows wsrp, you could club UI elements of these applications together in a single page.

Now again, these capabilities are fixing the same problem, but are allowing easier creation of mashups and dashboards. Apart from that, now the are also trying to increase the application longivity and relevance. Which is by removing container lock-in and also by a standardized mash up protocol at the front end, keeing intranets talking to applications on heterogenous and non-standard platforms.

So the focus seems to shift from end user view, to developement and deployment view for a single entry point to an enterprise.

 Post that, in the last two years, they scrambled to add a whole host of applications over the infrastructure – collaboration, content management and others.

In the last two years, the real change starts to happen. Enterprises starting looking at SOA. Business agility, M&A and the dynamic business drivers in general along with increasing spend on IT – is forcing the enterprise applications to be more dynamic and agile then ever before.

The need for this agility drives Service Orientation at the back end layer, but leaves the choice of front end open.

Here, the portal vendors realized that they were in a very good shape to cater to “above service bus” needs. They have struts based UI framework – and other ways to create UI, they have navigation builders, authentication frameworks & SSO enablement, they provide frameworks for inter-application communication ( for both data and events) and extremely good support for existing applications as well. So theoritically, like SOA offers agility for business logic and business data, Portal architecture offers the same for presentation. It caters to single application, multiple brands as well as multiple applications with same  look and feel. It allows tying application built completely independently together.

So transactional applications driven by SOA drive portal from the other direction.

Portal vendors have responded to it differently. Websphere offers capabilities at both ends. BEA offers weblogic portal for SOA driven, Aqualogic UI for Intranet driven and a combination of both for needs requiring both.

Personally, with so much happening on the presentation layer – especially RIA and partly disconnected applications – it is hard to imagine the presentation of browser based applications remaining static for a very long time.

With the above capabilities, the drivers which make an organization go to market for portal products have increased to cover

1) Corporate intranets and extranets ( traditional need of a single entry point to corporate applications – going on from just sign-on to deep links to integrated workflows across multiple applications thus contributing to real productivity gains) Dashboards, report presentations and other aspects of BI are also being given increasing importance here.

2) Customer self service ( Some institutions like Banks, telecom etc. have the same user subscribing to multiple services – a single entry window to all of them leave users less confused thus reducing service costs)

3) Standardized web platforms for organization ( typically driven by SOA initiatives or by having an unmanagable set of heterogenous products – like 3 portal and 6 CM products) which also provides a set of “mini” applications re-usable across enterprise.

4) Collaboration (essentially a single workflow involving multiple people and multiple applications, primarily resulting in creation of a document)

Looking at the new set of feature improvement in portals, like increased Mashup capability for non-WSRP applications, embracing outside the firewall tools and collaboration infrastructure, increasin Content Management, Increasing interface with non-browser applications (like MS office), user created forms based applications via BPM, and more – they seem to be poised to address yet another business need – the need for ad-hoc applications.

Thanks to collegue Kishan A, saw this writeup on theserverside  “Spring is the new Java EE”  by Salil Deshpande, ex CEO of The Middleware Company (the company that originally created TheServerSide.com and TheServerSide Java Symposium). It summarizes changes in the Java world in last 3 years – and sums it up in one word – Spring.

I found it very interesting as I had coded my last serious work in Java around roughly the same time 3 years back – and then had jumped to the .NET bandwagon. Of late – I had been struggling to get up to date with Java technology – and was roughly noticing the same things which Salil points out so well.

So In short – the perception is:

1) EJBs are a thing of past. Pojo are back. Spring is the platform now. Everything is based on Spring. <Quote>

Last but not least, next generation application servers from BEA, and maybe IBM, will be built on top of Spring. Am I the only one that finds this mind-blowing?”

</Quote>

2) .NET and Java continue to co-exist – with many Java things being ported to .NET and more slowly, .NET things being adopted in Java.

3) Service Orientated Architecture and Open Source seem to go hand in hand. There are open source ESB like Mule.

4) Dependency injection frameworks and Dependency injection metaframeworks seem to be in thing. I had earlier expressed my frustration with the abundance of Java Frameworks , however Salil seems to say that the Java community has no confusion, spring is the way to go all the way.

5) Its the UI technology which has seen most innovation. I had put my earlier views here however, the alphabet soup is continuing to grow with JavaFX, F3, Flex being open source and what not.

6) RoR is very important, has good press, has some money ( though small ) and the war of metaprogramming is not yet been won – with Groovy, Grails and JRoR on JRuby.

Some of the other things I noted were:

  • The IDEs are actually complete now, not requiring you to go out to command prompt every few seconds. Intellisense does work even for Javascripts. Most new projects immediately release eclipse plug ins
  • Communication between tiers is still not easy. Unlike .NET – you have a lot more work to do. Hopefully, someone will apply the concept of Windows Communication Framework to Java ( or maybe it exists and I havent seen it yet).
  • There seems to be a lack of centre of gravity. Sun is no longer it. It could easily be IBM – but it doesnt seem to be. Oracle seems to be most aggressive – but doesnt have a large fan base. Fragmented Open source community seems to be the biggest driver.
  • There are more standards than ever, but less than enthusiastic compliance – with vendors having proprietory full featured interfaces and part handicapped Standard compliant interfaces.
  • There is hardly any clear and distinct differentiators that Java has now. It is hardly a market leader in any stack – from servers to mobiles. Without significant commercial investments – It could easily be “Legacy” in next 3 years.
  • Supported Linux Servers ( Read Red Hat with Jboss) are more expensive than supported Windows servers (with IIS/.NET framework as an app server). Yes you read it right. This re-inforces my previous point.
  • The learning curve for new developers is higher than ever before. A typical developer has to learn Java, JSP, Javascript, Struts, Spring, AOP, Hibernate, SQL, XML DOM, Quartz, Swing, GWT, JMS, MDB, AXIS and practically a new open source component for every task they take up. All projects have a complex framework, how it works remain a black magic and debugging with all that magic around you is like searching for your car keys under the lamp post (regardless of where it fell).  By the time you learn the framework, and catch up with the lost productivity – it is time for a new project with yet another complex framework. Whether the use of these open source components has actually increased our productivity remains a big question.  Data on Hours per FP atleast is not going down.  While open source projects, frameworks and components let us write lesser code and provide more features than we generally would, its not really helping improve productivity. (Or maybe guys just spend the time on Beer if they are ahead on the FP delivered)

I really dont think that the doomsday will happen . There is just too much investment already done on it for it to fade away . It will re-invent itself – and maybe the popularity of Spring is begining of it.

My Views on RIA

April 6, 2007

Having used asynchronous/part refreshing interfaces and rich client interfaces since 99, I was quite surprised on Ajax and RIA suddenly been seen a new and happening. While thousands of DHTML/javascripts have always been available by individual developers and botiqueues offering RIA. It was a tough task finding what worked and what was flaky and invariably required a lot of coding.

However with RIA becoming popular, we started getting more integrated offerings in terms of toolkits. There were and are multiple approaches:

Pure Browser based:

– Pure Javascript toolkits : Dojo toolkit, Yahoo UI library, Open Rico etc.

– Server side Java toolkits to generate RIA client code: GWT, Echo2 etc. (Possibly JSF can also fall here)

Rich client:

 – Flash based: Either using Flex/Atlas feeding Flash, pure flash widgets, or Flash generated by OpenLaszlo

 – Windows Presentation Framework – the Microsoft’s anwer to Flash – with WPF/E availale it now supports many browsers, not just IE 7.

– Traditional rich client ( Applets, Activex etc. and not so traditional – Java’s F3)

 In the past, finding a good javascript, and Activex used to the only practical options with the rest being too heavy or too flaky. For instance a few years back – It took us over two weeks to optimize Javascript tree menus so that they could render 2000 Nodes.

Today, all of the above are viable. But the question is – which is most pervasive (i.e. will work for most users – based on the current hardware / software they have), which would last some time and which are least likely to break with server side application upgrades.

I find JSF and server side toolkits like GWT slightly difficult to use as there are different versions of JDK and different server side frameworks that we need to work on. However any stand alone – client side item – whether flash/applet or javascript is good enough. I am in no way writing them off. If your need is limited to a single product/platform and you have developers who understand event driven programming – like Java swing – this may be the best option allowing you to debug on proper IDEs – which must be a lot more robust than difficult to test javascripts. I have talked to developers who swear by GWT having taken away their cross browser worries. And I even find a greater willingness amongst programmers to write Java code using GWT than javascript. Now that is a very real advantage.

So among flash/Applet and Javascript – my personal experience forces me away from applets. Its very difficult to get it to make applets light and to get them to work ( atleast amongst the ones I have used – not necessarily coded) and they take just too much time to load – even F3.  Activex used to be slightly more reliable but is increasingly facing trust issues. Flash are robust, fast and persvasive and Javascript based RIA work well – as long as they have gone thru a lot of quality control and testing for cross browser compatibility.

In my personal opinion, I would prefer javascript over flash, even more so with the advent of toolkits. The reason for that are

  • It looks one with the rest of the page.
  • You can select text.
  • You dont have to suffer “click here to activate” forcing you to click twice when all you want is to push a button or expand a node.
  • You dont want browser selection to be chunky etc.
  • You dont need to worry about Javascript vs Flash ( or whatever) interaction or need to worry about how to share data and events between different active windows on page if the entire page is not rich client.

But Flash like client are not a write off but bring a huge value – in fact in content management field, media fields and print fields they can have huge advantages which Javascript cant.

  • you can do multiple file select – no need to upload one file at a time.
  • While editing (lets say you are posting a yellow page entry or classified) – you can take advantage of kerning, hyphenation and justification being able to calculate real column inches
  • You can actually play video and audio
  • Its slightly easier to get them to actually work, after all their environment is more unifirm than the number of browsers. (but wait – before you carried away by the 98% figure that flash claims, Flash 7 , 8 and 9 are all present, flash doesnt come by default – and you need to worry about making your script cross flash version compliant and adoption is driven by biggies like myspace and youtube)

I am faced with a situation where I have to write components which work on a set of existing applications. The existing applications are based on Java 1.4/5/6 on different frameworks. So at this moment, since I dont understand how server side javascript generators can be used, I wont use them. I will go with javascript using Yahoo UI and flash where I must ( generated using OpenLaszlo). However once I understand server side toolkits better, I will give them a real shot.

EZPublish rocks

April 3, 2007

Myself and a collegue have been playing around with open source (non Java – LAMP or similar technology based) CMS and related softwares for quite some time now.  Among the CMS software – We have gone in detail thru Joomla!, Plone and EZpublish (and are yet to cover Bricolage and Typo3 – which I belive will cover the spectrum).

Brief notes on them

Joomla! – rocks on its simplicity to set up a website. However it stops short of being a CMS. (for instance – you cant put metadata to images), It stops short of having a workflow and versioning. I think I will prefer it for setting a personal website over anything else that I have seen.

 Plone  – a lot more professional and a complete CMS – has proper workflow, has versioning extensions, has proper access control etc.  However it feels too much 2004, too much file sharing platform and less of a WCMS and it takes time to learn and work with.

EZpublish – is just great. It will give any professional CMS a run for its money – sample these:- make an article appear in more than one places, run multiple sites of single install – reusing content if you wish, mutliple views of a site, great community support, real upgrade path which works – while upgrading versions. It even offers commerce. – And commercial support too. I guess it offers all that mid sized WCMS implementions needs.

I think i will recommend it as a starting point for those looking for PHP based WCMS – chances are that you will not have to look any further.

(I was looking at feature fit for the following scenario:

1) Product catalog for a multi-brand/multi site/multi geo organization

2) Publishing of online news and periodicals by a mid sized production team

3) Intranet site listing organization information like policies etc.

If your need doesnt fall into above and is much different like collaborative document creation and sharing, legal content filing etc. – then you may find this information useless.

)

It looks so good that I am wondering whether to continue to look at typo3 and bricolage at all or not!

I have been playing with Java based open source CMS as well – though opinions that are for a different day.

In case any of you need notes I gathered on these products ( which in no way would be anything close to a professional summary – likes of what CMSWATCH does) – drop me a message at pranshuj at mindtree.com

If you need to start a new web application today – what would you base it on?

Will the client experience be managed by Pure HTML or RIA ( Yahoo UI or GWT or DOJO toolkit or ATF  or  OpenLaszlo or Flash or Swing…)

Will the web tier use MVC (Struts  2.0 or 1.3 Or Spring MVC) Or Tapestry or JSF ( MYFaces , Seam ) ….

What about templating and mashups? Tiles / Velocity / Framemarker / portal servers ….

How to address security and state management for Ajax UI? will you use a BPM engine?

And on the app layer? Pojo, AOP (Spring ..), EJB, ….

Which JDK 1.4/5/6( half the world is on 1.4)?

Java technology has never been as fragmented as it is now. There is no centre of gravity with Sun no longer being a dominant player.

This is making life extremely difficult for enterprises and architects – as you need to bet on a technology while creating enterprise applications which are supposed to last a few years.

We ( MindTree as Software development and consulting organization ) – are increasingly finding customers requesting our help to define a technology stack and if possible a framework. Neel who heads the Framework group at MindTree has an innovative solution in the form of a Meta Framework.

His team has created thin wrappers for various layers of frameworks which make accessing one layer from the other layer uniform ( regardless of whether its  Spring or an EJB behind the scene, and regardless of whether its struts or Spring MVC calling the business logic).

This approach makes it possible to swap in and out different layers without impacting the other layers.  This way he has been able to limit the problem in half (assuming only one layer will go desperately out of fasion at a time). Also the developers dont need to re-learn a lot if a new framework component is introduced.

He also spends time in tracking the list of mature options at each layer and has opinion on which technologies you can bet on . As always best option depends on requirements and what the customer organization has already invested in. Organizations may end up having hybrids – based on demands of individual options.

I faced with the above dilemma for a development I am going to jump into approached him and walked back with a stack of

(YUI And/OR OpenLaszlo ) => (Struts 2 OR Spring MVC) => Spring

though I am still not convinced on why not Seam.