X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/0f22d66c965d7f2a3e4698de7ddf992efebf6c42..c5ea0c7ce6ee9f374d6346d491c84e515eca21e3:/doc/features.mdwn?ds=inline diff --git a/doc/features.mdwn b/doc/features.mdwn index 5152beffd..551edf811 100644 --- a/doc/features.mdwn +++ b/doc/features.mdwn @@ -1,139 +1,170 @@ -Some of ikiwiki's features: +An overview of some of ikiwiki's features: +[[toc ]] -* [[Subversion]] +## Uses a real RCS - Rather than implement its own system for storing page histories etc, - ikiwiki simply uses subversion. (It's also possible to [[plugins/write]] - support for other systems, and ikiwiki also includes support for [[Git]] - now.) +Rather than implement its own system for storing page histories etc, +ikiwiki uses a real Revision Control System. This isn't because we're +lazy, it's because a real RCS is a good thing to have, and there are +advantages to using one that are not possible with a standard wiki. - Instead of editing pages in a stupid web form, you can use vim and commit - changes via svn. Or work disconnected using svk and push your changes out - when you come online. +Instead of editing pages in a stupid web form, you can use vim and commit +changes via [[Subversion]]. Or work disconnected using svk and push your +changes out when you come online. Or use [[git]], [[tla]], or [[mercurial]] +to work in a distributed fashion all the time. (It's also possible to +[[plugins/write]] a plugin to support other systems.) - ikiwiki can be run from a [[post-commit]] hook to update your wiki - immediately whenever you commit. +ikiwiki can be run from a [[post-commit]] hook to update your wiki +immediately whenever you commit a change using the RCS. - Note that ikiwiki does not require subversion to function. If you want to - run a simple wiki without page history, it can do that too. +Note that ikiwiki does not require a RCS to function. If you want to +run a simple wiki without page history, it can do that too. -* [[MarkDown]] +## A wiki compiler - ikiwiki supports pages using [[MarkDown]] as their markup language. Any - page with a filename ending in ".mdwn" is converted from markdown to html - by ikiwiki. Markdown understands text formatted as it would be in an email, - and is quite smart about converting it to html. The only additional markup - provided by ikiwiki on top of regular markdown is the [[WikiLink]] and - [[PreprocessorDirective]] +ikiwiki is a wiki compiler; it builds a static website for your wiki, and +updates it as pages are edited. It is fast and smart about updating a wiki, +it only builds pages that have changed (and tracks things like creation of +new pages and links that can indirectly cause a page to need a rebuild) - If you prefer to use some other markup language, ikiwiki allows others to - easily be added by [[plugins]]. For example it also supports traditional - [[plugins/WikiText]] formatted pages. +## Supports many markup languages -* support for other file types +By default, pages in the wiki are written using the [[MarkDown]] format. +Any page with a filename ending in ".mdwn" is converted from markdown to html +by ikiwiki. Markdown understands text formatted as it would be in an email, +and is quite smart about converting it to html. The only additional markup +provided by ikiwiki on top of regular markdown is the [[WikiLink]] and +[[PreprocessorDirective]]. - ikiwiki also supports files of any other type, including plain text, - images, etc. These are not converted to wiki pages, they are just copied - unchanged by ikiwiki as it builds your wiki. So you can check in an image, - program, or other special file and link to it from your wiki pages. +If you prefer to use some other markup language, ikiwiki allows others to +easily be added by [[plugins]]. For example it also supports traditional +[[plugins/WikiText]] formatted pages, pages written as pure +[[plugins/HTML]], or pages written in [[reStructuredText|plugins/rst]] +or [[Textile|plugins/textile]]. -* [[SubPage]]s +ikiwiki also supports files of any other type, including plain text, +images, etc. These are not converted to wiki pages, they are just copied +unchanged by ikiwiki as it builds your wiki. So you can check in an image, +program, or other special file and link to it from your wiki pages. - Arbitrarily deep hierarchies of pages with fairly simple and useful [[SubPage/LinkingRules]] +## [[Blogging|blog]] -* [[blogging|blog]] +You can turn any page in the wiki into a [[blog]]. Pages matching a +specified [[PageSpec]] will be displayed as a weblog within the blog +page. And RSS or Atom feeds can be generated to follow the blog. - You can turn any page in the wiki into a [[blog]]. Pages matching a - specified [[GlobList]] will be displayed as a weblog within the blog - page. And an RSS feed can be generated to follow the blog. +Ikiwiki's own [[TODO]], [[news]], and [[plugins]] pages are good examples +of some of the flexible ways that this can be used. There is also an +[[example_blog|examples/blog]] set up that you can copy into your own wiki. - Ikiwiki's own [[TODO]], [[news]], and [[plugins]] pages are good examples - of some of the flexible ways that this can be used. +Ikiwiki can also [[plugins/aggregate]] external blogs, feeding them into +the wiki. This can be used to create a Planet type site that aggregates +interesting feeds. -* [[tags]] +You can also mix blogging with podcasting by dropping audio files where +they will be picked up like blog posts. This will work for any files that +you would care to syndicate. - You can tag pages and use these tags in various ways. +## Valid html and [[css]] -* Fast compiler +ikiwiki aims to produce +[valid XHTML 1.0](http://validator.w3.org/check?url=referer). ikiwiki +generates html using [[templates|wikitemplates]], and uses [[css]], so you +can change the look and layout of all pages in any way you would like. - ikiwiki is fast and smart about updating a wiki, it only builds pages - that have changed (and tracks things like creation of new pages and links - that can indirectly cause a page to need a rebuild) +## [[Plugins]] -* valid html and css +Plugins can be used to add additional features to ikiwiki. The interface +is quite flexible, allowing plugins to implement additional markup +languages, register [[PreProcessorDirective]]s, hook into [[CGI]] mode, +and more. Most of ikiwiki's features are actually provided by plugins. +Ikiwiki's backend RCS support is also pluggable, so support for new +revision control systems can be added to ikiwiki. - ikiwiki aims to produce - [valid XHTML 1.0](http://validator.w3.org/check?url=referer). - ikiwiki generates html using [[templates]], and uses css, so you can - change the look and layout of all pages in any way you would like. +## [[todo/utf8]] -* [[BackLinks]] +After rather a lot of fiddling, we think that ikiwiki correctly and fully +supports utf8 everywhere. - Automatically included on pages. Rather faster than eg MoinMoin and - always there to help with navigation. +## Other features -* [[PageHistory]] +The above are the core design goals and features of ikiwiki, but on that +foundation a lot of other important features are added. Here is an +incomplete list of some of them. - Well, sorta. Rather than implementing YA history browser, it can link to - [[ViewCVS]] or the like to browse the history of a wiki page. +### [[Tags]] -* [[RecentChanges]], editing pages in a web browser +You can tag pages and use these tags in various ways. Tags will show +up in the ways you'd expect, like at the bottom of pages, in blogs, and +in RSS and Atom feeds. - Nearly the definition of a wiki, although perhaps ikiwiki challenges how - much of that web gunk a wiki really needs. These features are optional - and can be enabled by enabling [[CGI]]. +### [[SubPages|SubPage]] -* User registration +Arbitrarily deep hierarchies of pages with fairly simple and useful +[[SubPage/LinkingRules]] - Can optionally be configured to allow only registered users to post - pages; online user registration form, etc. +### [[BackLinks]] -* Discussion pages +Automatically included on pages. Rather faster than eg MoinMoin and +always there to help with navigation. - Thanks to subpages, every page can easily and automatically have a - /Discussion subpage. By default, these links are included in the - [[templates]] for each page. +### Smart merging and conflict resolution in your web browser -* Smart merging and conflict resolution in your web browser +Since it uses a real RCS, ikiwiki takes advantage of its smart merging to +avoid any conflicts when two people edit different parts of the same page +at the same time. No annoying warnings about other editors, or locking, +etc, instead the other person's changes will be automatically merged with +yours when you commit. - Since it uses subversion, ikiwiki takes advantage of its smart merging to - avoid any conflicts when two people edit different parts of the same page - at the same time. No annoying warnings about other editors, or locking, - etc, instead the other person's changes will be automatically merged with - yours when you commit. +In the rare cases where automatic merging fails due to the same part of a +page being concurrently edited, regular commit conflict markers are +shown in the file to resolve the conflict, so if you're already familiar +with that there's no new commit marker syntax to learn. - In the rare cases where automatic merging fails due to the same part of a - page being concurrently edited, regular subversion commit markers are - shown in the file to resolve the conflict, so if you're already familiar - with that there's no new commit marker syntax to learn. +### [[RecentChanges]], editing pages in a web browser -* page locking +Nearly the definition of a wiki, although perhaps ikiwiki challenges how +much of that web gunk a wiki really needs. These features are optional +and can be enabled by enabling [[CGI]]. - Wiki admins can lock pages so that only other admins can edit them. +### User registration -* Full text search +Can optionally be configured to allow only registered users to edit +pages. - ikiwiki can use the [[HyperEstraier]] search engine to add powerful - full text search capabilities to your wiki. +User registration can be done using a web form, or ikiwiki can be +configured to accept users authenticated with OpenID, or HTTP basic +authentication, or other methods implemented via plugins. -* Commit mails +### Discussion pages - ikiwiki can be configured to send you commit mails with diffs of changes - to selected pages. +Thanks to subpages, every page can easily and automatically have a +/Discussion subpage. By default, these links are included in the +[[templates]] for each page. -* [[Plugins]] +### Edit controls - Plugins can be used to add additional features to ikiwiki. The interface - is quite flexible, allowing plugins to implement additional markup - languages, register [[PreProcessorDirective]]s, hook into [[CGI]] mode, - and more. Ikiwiki's backend RCS support is also pluggable, so support for - new revision control systems can be added to ikiwiki. +Wiki admins can [[lock_pages|page_locking]] so that only other admins can +edit them. Or a wiki can be set up to allow anyone to edit Discussion +pages, but only registered users to edit other pages. These are just two +possibilities, since page edit controls can be changed via plugins. -* [[todo/utf8]] +### [[PageHistory]] - After rather a lot of fiddling, we think that ikiwiki correctly and fully - supports utf8 everywhere. +Well, sorta. Rather than implementing YA history browser, it can link to +[[ViewVC]] or the like to browse the history of a wiki page. ----- +### Full text search -It also has some [[TODO]] items and [[Bugs]]. +ikiwiki can use the [[HyperEstraier]] search engine to add powerful +full text search capabilities to your wiki. + +### Commit mails + +ikiwiki can be configured to send you commit mails with diffs of changes +to selected pages. + +### [[w3mmode]] + +Can be set up so that w3m can be used to browse a wiki and edit pages +without using a web server.