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.

FAQ

This page provides answers to Frequently Asked Questions. Related discussion pages include:

  • Feedback - For support questions, comments, and other queries.
  • Bug Reports - Please report any bugs using JIRA.
  • Feature Requests - If there is a feature that you would like to see added please discuss it on this page. See the Roadmap for a list of planned features.
  • How to Help - For those interested in implementing a specific feature.
  • Roadmap - A list of planned features for future releases.
Contents

General Questions[edit]

What is a Wiki?[edit]

According to Wikipedia:

A wiki is a type of website that allows the visitors themselves to easily add, remove and otherwise edit and change some available content, sometimes without the need for registration. This ease of interaction and operation makes a wiki an effective tool for collaborative authoring.

Sites like wikipedia.org and wikitravel.org have proven that the Wiki process can work to collaboratively create valuable content.

What is JAMWiki's reason for existence?[edit]

If JAMWiki aims for "feature parity" with MediaWiki, what's its reason for existence? Just use of Java?

There are numerous reasons for JAMWiki to exist, but one of the most important is to provide a solid Wiki platform built with J2EE technologies. Every language has benefits and disadvantages, and Java is no different. At present Java has excellent support from application server vendors and database vendors that make it the preferred solution among commercial users. There is a large community that supports the Java language, allowing options that may not be available with a PHP-based system. JDBC for database compatibility, standardized tag libraries, support from numerous application servers, etc., are just a few reasons for choosing a Java-based Wiki.

As to why feature-parity with Mediawiki is important, at the present time Wikipedia is the largest Wiki site available, and thousands and thousands of users are already comfortable with the Mediawiki software. Mediawiki has had time to refine many features that are important for a successful Wiki, so following their lead seems like an excellent starting point. Feature-parity with Mediawiki does not mean that JAMWiki will not offer its own unique features (it already has many), but it is a good goal for defining what direction the software should be moving towards.

What capabilities does JAMWiki offer that Mediawiki doesn't?[edit]

Due to its Java architecture JAMWiki supports almost any J2EE application server, and most JDBC 3.0-compliant databases. It can also be easily integrated with other Java programs. Other specific features that differentiate JAMWiki from Mediawiki include:

  • Virtual wikis - multiple "virtual" JAMWiki instances can be run from the same web application.
  • Spring Security Integration - allows LDAP integration, OpenID integration, and fine-grained permissions.
  • Simple, web-based installation. You can quite literally have a JAMWiki instance running in minutes.
  • Support for almost any JDBC-compliant database, and an option to run JAMWiki with NO external database required when using the included, pre-configured HSQL database.

What Wiki syntax does JAMWiki use?[edit]

By default JAMWiki implements the same syntax as Mediawiki, the software that runs sites like Wikipedia and WikiTravel. Note that while the vast majority of the Mediawiki syntax set is currently supported, a handful of tags are not yet implemented - see the Roadmap for details. In addition, developers interested in adding support for an alternate parsing syntax can easily implement their own parser by creating a class that extends the AbstractParser class.

Does JAMWiki support MediaWiki's XYZ feature?[edit]

At the present time JAMWiki supports the majority of the Mediawiki syntax including:

While almost all Mediawiki syntax has been implemented, please report any omissions on the Feedback page. The Roadmap page provides a rough plan on when un-implemented features may be implemented.

What languages has JAMWiki been translated into?[edit]

Currently translations are available for the following languages:

  • English
  • Chinese (traditional and simplified)
  • Croatian
  • Czech
  • Danish
  • Dutch
  • French
  • Galician
  • German
  • Hungarian
  • Italian
  • Japanese
  • Norwegian
  • Polish
  • Portugese (Portugal and Brazil)
  • Russian
  • Slovak
  • Spanish
  • Swedish
  • Ukranian
  • Sinhala (Sri Lanka)

Note that some translations are more complete than others. Individuals interested in translating JAMWiki to their own language are encouraged to do so - see How to Help for details.

Why is it called JAMWiki?[edit]

See About JAMWiki for details of JAMWiki's naming, formative years, and (hopefully) glorious future. For those not willing to read the full story, the quick summary is that alcohol was involved.

How do I delete a topic/page?[edit]

You must be logged-in as an administrator, after which you'll see a "Manage" tab at the top of the page. From that tab there is an option to delete the topic.

Is there any watch/notification capability for topics?[edit]

Logged-in users are provided a watchlist that functions like the Mediawiki watchlist. There is some documentation on this feature at wikipedia:Help:Watching pages. Note that email notifications are currently NOT supported (as of JAMWiki 1.2.0).

How do I report a bug, request a feature, or provide feedback?[edit]

Bug reports can be made by adding an entry to the JIRA bug tracker - please include any relevant information from your logs and steps to reproduce. Feature requests can be made by adding an entry to to Feature Requests page. For those requesting a feature that they will not personally implement, persistence is important, so if you really want to see something added follow-up regularly; knowing that someone is very interested in something increases the odds of it getting developer attention. Finally, to ask a question, provide general feedback, or merely say "this works!", use the Feedback page - positive feedback is always appreciated, constructive criticism will be considered and acted upon, and nasty, negative comments will be completely disregarded.

