Wikiply

Wikiply is a Django-based Wiki engine. It's inspired by many of the decisions made by MoinMoin and DokuWiki and aims to contribute some different ideas. Some of the most significant intended features include strong access control, excellent and complete documentation, extensibility by other Django developers, and implementation of ideas from other domains, such as blogs.

Aspirations and Goals

  • Always use the best tool for the job.
  • Leverage already-existing tools rather than re-creating them for no reason. So no "Not Invented Here" (NIH) syndrome.
  • Focus primarily on making a Wiki.
  • First have a functioning Wiki and then think about performance, scalability, serving as true collaboration platform, plug-in support, etc.
  • The same Wiki installation/instance should be able to serve multiple groups and users with smart and secure features and controls.
  • Access control features, such as IP whitelist, IP blacklist, account lock on multiple login failures, etc. should be easy to manage.
  • Allow multiple Wikis to be hosted from the same server using either the same database (shared credentials among the farm) or different databases.
  • Wikis are mostly read-only with a small portion of it being edited at any given time. So use flat files for content and attachments. File systems were designed to handle files well so let them do their job.
  • Databases are great for structured data so use them configuration, settings, rules, etc. This deals with the issues of changing code to maintain policy.
  • Differentiate between Wiki Management System (WMS) and content. WMS are all the bits and pieces that make a Wiki function: user management, parsers, etc. Content is what the users most focus on because the Wiki exists to gather and serve content.
  • Advanced, fine-grained user profile and access control management, auditing, and logging.
  • Use Django because that's what I know best. An additional advantage of using Django is that the project can then be modified by people who know it or it can be integrated/enhanced into a much bigger Django project.
  • Python and Django make it easy to create a multi-platform application but focus primarily on Linux.
  • Create updated, useful, and friendly documentation.
  • Keep the project free, open source, and freely available.

Why FreeBSD License?

Wikiply is distributed under the simplified BSD license. This isn't a decision taken lightly and that's the reason for this section.

Wikiply was always intended to be free, open source software. But the biggest thorn was whether to give consumers of the code absolute freedom or relative freedom. GPL, it seems, gives restricted freedom to the consumer of the code (they have to share their changes with everyone) and absolute freedom to the code. BSD, on the other hand, gives absolute freedom to the consumer and relative freedom to the code.

By consumer, both developers and end users are meant. No one restricts an end user's freedom to look at, modify, distribute code under BSD license. However, the developer can now take BSD code, modify it, and then release it under a proprietary license. That is simply stealing from the hard work developing open source code. But that's exactly the positive of a BSD license: the original BSD code is still open and no one can change that. Any improvement made can now benefit the end user, maybe at exhorbitant prices (rare but possible). While GPL would make sure the end user got the original code and its modifications, there's a bigger hurdle.

For code to get to the end user, the developer has to do some hard work. If we can somehow reduce the licensing burdens of a developer, we make it easier for the developer's innovation to flourish and benefit the end user. BSD license takes care of the developer so that the developer can take care of the end user.

Finally, as Armin Ronacher points out about GPL, "However modifications only have to be made available to the public if distribution happens. So it's perfectly fine to take GPL code, modify it heavily and use it in a not distributed application / library. This is how companies like Google can run their own patched versions of Linux for example. But what this also means is that non GPL code can't use GPL code which is also the main problem of it."

In this situation, Wikiply is in a position, with BSD license, to allow developers to use its code whether they choose to distribute the code or not. Especially for a Wiki engine, where the chances of distributing modified versions are pretty slim (even less for such a young project like Wikiply), the choice of BSD license gives, at the very least, peace of mind to both developers and end users.

Note: Follow more deliberation and comments on GPL or BSD License: Confusion Galore.