Wynn
Wynn is a lightweight wiki implementation originally inspired by git-wiki. Wynn is still very much work in progress. Although it drives this site, it’s not quite ready for production.
Earlier work titles for Wynn were “geeki” and “rw”. For information on the meaning of the new name, see the Wikipedia article Wynn.
Wynn is currently only available to a closed group of developers. Drop me a line if you are interested. There are plans to make it open source under a yet to be decided license (probably under a two-clause BSD license, not the WTFPL).
Current Features
- Markdown as markup language.
- Simple and robust data store:
- Page content with images is stored in a
git(1)repository. - User database is
/etc/passwdstyle flat file.
- Page content with images is stored in a
- General focus on security:
- No common web application vulnerabilities.
- Secure authentication and session handling.
- Secure storage of credentials.
- Valid XHTML 1.1 and CSS 3.
- Typographically pleasing.
- Syntax highlighting, currently browser based and not perfect.
To Do
- Rewrite using bare repo and http://timelessrepo.com/gash
- Use same technique for committing directly into bare repo
- Use separate flat file export for serving the goods (read-only)
- Make that a pre-rendered cache directly served by apache
- Make sure all commits export to read-only export (hook sufficient?)
- Move all templates into data repository
- Deleting Pages.
- Viewing History.
- Improving syntax highlighting (consider syntaxhighlighter or beautyOfCode ).
- Tagging.
- In-page meta data:
- Simple ACLs.
- Tags.
- Modeline.
- Refactor page class:
- Extract repository ops into separate data store class.
- Leave only content centric stuff in page class.
- Search.
- Image Management using Highslide
Technology
Wynn is based on the following technologies:
Required FreeBSD ports:
devel/git
www/rubygem-sinatra
www/rubygem-haml
www/rubygem-rdiscount
devel/rubygem-grit
devel/rubygem-git
Optional FreeBSD ports:
www/rubygem-thin
www/rubygem-mongrel
devel/rubygem-builder
Old Plans / Wishlist
- http://johnmacfarlane.net/pandoc/
- Decent, semi-RESTafarian, minimalistic, history-enabled, semi-distributed CMS/Wiki
- Backend is git repo
- Changes can be pushed via git or edited via web
- Transparent to non-geeks (git should not get in the way)
- How to handle concurrent edits?
- How to handle concurrent git-push and edits?
- Simple permission model
- First: r/w by any/auth
- Later: Users, Groups from files or backend (via Rack?)
- In-page metadata like mail headers
- Per-directory default page with default metadata
- Mark inherited metadata as such and ignore when saving
- Sidebar
- Editable
- Multi-layer composed (per directory layer sections)
- Optionally autoindexing with options (static list, how long, etc.)
- AJAX search across all sections (sort by dir locality)
- Optional change signoff (minimalistic workflows)
- Mail git changeset to authorized person which will push it to main git repo


