Blogs
It's no big secret that Liferay's bundled wiki is one of the most often criticized. And I can understand it. For example, when you first add the portlet you get a view that looks nothing like a wiki and the only option available is adding a node:
Hmmm... but what is a node? You may ask. If you go ahead and create a node, it doesn't improve a whole lot:
Nodes are actually a very cool feature of Liferay's wiki, but presenting it up front scares people because it makes the tool very different to typical wikis and requires investigation and effort to get it working. This is just an example of the usability problems that the portlet has but it also lacks some features often found in the most popular wikis such as MediaWiki, JSPWiki, Confluence, etc.
Because of this, the wiki portlet is often the target of criticism and people asks as to do something about it, but ... is it better to spend the time and resources in improving our wiki or is it better to integrate one of the popular wiki tools out there?
This is a question that comes up often in internal conversations among Liferay's developers, in blogs from first time users of Liferay and in the forums. So I thought it was time to analyze the advantages and drawbacks of each approach:
Integrating an existing Wiki
The requirements would be: open source and with a good community, actively developed and support for all modern features of wikis.
Advantages
- Time, time, time. Unfortunately time is finite and we never have time to do everything that we would want to do, including making Liferay's wiki the best wiki ever. This option frees time since other people are developing the wiki that Liferay's users will use. That way Liferay's developers can concentrate on making the portal-specific features the best ever ;)
- Specialized knowledge: the people developing the wiki will most probably know more about wikis than Liferay's developers.
- Advanced features: an specialized wiki product will always have more advanced features, as a result of the previous two points.
- Some Liferay users may already be familiar with a wiki product and would like to use it within Liferay
Drawbacks
- Lack of a unique support source: when an external tool is integrated, people using Liferay have to go to two different sources to get help to solve any problem they may have. And that includes both professional support and community support.
- A unique set of pages for the whole portal. Liferay has a feature called data scoping what allows each community (and organization and user) to have it's own data. For example if you put the Message Boards (or Calendar or Wiki, or ...) portlet in community A and also in community B, each get their own instance of the tool, with separate categories, threads, etc. If, for example, JSPwiki is integrated, there would only be ONE set of wiki pages for the whole portal as opposed to one per community.
- Separate user repositories. Each wiki product that I know has their own user management system which has its own repositories of users. Fortunately, sometimes it's possible to solve this but having Liferay and the wiki to use CAS, LDAP and/or a some custom integration. Although that means more work to get the portal running.
- Lack of integration with Liferay's permission system
- The wiki's internal navigation and menus sometimes conflict with the portal's navigation, causing confusion to the end user.
Improving Liferay's bundled wiki
The benefits and drawbacks of this option are the exact opposite of those already mentioned for the previous option. But I'd like to highlight some of them:
Benefits
- Separate sets of pages per community. Furthermore, each community can have several nodes (aka spaces) to separate their own pages in different groups.
- Full integration with the permission system. It's possible to set different permissions for different pages and create roles that give specific permissions for the wiki portlet.
- Integration with the new asset publishing system. This makes it very easy to generate lists of pages such as: all pages ordered alphabetically, latest pages created, latest pages modified, etc.
- Integration with some other of Liferay's transversal features: comments system, tagging, rating (to be done), etc.
- A single place to ask for support (either profesional support or community support)
Drawbacks
- Some people are already disappointed with it and may not want to give it a second opportunity (I hope to be wrong here)
- Lack of advanced features
- The wiki needs some urgent usability improvements. Without it people won't see it as a good base to build on top of.
Conclusions
The more I think about it and discuss about it with other people, the more convinced I am that we should do both. Why? Because both options have advantages that the other will never have. What about the time? Yeah, that's the problem, time is finite, BUT:
- Our wiki is actually not that bad and with some usability changes that should not take more than a day it would be a whole lot better (and I'm cheating about the estimate here, since I've already done it, more on that on a later post)
- Liferay is a good platform for integrating existing applications and we want to improve our support since it's an strategic feature of a portal. In fact, just try to download the JSPwiki WAR and copy it to the autodeploy directory, you'll be surprised to see that it's been automatically integrated as a portlet. Of course the integration is not complete, primarily because the user repositories are different, but it's a very good start point.
- Since we are considering integrating an open source product we can get the communities of both products to collaborate. That way with enough time several of the above listed drawbacks could be eliminated.
Thoughts?