Does JAMWiki have any mailing lists?[edit]

See Mailing lists.

Administrator Questions[edit]

What are the prerequisites for JAMWiki?[edit]

At a minimum JAMWiki requires a web application server that supports Java 5 or higher, servlet 2.5 or higher, and JSP 2.1 or higher. Tomcat 5.5 or greater is an example of an application server that meets these requirements. While JAMWiki can be run without an external database, for better performance an external database should be considered, and JDBC 3.0 or greater support is needed.

How do I install JAMWiki?[edit]

See Installation. A quick summary is that you can download the JAMWiki war file from Sourceforge and then install it as an exploded WAR file. JAMWiki will automatically begin the configuration process when you attempt to look at any page.

How do I upgrade JAMWiki?[edit]

See Installation#Upgrades for specific upgrade steps. The process for a JAMWiki upgrade and a JAMWiki installation are not the same! Be sure to follow the upgrade steps when upgrading to avoid losing data or breaking your wiki.

Note that it is possible to upgrade JAMWiki across multiple versions - for example, despite the fact that several intermediate versions exist, it is possible to upgrade a JAMWiki 0.7.1 installation by installing the JAMWiki 0.9.0 WAR file and following the upgrade steps. If you encounter any problems please report the error on the Feedback page. In general automatic upgrades are supported for only two major revisions, so while it would be possible to upgrade from 0.7.0 to 0.9.0, upgrading from 0.6.0 to 0.9.0 would require first upgrading to an intermediate release such as 0.7.0, and then upgrading to 0.9.0.

How are releases numbered?[edit]

Starting with JAMWiki 0.7.0 the release numbering has followed these rules:

  • The first number is the major version. Note that while this number is being bumped to "1" following the 0.9.x release series, in the future this number will likely only be incremented again if JAMWiki undergoes a serious architectural change, such as requiring a newer Java or servlet version. The reason for updating this version to "1" following the 0.9.x release series is primarily for marketing and psychological value; despite the fact that JAMWiki has been production-ready software for many years, a version number less than "1" is seen by many as indicating beta software.
  • The second number indicates the current release branch. An increment to this number indicates major changes from the previous release branch, including introduction of new functionality, special upgrade instructions, and changes to the database schema. For example, 0.9.x will differ significantly from 0.8.x, but 0.9.1 will contain only minor differences from 0.9.0.
  • The third number is the patch version. A "patch" version contains only bugfixes and (on rare occasions) very minor new features. When upgrading to a new patch version, for example from JAMWiki 0.8.0 to JAMWiki 0.8.1, administrators should not be concerned about major changes that would require special attention.

Beta releases are occasionally made available, particularly in the lead-up to the release of a new major version. A beta release will be made only after all planned changes to the database schema have been implemented. While not suitable for production use, beta releases should generally be relatively stable since the latest code will usually already be running on jamwiki.org.

How customizable is JAMWiki?[edit]

See Configuration. A web-based configuration interface allows very fine-grained customization of values such as the default wiki topic, whether or not to allow Javascript tags, database connection settings, etc.

How scalable is JAMWiki?[edit]

The latest JAMWiki trunk code (as of September 2010) is powering sites with over 225,000 topic records, nearly 2.4 million topic versions, and about 45,000 images. A customized JAMWiki implementation was created by a user who wanted to experiment with the data from Wikipedia that loaded and rendered over 2.2 million topics. Note that users with thousands of topics or who expect high loads should strongly consider using an external database rather than the version of HSQL that is pre-packaged with JAMWiki in order to maximize performance.

In terms of page delivery, JAMWiki uses Ehcache, database optimizations, and numerous other methods to improve performance. While stress tests have not been performed to determine maximum loads, misconfigured search spiders that have generated multiple page requests per second have not caused any noticeable deterioration of site performance. Be aware that, as with any software, many factors including the content being rendered, hardware, etc will affect specific performance results.

How does JAMWiki store file data (images, text or binary)?[edit]

Files such as images, binary files, or text uploads are renamed with a unique name and path and stored directly on the file system under the web server or web application server docroot. The base docroot folder is configurable using the JAMWiki admin tool.

This does not apply to the topic content that is stored inside the database using MediaWiki format.

Is it possible to manage users with different permissions?[edit]

Since JAMWiki version 1.3.x permissions can be managed at the group or user level. You can create one or more group, assign them specific permissions and assign users to the groups. Notice that user assignement to the pre-defined groups anonymous and registered users is managed by the system. You can assign users only to groups that you have defined yourself. You can also assign permissions directly to a user. This enables you a fine granularity for permission management. For example, it is possible to allow non-logged in users to view pages but prevent them from editing, or to allow only one or two trusted users to manage system settings. See the configuration guide for more information.

JAMWiki integrates with Spring Security, and thus supports LDAP, fine-grained access, and other capabilities via a configuration file.

