The following is a proposed list of features and polish planned for JAMWiki. Feel free to add ideas to the Unscheduled section, and they may be scheduled to be worked on for a future release. Also note that bug fixes are not included in this list and should instead be reported on the Known Issues page.
This list is a work-in-progress, and will definitely be modified over time. See also Current Development Status, which contains a list of features currently being worked on. For roadmap items that have been incorporated into JAMWiki releases see the Changelog.
If you're proposing a feature that would obsolete, supercede, or very likely interfere with another feature, keep it in the same section with a subsection title that either makes very clear what alternative mechanism you're proposing, or that it's a "contrary position" that the mechanism is clearly not desirable. Feel free to edit contrary positions into constructive alternatives but do NOT omit the fundamental arguments against the original proposal when you refactor. If necessary put the whole section in issue/position/argument form or some other logic tree format that makes it easy to compare competing positions on one issue.
The following list includes plans for upcoming releases. These may (and likely will) change.
An unfortunate but necessary feature required of any popular Wiki is the ability to block certain users. While my personal belief is that most annoyances can be handled better by simply reverting vandalism, more sophisticated attacks (such as automated or scripted attacks) require a block as the only reasonable way to stop a vandal. It should be possible to block users at both an IP and a username level.
"The 0.6.0 release WILL offer fine-grained permissions, allowing a site administrator more control over limiting what users are allowed to do -- see Tech:User Permissions. I'm hopeful that the release will happen before the end of the month." Ryan 10-Aug-2007 19:14 PDT
Holger Engels proposed "a permission for every item (function/ data) worth protecting. Permissions can then be bundled as Roles (i.e. nobody, user, admin, ...) and Roles can be assigned to Users. This is more flexible, because then one can freely define new roles."
Use cases should be raised in Tech:User Permissions where several already exist. Detailed discussion of use of roles, integration with multiple virtual wikis, categories and namespaces also belong on that page.
Longer term goal is to implement an ACL-based permission scheme allowing various Wiki actions to be assigned to users or groups. This is an extremely complex feature that can very easily be abused, and many exploits are possible to defeat such systems.
It's likely to be a classic ACL system - an admin defines a group consisting of users and (possibly) sub-groups. There will then be a series of actions that can be assigned to one or more group. For example, there might be a translator action (access to Special:Translation), a web design action (access to StyleSheet, BottomArea, TopArea),
a site admin (ability to delete pages, make pages read-only, etc), a sysadmin (access to Special:Admin), etc. The tricky part will be implementing this in a way that is/could be compatible with existing LDAP solutions, and also doing it in a way that doesn't kill performance.
Users who "want to restrict the write-access to authenticated and approved users" such as Tom should use apache passwords on "edit" URLs. Within jamwiki Ryan says they "can currently prevent non-logged in users from editing by selecting the "Force setting of username" option from Special:Admin - that label isn't very clear for the checkbox's purpose and will probably be changed for the next release."
There is a contrary position that deserves representation as it may influence some aspects of implementing this, and at least prevent the worst errors and misfeatures.
Fine-grained permissions in the wiki itself have several serious problems:
Until how the interaction with the web server, a publishing/blog mechanism and the social patterns of the wiki is clearer, implementing gACL should be put off. Apache integration needs to be very carefully thought through, as does multiple virtual wiki integration. Then namespaces. Then categories. Only when the implications of permissions associated with all of these is a lot clearer, should a separate permissions system per page start to evolve.
Intellipedia, the US intelligence community's massive mediawiki, don't use or need fine-grained permissions. They rely on perimeter protections and the web server. If that works for them, why not for everyone else?
At the very least all fine-grained permissions must be able to be turned off post-facto with one click in the configuration. They are almost always so badly designed that they destroy any chance of collaboration and even very experienced administrators often have to redo them every few years or so.
A captcha or solve-this-number-puzzle utility is also required because spam filters are hard to configure and often problematic. It needs to be integrated with the permissions system since "allow edit with captcha" is a permission level. It's also a mediawiki extension.
Even if there's no other permission system, this needs to be supported.
Also, block IP and ban user should not be confused. One implication of this is that users should be able to claim specific IP numbers as themselves post-facto, and that a much softer, easy to challenge and undo, way of associating IP numbers with an identity or "user" might be required (though it's probably better to associate them with a faction that might only have one person in it). A faction is basically a group created by the users themselves, as opposed to officially sanctioned by administrators. There are various ways to deal with these, but the best way is to simply let users decide for themselves which of several factions' tags or ratings should appear in their own view of things. This is a form of "soft" permissions". See below under rating systems also.
For licensing purposes there should be a credits block on the bottom of each page with links to the user pages of all users who have contributed to an article. Because this isn't universally desirable, including should be a checkbox option with the fact that this is required by GFDL and CC-by licenses noted beside the checkbox.
Credits for authoring also need not to be hardwired but instead to be part of BottomArea and easily removable or customizable (more or fewer names, etc.); You don't want silly pseudonyms to have to be displayed, or lots of IP numbers; It's also not correct to call all non-real-names "anonymous" since often someone responsible knows who they are and this might be legally thorny. If one associates all bald IPs with the tag "anonymous", fine, but it is just as important to be able to put another tag on specific ranges or lists of IPs.
There are problems when dealing with IP numbers and multiple pseudonyms. Like everything else dealing with licensing and copyright and credit it should go in the BottomArea by default and be easy to remove. The default checkbox would then only determine whether it was included by default in a given install.
The CCplus protocol is a simple standard way to request more rights than a CC license requires. CC0 is for certifying that there are no rights or that a work is public domain. They are easy to support if a CC license is in use, putting the appropriate logos in the appropriate places, possibly the BottomArea. Technically this is a permissions issue since it's legal but since it may involve contacting the people listed in the "Credit" it should be considered as part of that feature. For instance if someone has used the CC0 or CC+ protocols to grant specific rights to a page then its copyright status is easy to determine with a program, and this might be used to determine, for instance, whether the source text of a page is displayable or not.
XML import and export is useful for complying with open source licenses such as the GFDL and the CC-SA license, as it allows the full history of an article to be downloaded and credited. However, while this feature may be implemented in some form to allow for testing using data from other wikis, it will probably not be implemented as a fully supported feature for a while.
The extremely strategic and useful feature of Getwiki (a mediawiki fork) is that it draws in an entire wiki and populates all pages that are populated in that other wiki, and then lets users merely specialize and customize the pages. This is how Wikinfo works and it's how most organizations SHOULD use wiki content. That is, NOT write most of it themslves but rather import and specialize. Getwiki/Wikinfo uses some color coding to tell users which articles have been imported and which not.
Being able to nest wikis in a multiple-wiki cascade would make jamwiki extremely useful for projects that, like most in a private corporation, have multiple layers of security.
Add talk pages for anonymous users. Mediawiki has them: The user name is the IP address.
Maven is an interesting project management framework. Discuss how this can be used for Jamwiki Tech:Maven
This section is for any idea that someone would like to see implemented in JAMWiki. If there is a Mediawiki feature that isn't listed above, feel free to add it here. If there's something that isn't in Mediawiki but you'd like to see it in JAMWiki, add it here. If you've got some crazy idea and you'd just like to see it discussed, add it here - the more ideas the better. Please understand that many items listed here may never be implemented; they are here simply as a place to provide discussion and to ensure that they aren't lost.
This wikimatrix comparison helps to pinpoint some problems with mediawiki compatibility. The syntax section of the JAMWiki entry needs update so that it is clearer that the intent is to exactly mirror MediaWiki syntax. That needs to be stated clearly in several entries, else it will be very misleading. WikiMatrix itself should make it easier to find compatible syntaxes and should allow MediaWiki compatibility intent as a field, just as it does with the now-dead WikiCreole non-standard.
Wikimatrix lists the following features as available in mediawiki but not in JAMWiki:
JAMWiki supports the same strikethrough (s) and center (center) notation as mediawiki but Wikimatrix says not, that strike and div are used instead. This prevents JAMWiki and Mediawiki from showing up as supporting identical syntax, critical for spreading JAMWiki. Checks need to be made to ensure they really are being treated identically.
Next to identical syntax, this is probably the most important feature. It's really difficult to find out what links to a page unless this is supported universally. Mediawiki has a "what links here" feature (that really should be called "What links to this page" to avoid unnecessary spatial metaphor, "here" is a priveleged real world concept when you're working on oh say any mobile application). TikiWiki lists backlinks on a pulldown menu, and it would be nice to do this ALSO in JAMWiki (but still support a dedicated page for them that can be picked up by a bot. TikiWiki also makes it easy to include a macro to list backlinks in page text, or even to list an RSS feed within a page.
These names for Special pages are very unfortunate as they overlay some unnecessary and misleading language on top of the functions. The best way to support these features is to support the mediawiki names for them but also simultaneously (without an option turning them off) support more operational names that say exactly what is being displayed:
For instance, calling the list of open links that, and supporting "Special:open_links" or "Special:all_open_links" (letting open_links be used with an argument to track those specific to a page or tree of pages) as a synonym for the POV "Special:Wantedpages". If this gets rid of the run-together words that create temptations to make up bad new WikiWords, great. Time for special page name to be readable in ordinary English and not require anchor text any more. There are persistent reasons other than "Wanting that page to exist" to open a link to it.
As for "popular", it's beneath contempt. They are the "most_viewed_pages" or "least_viewed_pages" and that's all they are. It's not clear that humans viewed them nor why and this concept of popularity doesn't exist in the user interface nor in SEO talk either. Page views are what they are called in that lingo and the more familiar the Special page names are to SEO people the more will be using JAMWiki to get reports from it they understand.
RSS feeds are extremely important and having to subscribe to one per page or having to create watchlists just for this purpose is problematic. TikiWiki also makes it easy to include a macro to list backlinks in page text, or even to list an RSS feed within a page.
There are extensions that provide a lot of information about who's looking at what page.
The most useful features, which mediawiki does NOT support for commercial reasons related to the Wikia and Bomis corporations, would make visible the most-transited links between pages. This is critical to finding the paths people are taking through the data and improving it.
This really is problematic. It's barely justifiable to call the namespace "discuss:" since that's the verb on the tab in mediawiki (it doesn't match the name of the namespace). But "comments" is not even a verb so it isn't like "edit" or "print" which imply something will be happening. Probably best to simply revert to mediawiki's usage for now and support namespaces better.
As this extension documentation shows, mediawiki as of 1.7 was supposed to have simple namespace management so it wouldn't hurt to anticipate that and flex up the namespaces.
This is pretty important since Mediawiki-based services emphasize social software features while content management seems to lack.
Sigh - when is that dynamic inclusion of pages from Wikipedia going to work?
Mediawiki also exports to many other data types. See below under user interface.
Ongoing, add to this Wiki
At a minimum an installation and configuration guide is required. While JAMWiki is meant to be simple to install, as much help as possible that can be provided to people should be provided. Ideally, admin and setup options will include help text. Note that detailed documentation, such as Wiki syntax documentation, will be more easily managed as topics on the Wiki and may not be included as part of a JAMWiki distribution.
Redirecting the name of a category to that category should be an option across the whole wiki, and should automatically create a tag with the same name as the category. That is, if there's a [[category:trolls]] and no article [[trolls]], then the latter should be automatically REDIRECTed to the former.
Easy listing of tags (as in blogs) so that tags can be listed as "in" a category, makes it very easy for searches of tags in tag-based search engines to pick up and list wiki pages.
In combination with wiki nesting/import, this also permits EXTERNAL pages that have the tag to be listed below INTERNAL pages that have the category applied. It should also be possible to have pages that have similar search terms added.
With all these features implemented, one's own wiki becomes a lens by which to view all other blogs and wikis, and one is far less reliant upon categories to organize information, except for those categories one uses internally.
This is discussed extensively in Feature Requests, Tech:User Permissions and above. It is an extraordinarily complex and fragile feature that has the capability to render entire wikis useless if minor errors are made. The discussion needs to be refactored very badly into an issue/position/argument treatment - right now the discussion ranges over four sections of the Roadmap, and also Feature Requests and Tech:User Permissions (which now has some use cases outlined at least, but needs many more of those)
Allow some pages or namespace or categories whatever to be readable/editable/whatever based on user permissions.
For example, the LeftMenu, BottomArea etc. are current editable topics - some wikis encourage collaboration on the user interface design but these are especially fragile pages. Everyone should be able to fix an error or unnecessary dead or open link but their fix -the latest version - might be best held for someone else to approve of, say make a null edit so that for those pages only the most recent version created by an editor with permission to change the user interface will be used to actually generate the framing on each page.
It may be desirable to include content from mailing lists and other sources, in which case that content should be read-only (changes to someone's original email would be wrong and confusing, though most wikis manage this socially and have few or no problems with attempts to screw up attribution and so on.
Wikinfo deals with this well: It imports Wikipedia pages but it allows them to be viewed and edited as if they were local, creating a new Wikinfo page. Warnings and headers on the Wikipedia imported page explain the options that the user has: edit at Wikipedia using it's editorial process, or edit at Wikinfo and create a new page from Wikinfo's POV.
Another useful user group ("moderator" or "senior editor" or similar) could have rights to make topics read only, and other types of low-impact admin tasks, but unable to do proper admin tasks (e.g. can't access admin pages).
The jabber ID is in use now as a universal single login for multiple wikis. Wikimedia proposed using it as it is a far more distributed and already-implemented infrastructure than OpenID, with none of OpenID's many problems (most notably the way OpenID is biased towards identifying everything with a person's body or "real name" rather than merely a persistent account name). It should be implemented before OpenID because there will be far less resistance to it, and because jabber clients also support all the chat networks.
OpenID provides a way of logging into multiple web sites. It would be nice if there was a UserHandler for JAMWiki that provided OpenID support.
Implement the capability to email a new password when a user clicks on a "forgot password" link. See also ForgottenPassword.
See http://www.firstmonday.org/issues/issue11_9/cross/index.html for a discussion of some issues. In order to better handle vandalism it might be nice if there was some way to recognize reputable editors and then give an idea when viewing changes and history as to how reputable an edit actually is. This system could probably be enhanced by using spam filters, edit patterns (see http://en.wikipedia.org/wiki/User:Tawkerbot2), etc.
See also http://www.firstmonday.org/issues/issue8_8/jordan/ for a discussion about Augmented Social Networks -- Jack 07-Mar-2007 15:01 PST
Any definition of "reputable" is wrong or at best controversial. While it's a very sound idea to ORDER PRIORITIES of administrative actions based on some metric that an administrator chooses to trust, that can't be one imposed by the system, so to work it has to be very customizable. It has to be social and dealt with as part of a suite of social features like friends and etc..
The least controversial thing to do is encapsulate the "reputation" system so a "faction" of users agrees to use and maintain it. The default could be that all administrators form one faction, but anyone could form a new faction and adjust the parameters of the system or simply hand-undo the way people or IPs have been labelled. In any case the system itself must not impose one way of assessing "reputation" or, sure as slashdot, it'll be gamed as a moral obligation by all those people who object to such systems on principle. That's far less likely if the whole thing is properly labelled as merely one faction's choice of how to set its own internal priorities.
In especially contentious wikis or those with a real need to express fairness, the factions could compete as parties do in elections to set the dominant mode of reputation.
Anything less is an administrative power grab, so no "reputation" system should be implemented until it's very clear that subscribing to a reputation system is voluntary and that any group of users can set up their own independent of that which the administrators prefer.
Ten minutes on Slashdot and you can see exactly what's wrong with having one monolithic "reputation system" - insightful posts by strangers sit at zero as crap authored by trolls gets modded up to +5 by each other as sort of a game. Administrators are just old trolls - they'll censor those who they don't understand or like, and drive everyone else off, if they can. Wikis just don't work if users rank and rate each other rather than the pages, and they won't work also if pages disappear just because someone unknown wrote them.
Add an icon next to the "User comments" link in the user menu to indicate that a new message has been added to a user's talk page, similar to what is done on Wikitravel.
Ideally, send the message itself to a chat network, possibly one tied to the email registered. It really is not difficult to find an MSN or Yahoo or jabber account matched to that email, or to ask for it up front when registering. If the user who left the message also has such an account, jamwiki could even set up the two in a chat to talk to each other live.
JAMWiki will eventually need to be able to send email in order to support registration confirmation, "email this user" functionality, forgotten password functionality, etc. There is code in the codebase currently to support sending email, but it is untested, orphaned, and un-reviewed. Tech:Email
Create tools to do things such as integrating with mailing lists. It is difficult to follow the discussion on a mailing list due to a lack of context, so it would be nice to allow a Wiki interface to follow those sorts of discussions. Add a message on the Wiki should (optionally) send a message to the mailing list.
The old Very Quick Wiki code had RSS support, but it was unmaintained after the JAMWiki fork and has been removed. Re-implementing RSS should be a relatively simple matter, although it would be best to match Mediawiki's format when it is done.
Wiki user pages are actually much more functional than typical social network applications like Facebook or MySpace, since they can be arranged arbitrarily and users can develop their own conventions to signal things (for instance the way Wikipedia users explain their expertise and language mastery to each other with tags on the pages) to each other without having to be programmers.
Also, wikis do a far better job of letting someone track individual topics of interest (rather than "groups" which tend to be larger grained), and letting others review your contributions to find points of common interest.
However, creating such user pages requires more work than say Facebook pages which typically can be created by agreeing to a few things with single clicks. Some user page templates need to be built in to make it easy to make a Facebook-like or Wikipedia-like profile with whatever tags seem relevant to that wiki.
Until now also there was no standard way for developers to extend the social functions, for instance, introducing people based on common interests as signalled in watchlists (without revealing necessarily what those are) or contributions. But now there is, the OpenSocial API. Using that, "developers can create applications, using standard JavaScript and HTML, that run on social websites that have implemented the OpenSocial APIs. These websites, known as OpenSocial containers, allow developers to access their social information; in return they receive a large suite of applications for their users. The OpenSocial APIs expose methods for accessing information about people, their friends, and their data, within the context of a container."
So if JAMWiki user page templates report the social information to code that publishes it via the OpenSocial API, every jamwiki web site becomes such a container. This works especially well with a single login and blogs since signing pages in other wikis can trace back easily to the profile that includes the most social information. This in turn would prove especially useful for resolving disputes - you might find it really easy to find mutual friends who could moderate the discussion on some controversial or inflamed topic. This could even be automatically invoked on say violations of the 3RR.
The hardwired reputation system can be easily replaced once social networking and OpenSocial are supported - just use the typical filter sharing and heavily friends based recommendations and ratings systems typical of social networks, rather than a gameable horror which only slashdot trolls will love.
Detecting whether the same version has been restored three times (or some other number set by the system) could be built in and trigger a log. While there are legitimate reasons to do this, like wiki spam and wiki vandalism, generally other solutions such as captcha and block IP should be used for repeated offenses. The 3RR exists for human disputes and the system could help resolve them with a 3RR log and, in conjunction with the social features possible with OpenSocial, find a mediator.
This is a notification/messaging concern because the system itself should not set hard policies about inter-user disputes.
I'd like my wiki engine to be a blog engine as well. Maybe, each user could have a Special:Blog page. The n latest entry would be displayed there. Writing an entry should allow wiki syntax with links to real pages, obviously. And trackback must be supported. Ideally, the API of a major blog engine should be implemented in order to allow web site integration. -- Régis Décamps
wiki_url=http://en.wikipedia.org/wiki/${title}
image_url=http://www.groovy-news.org/e/axelclk/${image}
Not that anybody asked me, but ... I don't think building blog functionality into a wiki is the right way to go. They are fundamentally different in purpose. Blog is a publishing tool for non-editable content. Wiki is a collaborative editing tool. I think it's fine to have sister projects that are compatible, but I would not recommend combining them into one piece of software. -- scroco 13-Oct-2006 16:47 PDT
I'd like to see an extension to add blog functionality to JAMWiki, too. I used many Wikis and occasionally I want to add blog entries. I like the freedom of Wikis to design my entries with wiki syntax and arrange them howsoever I like. But the software could support me, especially with overview pages and tagging :-) Mike 21-Jul-2007 18:46 PDT
Another option would be to put a "publish" tab on every page, similar to the page history, which shows only those versions that a given faction or group of users has chosen to "publish" as their approved version. This capability, minus the democratic ability to have multiple such factions, was discussed extensively as a "sifter" or "official Wikipedia" back in 2003 or so by Larry Sanger (in Sanger's version, he himself would lead the only faction able to make publishing choices, but there's no inherent reason for this exclusivity).
Then the "blog" interface consists of the published version and all comments on any published version by any faction that one "subscribes" to (say via RSS). If one subscribes to the published version one sees only publications by some faction, not all edits by everyone. It would be clear which version a comment was attached to (which is very UNCLEAR in wiki talk pages) but all comments would be visible at once with the latest version, and it would be easy to look at the earlier published versions. Looking at the entire page history would be possible but not mandatory. This would make it easy for private wikis to publish to public websites.
"StartingPoints" is a WikiWord beside "Recent Changes" which isn't consistent with the mediawiki "Special:Recentchanges", and while "Special:Specialpages" is, "Special Pages" isn't. This is a mess and it's very easy to fix:
Allow the ability to rename the default virtual wiki "en" to something else.
Currently the JAMWiki diff code highlights lines that have changed. However, if only a word or two within that line changed it can be difficult to see what actually was modified. Mediawiki adds additional syntax highlighting to the portions of a line that changed, and it should be possible to do the same with JAMWiki by first finding lines that have changed, and then diffing the two lines to find letters and words that have changed. This functionality isn't difficult to implement, but it IS difficult to do in a way that keeps the code readable and maintains a separation between presentation and processing logic.
Wikis are a valuable tool for design since they allow users to collaborate to work out design details. Once something is "complete" there should be a way of exporting that information, either as a series of HTML pages or in some other format. Note that this request envisions designs that encompass multiple topics - for single topics there is always the "Print" tab.
Ideally the print tab should have the option to print as PDF or HTML or even ODT (OpenOffice, which is also based on Java) or DOC files (Microsoft is still widely used, sadly).
The request below copied from the FAQ page:
It would be nice to allow a PDF export of single pages or group of pages. It should be very helpful to organize pages also into trees. This feature will enable the usage of JAMWiki in order to create manuals or documentation.
If you (or anyone else) are interested in helping LGPL-ing the pdf creation feature of Wikiweise, drop me a line (mail @ ulrich-fuchs . de). I alone cannot maintain that code as good as I want to, and I think that code has a lot of potential (it's the Tex algorithm implemented in Java with the additional feature of placing images near the text they belong to - as far as I know there is nothing else like this worldwide), but it's in a state where it needs a lot of refactoring. - Uli
The approach described here Generating PDFs for Fun and Profit with Flying Saucer and iText seems to create acceptable PDF files Axel Kramer 14-Jul-2007 07:39 PDT
From Evan Prodromou:
A WYSIWYG editor would be a great option for JAMWiki. There is currently some WYSIWYG code that has been commented out from edit.jsp, but it would be nice if it were possible to have a configuration setting allowing an admin (or even a user) to choose a WYSIWYG editor. One consideration is that JAMWiki allows anyone to use a different parser, so it cannot always be assumed that the standard Mediawiki syntax set is being used.
From NickJ:
Some users may prefer to install / upgrade JAMWiki using scripts rather than via an automated web interface. It should be reasonably easy to implement this functionality, in which case the install instructions would just be slightly different.
Provide the capability to specify a "database owner" who can create and modify tables vs. a more standard "database user" who can simply query and update tables.
Currently some aspects of JAMWiki may limit installations to a single server - image upload adds a file to a single local filesystem, and file-persistency mode will only support one server. Some of these limitations can be overcome by using NFS mounts or a storage area network, but others should be addressed from the software itself.
See above under social features.
Mediawiki is now offering a somewhat standardized API for interacting with bots and scripts - see http://meta.wikimedia.org/wiki/API for details. While it is probably not feasible for JAMWiki to offer compatible support (JAMWiki is not written using PHP), it should be feasible to ensure that JAMWiki offers similar functionality.
Another, contrary, position, is that an API is a bad idea. A SCRAPI (screen-scraping supported as an API) will be used/found anyway by sophisticated users, so why bother "blessing" certain functions with a different API interface? Just make the actual URIs of the pages and functions that are invoked work just as well for mashups and other programs and front ends as they do for users of jamwiki's own web interface. This has several huge advantages:
See also Comments:JAMWiki as JSR-168 compliant portlet. Consider adding JSR-168 / JSR-286 capabilities to JAMWiki. More and more standard compliant portal platforms emerge on the commercial or open source market, and most portal projects need a wiki system.
Keep an eye on JSR-170 (Java content repositories) and consider its applicability to Wikis.
IMHO it would be nice to have a common JSR-170 based framework for all the Java wikis around in an apache.org based project. See:
-- Axel Kramer 19-Sep-2007 11:30 PDT
Currently even the smallest change to a topic will store an entire copy of a topic as a version in the database. For a site such as Wikipedia that would mean huge amounts of data would need to be stored due to the size and number of articles. Storing changes as diffs has its own problems due to the need to apply numerous diffs to view changes between article versions, but there may be an another solution - perhaps a hybrid solution, or some other option.
Zipped topic content discussion moved to Tech:Zipped topic content
It might be worthwhile to turn the parser into a standalone tool, which would have several advantages:
A good reason NOT to do this is that the option to swap in another parser that obeys a format other than mediawiki's native format will be very tempting to a lot of users. Supporting such users will distract from the very difficult job of keeping up with mediawiki's native format so there are absolutely no pages written in mediawiki that aren't instantly portable back and forth to jamwiki.
Even the slightest failure in this regard is disastrous, it could cause entire populations using specific languages to stop using jamwiki (imagine if the way some character that occurs only in Hindi is treated differently in jamwiki and it causes a billion people to be unable to import readable Wikipedia pages into jamwiki without errors). Accordingly splitting development effort is unwise.
If people, especially sophisticated developers, begin to think of jamwiki's mediawiki format compliance as "optional" or a "parameter" they can change, the entire project can die dead right there. Or worse, lead to PHP and "real" mediawiki invading Java shops. Which is something we really don't want to see. ;-)
It would be a huge design improvement to have the ability to write extension / plugin / addon. However, Java provides good tools for this and it's less reliable to have two ways to do this. If mediawiki extensions can't be supported then probably the Java environment has to be leaned on heavily.
There is a wiki engine called Radeox on http://radeox.org. Someone had a look at it or have experience with it? I'm curious. Mike 12-Jul-2007 13:57 PDT
I personally like the ease of Hibernate to support at least 20 different databases out-of-the-box. Don't mention the avoidance of writting SQL code. I don't mind write SQL scripts, however it annoys me to write and maintain SQL code for more than one database. Why have you chosen to use the current approach? Mike 16-Jul-2007 17:57 PDT
I'm going to write a draft on Tech:Hibernate Mike 03-Sep-2007 12:45 PDT
I would like to see WikiBase and Utilities as Spring Bean. I want to test my TiddlyWikiParser, but it directly invokes "WikiBase.getDataHandler().writeTopic()". Because WikiBase is a Singleton class I cannot override it in my test case with a mock class to check if this call is invoked correctly. I'm going to check what have to be done for this. Mike 20-Jul-2007 10:51 PDT
Environment env = new Environment();
String value = env.getValue("PROPERTY_NAME");
There would be definitions of beans in WEB-INF/jamwiki-servlet
<bean id="environment" class="org.jamwiki.Environment"> </bean> <bean id="wikiBase" class="org.jamwiki.WikiBase"> <property name="environment" ref="environment"/> <bean>
and instance variables in classes
class WikiBase {
Environment environment; // + Getter/Setter methods
otherMethod() {
environment.getValue(PROPERTY_NAME);
}
}
It's described in details on http://static.springframework.org/spring/docs/2.0.x/reference/beans.html#beans-dependencies The Spring Framework will create one instance of Environment and fill the environment variable in WikiBase when it is started. It's a nice way of a more loose coupling of classes. However static methods call must be replaced with instance calls in these case. Mike 20-Jul-2007 17:16 PDT
I would like to see the ability to use jsp tags from within wiki pages. Especially because in our case JAMWiki runs on top of another server, that has its own tags library. If we could use those tags from within wiki pages, it would make the wiki very powerful.
I found a page where a workaround is described that could solve this problem: http://groovy-news.org/e/page/axelclk?entry=how_to_integrate_a_gwt (I didn't try this myself yet)
It would be great to have this as default functionality. Hans 29-8-2007 21:25 CET
It would be a convenient resource if one of the special pages available to users was an "All Templates" page, which (obviously) lists all templates that are in place in a given Wiki. Something like "Special:Templates" would be appropriate.
<noinclude>[[Category:Template]]</noinclude>on the Template:MyTemplate page, the Template:MyTemplate page will list that it is part of Category:Template, but the Category:Template page itself will not show Template:MyTemplate on its listing. I hope that was clear.