Current development on JAMWiki is primarily focused on maintenance rather than new features due to a lack of developer availability. If you are interested in working on JAMWiki please join the jamwiki-devel mailing list.

Tech:JAMWiki 1.2

ktip.png This page (and all pages in the Tech: namespace) is a developer discussion about a feature that is either proposed for inclusion in JAMWiki or one that has already been implemented. This page is NOT documentation of JAMWiki functionality - for a list of documentation, see Category:JAMWiki.
Status of this feature: JAMWiki 1.2 has been released. See Tech:JAMWiki 1.3 for the planning document for the next major release.

This document captures items that may be considered for implementation for the JAMWiki 1.2 release. Note that general feature requests should be discussed on the Feature Requests page, but feel free to add comments about items on this page below, or to suggest items already on the feature requests page for implementation in this release. If you would like to contribute to this release see How to Help.

Contents

Items Planned for Implementation[edit]

These are items that are on the TODO list for the next major release, although this is no guarantee that they will be implemented. Those items marked as "DONE" are committed to trunk and ready for release. Items marked as "IN PROGRESS" have code committed to trunk, but further work may be required for full completion. Items marked as "DEFERRED" will most likely not be included in JAMWiki 1.2 and will instead appear in a later release.

If a particular feature is of interest to you and you are willing to do some research, help with debugging, or write code, please leave a comment below and get involved - user enthusiasm is often a driving force behind getting features into a JAMWiki release.

Status[edit]

Implemented[edit]

In Progress[edit]

  • Further performance enhancements.
    • revision 3688 speeds up file imports by eliminating an unnecessary search index update. -- Ryan • (comments) • 20-Aug-2011 14:22 PDT
    • revision 3762 should provide a minor performance boost when importing topics due to fewer regex matches being performed. -- Ryan • (comments) • 25-Sep-2011 21:19 PDT
    • revision 3763 should speed up topic imports by using batch mode for topic version inserts. -- Ryan • (comments) • 26-Sep-2011 20:14 PDT
    • revision 3817 and revision 3820 significantly reduce the number of objects created (and garbage collection required) by re-using parser and lexer instances. This seems to be worth about a five percent performance improvement. -- Ryan • (comments) • 11-Nov-2011 20:25 PST
    • Numerous micro-optimizations have been introduced in the parser code, resulting in a small speedup in benchmarks. -- Ryan • (comments) • 04-Dec-2011 10:30 PST
    • revision 3874 optimizes the cache and should provide a noticeable performance boost. -- Ryan • (comments) • 13-Dec-2011 22:02 PST
    • revision 3991 improves parser performance while reducing memory usage by lazy loading data structures. For cases where topic parsing requires lots of temporary objects to be created the impact of this change is dramatic - parse times for [1] dropped from 21s to 5s. -- Ryan • (comments) • 03-Feb-2012 18:44 PST
  • Mediawiki compatibility improvements.
    • revision 3712 adds support for the {{padleft:}} and {{padright:}} parser functions. -- Ryan • (comments) • 05-Sep-2011 10:02 PDT
    • revision 3720 updates the pagename and namespace magic words to support an argument, matching current Mediawiki behavior. Example: {{PAGENAME:Template:Main Page}} → Main Page. -- Ryan • (comments) • 06-Sep-2011 19:21 PDT
    • revision 3721: "{{ns:}}" should return the same value as "{{ns:0}}" to match Mediawiki. -- Ryan • (comments) • 06-Sep-2011 20:44 PDT
    • revision 3761 enhances the #expr parser function to better match Mediawiki by supporting the order of operations and functions such as "round" and "trunc". -- Ryan • (comments) • 25-Sep-2011 17:52 PDT
    • revision 3799 overhauls paragraph parsing to fix several edge cases that were previously not Mediawiki-compatible. -- Ryan • (comments) • 11-Nov-2011 20:25 PST
    • revision 3802 changes wiki line breaks ("----") to match Mediawiki by allowing four or more dashes as well as text on the same line as the dashes. -- Ryan • (comments) • 11-Nov-2011 20:25 PST
    • revision 3807 allows newlines in table cells to start paragraphs, matching Mediawiki. -- Ryan • (comments) • 11-Nov-2011 20:25 PST
    • revision 3818 allows whitespace before wiki table syntax, matching Mediawiki behavior. -- Ryan • (comments) • 11-Nov-2011 20:25 PST
    • revision 3860 allows thumbnail images to be specified using "thumnbail" in addition to "thumb" to match Mediawiki. -- Ryan • (comments) • 04-Dec-2011 10:30 PST
  • Allow alternate TOC styles, or at least a way to shrink the current TOC which takes up too much space on pages with numerous headings such as the Latest News page.
  • Tech:System Messages - Move the system topics (StyleSheet, LeftMenu, BottomArea) to the JAMWiki: namespace, split the CSS in two, add additional customizable sections.
  • Simplify the installation and upgrade process, including potentially allow JAMWiki to be installed without the need to use an exploded WAR structure.
    • revision 3823 moves the spam-blacklist.txt file and the jamwiki-configuration.xml file to the JAMWiki system directory so that they will not need to be restored during upgrades. -- Ryan • (comments) • 14-Nov-2011 18:56 PST
    • revision 3936 moves the default uploaded file storage from the webapp to the JAMWiki file system directory so that there is one less manual step required during upgrades. -- Ryan • (comments) • 07-Jan-2012 15:55 PST
    • revision 3946 now allows upgrades without the need to copy the old jamwiki.properties file. If, after the user specifies database and file system, an existing installation is found during setup (ie the user installed a new WAR file without copying old configuration) then the user is given an option to restore the old configuration and automatically perform any required upgrades. -- Ryan • (comments) • 11-Jan-2012 21:07 PST
  • Feature Requests#Image Storage - allow storing images in the database rather than on the filesystem.
    • Code has been committed on branches/avhohlov and branches/wrh2/dbupload. -- Ryan • (comments) • 18-Dec-2011 09:13 PST