Does JAMWiki use the same database layout as MediaWiki?[edit]

Due to license differences between MediaWiki and JAMWiki (MediaWiki is GPL, JAMWiki is LGPL) the MediaWiki database schema was not examined during JAMWiki development, and as a result the two products most likely differ significantly in their database layout. XML import and XML export tools exist to allow MediaWiki content to be imported into JAMWiki and vice-versa.

When using JAMWiki without a database, how are files stored in filesystem?[edit]

For installations that do not use an external database, JAMWiki ships with a pre-configured version of the HSQL database. Using this internal database requires no additional configuration from users and will store files on the local filesystem within HSQL. Note that these files are NOT stored as plain-text files.

Is it possible to use css-skins written for Mediawiki?[edit]

At the present time JAMWiki does not support the concept of skins, although it is possible to customize the look & feel of a site by modifying the StyleSheet, LeftMenu and BottomArea topics. Support for skins will likely be added in the future, but it may not be possible to exactly copy Mediawiki's skin implementation due to licensing issues (Mediawiki is GPL while JAMWiki is licensed under the LGPL).

I've encountered a problem / bug / error with JAMWiki. Help![edit]

Please report all bugs, errors, etc. in the JIRA bug tracker or on the Feedback page. If possible include any relevant messages from your jamwiki.log file; the location of the jamwiki.log file is specified in the /WEB-INF/classes/logback.xml file by the LOG_DIR value - by default logs are written to your application server's temporary directory (for example /temp in Tomcat).

Is it possible to revert to an older JAMWiki version?[edit]

The only way to revert to a previous version of the JAMWiki software is to restore from backup. To revert a topic version, view the topic history by clicking on the "History" tab, select the version to be restored by clicking on the date for the given version, and then edit that version and re-save. The old version will now be current.

Can data be exported/migrated from the JAMWiki database?[edit]

As of JAMWiki 0.6.6 there is a new option to export JAMWiki data from either the HSQL internal database or any other database to another database instance using tools on the Special:Maintenance screen. The Special:Export and Special:Import tools can also be used to import and export individual topics in XML format.

How can I execute SQL directly when using the "internal database" setup?[edit]

The "internal database" setting uses HSQL. A Google search will provide options for accessing an HSQL database. Connection settings are:

user:     sa
password: no password (leave blank)
url:      jdbc:hsqldb:file:path-to-your-database-files

Note that the URL must specify the path on the filesystem to the HSQL database - this will be located in the /database folder of your wiki file-system directory. For example, on Windows a sample URL would be: jdbc:hsqldb:file:c:\jamwiki\database\jamwiki.


How do I configure an alternate search engine ?[edit]

From JAMWiki version 1.1, you can configure an alternate search engine, the RankingAlgorithm search engine instead of the default Lucene search engine. You can configure this using the admin GUI, click on Admin, scroll down to SearchEngine in the Configuration/General settings tab and choose RankingAlgorithm Search Engine from the drop down menu. You can download RankingAlgorithm search engine from here, http://rankingalgorithm.tgels.com. Copy rankingalgorithm.jar file into WEB-INF/lib folder and restart JAMWiki application. RankingAlgorithm uses the existing Lucene index but ranks and scores documents differently, so no changes are needed other than choosing the RankingAlgorithm Search Engine as the default search engine.

Development Questions[edit]

What features are planned for future JAMWiki releases?[edit]

The Roadmap has a list of features that are planned for future JAMWiki releases. If there is a particular feature that you feel is missing or that might be useful, please add a description of the feature on the Feature Requests page. If you are interested in helping to implement new features please see the How to Help page.

Is there any information available about JAMWiki's design?[edit]

Please see Tech:JAMWiki Design, which attempts to provide a high-level overview of the JAMWiki architecture. Javadoc is also available. Note that these may be out of date, but requesting an update on the Feedback page will often lead to them getting some attention.

Why doesn't JAMWiki use features from the latest Java release?[edit]

One of JAMWiki's goals is to be able to run on older application servers, and as a result all JAMWiki code is currently Java 5 and Servlet 2.5 compatible. Many businesses and institutions upgrade their application servers only when they have to, and as a result there is a large base of servers that will not support newer JDKs. JAMWiki began requiring Java 5+ with the release of JAMWiki 0.8.0, since JDK 1.4 had completed its end-of-life period on 30-October-2008. Currently the roadmap calls for requiring Java 6+ for JAMWiki 2.0 since Java 5 reached its end-of-life on October 8, 2009 and many of JAMWiki's core dependencies, such as the Spring Framework and Lucene, have announced plans to require Java 6+ in upcoming releases.


How can I add Contents menu on the top of the page?[edit]

Use "__TOC__". See also Help:Magic_words and Feedback#How_to_add_the_list_of_content for more details.

For Further Help[edit]

I have a question that isn't answered here[edit]

Feel free to post any new questions by clicking the "Edit" link and adding your question. For specific questions (those that aren't frequently asked questions) please use the Feedback page.