Wiki features implemented during Sprint Apr-11-2008
- Developer: Uros
- Leadership Sponsor: Roger Bly
Tasks
- Will current MediaWiki? intergration meet our multi-tenant, multi-workspace name space requirements? (ANS: No)
- Assess blinki wiki rendering engine, prototype wiki feature using this engine.
Reqirements
- No seperate username and access permissions between project.net and wiki.
- Wiki syntax required, WYSIWYG option nice to have.
- Page name space must be unique to project workspace (e.g. Each workspace can have a wiki page named "ProjectObjective?".
- All wiki pages can be accessed by a unique URI.
Apr-11-2008 Sprint User Stories
- The user clicks the "Wiki" link in the project workspace and one wiki page appears in the main Iframe (as it does now)
- The user clicks the "Modify" (triangle) icon on the toolbar to edit the wiki page.
- The user edits the wiki page by entering wikiText into an ExtJS TextArea? box (HTML TextArea? box is OK at first).
- When the user clicks the "Submit" button, his wikiText changes are displayed in HTML in the main Iframe.
This sprint steps performed: Integration of Bliki rendering engine
Summary
We want to provide a wiki tool within each project.net workspace. We also want to allow a wiki page to be added to any project.net object. The wiki service may be java based and tightly integrated to project.net or may be a separate product loosely integrated using web services. It would be nice if the wiki supports page-level access permission in such a way that project.net access security can be used to manage access permissions for the wiki page objects provided by the wiki. The wiki should be integrated with the project.net security and notification services. The wiki must be licensed under a mozilla-compatible open source license (LGPL, Mozilla, apache, BSD, etc.).
Sachin's Prototype using MediaWiki?
Things to Investigate
- http://en.wikipedia.org/wiki/Wikitext
- http://en.wikipedia.org/wiki/List_of_lightweight_markup_languages
- http://meta.wikimedia.org/wiki/Wikitext_to_HTML_converter
Tasks
- Finalize the selection of technology partner (Sachin and Roger)
- Implement Phase 1: Provide a traditional wiki tree as an optional tool within each workspace. Use project.net authentication and authorization. (Sachin)
- Phase 2: Provide the ability to link a wiki page to any object in the system.
Wiki Technologies
MediaWiki is the leading open wiki product used by wikipeadia and many others. http://www.mediawiki.org/wiki/MediaWiki Integration with the project.net application via web services may be possible. Integration with project.net authentication and authorization security needs to be investigated.
www.Alfresco.com has done some work to integrate their java CMS to MediaWiki. You might want to take at look at their approach. They have developed a PHP lib to integrate to MediaWiki. http://wiki.alfresco.com/wiki/PHP_SDK
Deki Wiki by MindTouch Open Garden http://wiki.opengarden.org/ -- is interesting for it's Web Services API.
A comparison of wiki features, markup, etc. http://www.wikimatrix.org/
Java Wikis
A list of Java based Wikis that can be a candidate for Java API-level integration.
Based on the scope of work, research was done by Sachin (around Jan 2007) to identify list of Wiki candidates.
Here is the List of Wikis:
| Tool name | Website url | License | Technology | Remarks |
| Dekiwiki | http://wiki.mindtouch.com/Deki_Wiki | |||
| VeryQuickWiki | http://www.vqwiki.org/ | GNU Library or Lesser General Public License (LGPL) | Works with tomcat. Written purely in jsps | A lightweight application and has some plugin support also. Does not have page level access permission but I think during integration this can be enabled. |
| UseModj | http://usemodj.sourceforge.net/ | GNU General Public License (GPL) | Works with tomcat. Based on struts, velocity | This application is similar to the one discussed above |
| yaWiki | http://yawiki.jzonic.org/page/show.jz | None found | Works with tomcat. Requires hibernate, spring, lucene, velocity | In addition to above this also has SOAP integration. Further it also has some inbuilt security feature. This looks more advanced than the other two. |
| Platypus Wiki | http://platypuswiki.sourceforge.net/ | GNU General Public License (GPL) | Works with tomcat 5.x | I am not able to view its online demo so cannot comment much. |
| Xwiki | http://www.xwiki.org/xwiki/bin/view/Main/WebHome | GNU Library or Lesser General Public License (LGPL) | Works with tomcat 5.x, uses velocity, groovy | This looks like a rich application, it has page versioning, page level security, etc. Integration with other application does not seem easy though. |
| ButorWiki | http://www.butor.com/showpage.do | GNU Library or Lesser General Public License (LGPL) | Works with tomcat. Based on struts, uses lucene | This is a file based wiki, with no db needed. I feel this tool can be a good choice of integrating with project.net. It has access control, wiki search, versioning, statistics etc. |
| Elsie Wiki | http://elsie.sourceforge.net/ | Apache Software License, Version 2.0. | Works with tomcat 5.x, built on top of java content repository API. It uses some of the apache implementations to run wiki services | This again is a good application, and say it has a clean and clear architecture. This perhaps would make integration easy. |
| JAMWiki | http://jamwiki.org/ | GNU Library or Lesser General Public License (LGPL) | Works with tomcat 5.x and supports db such as Oracle 10.2. Implemented using java/jsp | The demo site looks OK. It does have an authentication module, but was not able to know about other features like versioning, search. |
| SnipSnap | http://snipsnap.org/space/start | GNU General Public License (GPL) | Works with tomcat | It is a combine blog + wiki application. Has most of the required features like user management, search, versioning etc. It can act as a single application fo both wiki and blog. I am not sure on what it would take to integrate with project.net though |
Experimental Integration with MediaWiki
As a proof of concept a simple integration with MediaWiki was done. What was achieved in this POC was that one could navigate any wiki site running on MediaWiki instance 1.12, using pnet application. The integration was achieved by the REST apis exposed by MediaWiki.
Important links provided by MediaWiki
1. http://www.mediawiki.org/wiki/Download_from_SVN
Since many of the REST apis used by pnet have been developed or are being developed as part of their 1.12 release only, and as this release has not been officially released, one has to download wiki from their svn servers. Above link tells you how to download and build wiki from svn. It also tells you how to upgrade the MediaWiki instances running on older releases to the new 1.12 release.
2. http://www.mediawiki.org/wiki/API
Lists the REST api's exposed by MediaWiki, which we would have to use to integrate pnet with any MediaWiki instance. Some of these apis have been used for the POC.
Integration Client
As mentioned above the integration follows the REST approach of web services, it is essential to write a java client, which would make calls to these APIs and present the result to the pnet application to be displayed on its pages. As a result an open source Java Wiki Bot Framework (http://sourceforge.net/projects/jwbf/) has been used for the java client. Since most of the apis are still under development, we have simply downloaded the source and made it available as part of pnet source. On that source we have made extensions to implement clients for some of the new APIs exposed by MediaWiki, but not implemented by the said framework.
Integration Approach
We have introduced a module wiki in the pnet application. We have also added a db property prm.project.wiki.isenabled, which if set as 1 would enable the wiki in pnet. The integration is chosen at project space. Under project space there would be a navigation link wiki, clicking on this link would navigate to the main page of the wiki as configured for that project. As for POC all project would navigate to global main page set under defaultsetting.properties. Later we would add main page field as part of project space object.
Thus every page would have its own wiki page, from where one can navigate to other wiki pages linked to that main page and at a later stage one would also be able to create new wiki pages or edit existing wiki pages using pnet console itself.
Refer: project.net wiki.JPG as the wiki page of project.net on http://en.wikipedia.org/wiki/Project.net
Default Integration Setup
As for POC we have integrated any standard pnet application to use the wikipedia http://en.wikipedia.org/ running on MediaWiki instance of version 1.12.
This is the part of defaultsettings.properties, that are needed to configure pnet to user wikipedia.
One can modify these settings to connect to any other MediaWiki site.
wikiSiteHost=en.wikipedia.org wikiSiteHost.seq=21 wikiSiteHost.example.1=localhost:8080 wikiSiteHost.example.2=en.wikipedia.org wikiSiteHost.description=\ Specifies information for the url to be constructed to connect to third party media wiki. wikiSiteProtocol=http wikiSiteProtocol.seq=22 wikiSiteProtocol.example.1=http wikiSiteProtocol.example.2=https wikiApiSchema=w wikiApiSchema.seq=23 wikiApiSchema.example.1=wiki wikiApiSchema.example.2=w wikiApiSchema.description=\ The schema name to connect to the REST apis provided by media wiki.\n\ The url constructed would be in form <wikiSiteProtocol>://<wikiSiteHost>/<wikiApiSchema>/api.php? wikiSiteSchema=wiki wikiSiteSchema.seq=24 wikiSiteSchema.example.1=wiki wikiSiteSchema.description=\ The schema name to connect to the media wiki pages, hosted on the media wiki site.\ This schema name may be different from the api schema name.\n\ wikiRootPage=Project.net wikiRootPage.seq=25 wikiRootPage.example.1=Main Page wikiRootPage.example.2=Project.net wikiRootPage.description=\ The page wiki should default to if enabled, for any project.\ Project would have to specify its own root page name to override this.\n\ This can be done while creating a project space or editing its properties.
All the property descriptions are explanatory to understand what has been configured and how one can use them.
Attachments
- project.net wiki.JPG (119.0 kB) - added by uroslates on 05/31/08 10:35:14.