Deferred[edit]

  • WYSIWYG Editor. Note that this feature has been deferred for several major releases due to complexity of the integration.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred yet again. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Add additional user options to Special:Account including per-user customization of date & time (see Bug Reports#Date and time are not in locale formatted in JSPs), show/hide TOC preference, signature preview, etc. See mediawiki:Help:Preferences.
    • With JAMWiki Beta 1 pending it is too late in the development cycle to introduce new feature that require database changes. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Tech:Email - email integration.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Add "new message" notices when a user talk page message is added. See Mediawiki's implementation.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Improved password salts. See JAMWIKI-36.
    • This is a feature that I would very much like to see implemented, but some of the required dependencies make this difficult to do in a way that is backwards compatible. Upgrade to Java 6 would simplify things as crypto support improves from Java 5. In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Add support for "undo" (metawikipedia:Help:Reverting#Undo) and "rollback" (metawikipedia:Help:Reverting#Rollback). Consider http://code.google.com/p/jrcs/ which may make this easier.
    • Although this feature would greatly improve usability the Java diff libraries that I looked at do not support this functionality in a simple way, so it is being deferred for a later release. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • The Lucene index should store HTML, not wikitext. Look into the org.apache.tika.parser.html.HtmlParser parser as a way to implement this capability.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Solr integration. See JAMWIKI-44.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Better XSS detection, see for example http://stackoverflow.com/questions/2147958/how-do-i-prevent-people-from-doing-xss-in-java.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 29-Jan-2012 21:13 PST
  • Refactor the spam blacklist to no longer be file-based. See mediawiki:Extension:SpamBlacklist for Mediawiki's implementation.
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 05-Feb-2012 13:05 PST
  • Update the UI on image pages to more closely match Mediawiki (thumbnails, dimensions, revision dates, etc).
    • In the interest of wrapping up JAMWiki 1.2 development this feature is being deferred. -- Ryan • (comments) • 05-Feb-2012 13:05 PST

Comments[edit]

It's been five months since the release of JAMWiki 1.1, which means that JAMWiki 1.2 is due in another month. As a result I'm declaring JAMWiki 1.2 to be at a feature freeze, although there are a handful of minor items I'd still like to try to address prior to pushing the first beta:

  • The various spam filters and user blocking mechanisms should probably be consolidated under a single interface.
  • EhCache is throwing net.sf.ehcache.pool.sizeof.ObjectGraphWalker warnings that need to be investigated ("The configured limit of 1,000 object references was reached while attempting to calculate the size of the object graph. Severe performance degradation could occur if the sizing operation continues. This can be avoided by setting the CacheManger or Cache <sizeOfPolicy> elements maxDepthExceededBehavior to "abort" or adding stop points with @IgnoreSizeOf annotations. If performance degradation is NOT an issue at the configured limit, raise the limit value using the CacheManager or Cache <sizeOfPolicy> elements maxDepth attribute. For more information, see the Ehcache configuration documentation.")
  • The Facebook and Twitter tags could use an initialization parameter to allow restricting them to certain pages.
  • There still isn't a good way to implement custom Javascript or meta tags in JAMWiki.
  • The upgrade changes need further testing, and potentially some consolidation of the ugprade and setup code could be done.
  • The new image storage code (database and JAMWiki system folder) needs some additional review - I think it's good but need to verify.

There may be other items - I'll try to keep this list updated as I find things, but I'd like to get a beta out soon and probably won't hold the beta release if things aren't 100% complete. -- Ryan • (comments) • 29-Jan-2012 13:10 PST

revision 3982 consolidates the user blocking and honeypot validation under a single interface and a new package. -- Ryan • (comments) • 31-Jan-2012 19:40 PST
ReCaptcha has been cracked and the various IP blacklists don't seem comprehensive. JAMWiki 1.2 is also going to need at least one or two more spam handling options as jamwiki.org is now seeing about five spam accounts created each day. -- Ryan • (comments) • 31-Jan-2012 23:26 PST