Giter Club home page Giter Club logo

yaki's Introduction

Yaki - A fast, powerful filesystem-based wiki

Deprecation Warning:

This is being superseded by yaki-tng, which is a nearly complete re-write atop Bottle.

About

This was the second public release of Yaki (the first was in Google Code, and is long obsolete).

Yaki is a filesystem-based wiki that is used as the underpinnings of The Tao of Mac (and a few other sites that started using the initial release).

Features

  • 100% pure Python, with extensive UTF-8 support
  • Entirely self-hosting, running atop a modified Snakelets application framework
  • Completely filesystem-based (pages are stored on a directory structure, not a database)
  • Heavily optimized HTTP processing:
    • Pages are pre-processed to HTML
    • HTML and other internal info are stored in a single-file cache, a la Haystack
    • Everything is served via sendfile(2) calls whenever possible
    • Uses every HTTP caching trick in the book to minimize actual page hits
  • Completely markup-agnostic - all the internal processing relies on Beautiful Soup, and it ships with support for:
    • raw HTML
    • Textile
    • Markdown
  • Any markup engine that generates HTML can be added, and markup can be defined on a site-wide or page-per-page basis
  • Has all the usual features, like:
    • Page aliasing
    • Interwiki
    • RecentChanges
    • etc.
  • Has a number of unusual Bliki features, like a blog-like home page, linkblog support, and the SeeAlso table at the bottom of each page.
  • Supports full-text indexing and search using Whoosh

Requirements

  • Python 2.6 (2.7 will work just as well, and 2.5 may work with minimal tweaks)
  • That's it.

License

Yaki is released under the MIT License. Some third-party libraries in the userlibs folder are licensed differently and are included merely to ease deployment.

The Twitter Bootstrap HTML+CSS which is used as the default theme is licensed under the Apache License v2.0.

Credits

The Snakelets application server was originally developed by Irmen de Jong, and as far as I know this is the only publicly maintained version of it.

yaki's People

Contributors

anotherjesse avatar rcarmo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

yaki's Issues

Documentation

There is an utter lack of documentation.

Documentation shall be considered finished (if ever) when the following are available:

  • A README
  • A deployment guide
  • An updated Snakelets manual (for the brave developers)
  • Engine documentation
  • Plugin documentation
  • Templating documentation

monitor.py: ImportError: No module named serv

The monitor.py script that 'ships' in the current version can't import serv (which is what 'app.py' used to be called?). We can import app as serv, but some (recent?) refactoring of the assignment in app.py mean this doesn't work either (AttributeError: 'module' object has no attribute 'HTTPD_PORT'). Unfortunately my Python is too weak to troubleshoot much further than this...

Getting started...

I've downloaded, run yaki/app.py, and navigated to "localhost:9090" as directed... but I just get this error message:

WebAppContext' object has no attribute 'dumbagents'
"/space" gave the following message:

  File "/home/symon/Downloads/yaki/snakeserver/webapp.py", line 619, in run_snakelet
    snake.serve(req, resp)          # <------ the actual call to the snakelet!
  File "/home/symon/Downloads/yaki/userlibs/yaki/Engine.py", line 294, in serve
    page = self.getPage(request, response)
  File "/home/symon/Downloads/yaki/userlibs/yaki/Engine.py", line 491, in getPage
    m = ac.dumbagents.match(request.getUserAgent())
AttributeError: 'WebAppContext' object has no attribute 'dumbagents'

Could you offer any suggestions?

Footnotes link to full page path (instead of internal link)

For example:

<a href="/space/blog/2012/03/17/1802#fn:1" rel="/space/blog/2012/03/17/1802#fn:1" class="anchor" title="link to fn:1 in this page">1</a>

Should be:

<a href="#fn:1" rel="/space/blog/2012/03/17/1802#fn:1" class="anchor" title="link to fn:1 in this page">1</a>

This means an unnecessary page load for the user and also prevents things like Footnotify from working properly.

TypeError on python 2.7 / Windows

cloned the repo, installed python (http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi), ran the application and I get this error while browser is stuck on http://localhost:9090/p/start, (error 503, server restarting)

D:\tmp\Yaki\yaki>app.py
Wed Apr 11 16:27:59 2012 GMT Starting server on 127.0.0.1:9090 (9090)
[18:28:00,server] Server starting...
[18:28:00,server] Exception in thread Thread-2:
Traceback (most recent call last):
File "D:\dev\tools\Python27\lib\threading.py", line 552, in __bootstrap_inner
self.run()
File "D:\tmp\Yaki\yaki\userlibs\yaki\Indexer.py", line 94, in run
self.pagescan() # Do preliminary scanning
File "D:\tmp\Yaki\yaki\userlibs\yaki\Indexer.py", line 334, in pagescan
self.indexable.sort(lambda x, y: self.allpages[y]-self.allpages[x])
TypeError: comparison function must return int, not long
[18:28:00,server] Exception in thread Thread-4:
Traceback (most recent call last):
File "D:\dev\tools\Python27\lib\threading.py", line 552, in __bootstrap_inner
self.run()
File "D:\tmp\Yaki\yaki\userlibs\yaki\Indexer.py", line 94, in run
self.pagescan() # Do preliminary scanning
File "D:\tmp\Yaki\yaki\userlibs\yaki\Indexer.py", line 334, in pagescan
self.indexable.sort(lambda x, y: self.allpages[y]-self.allpages[x])
TypeError: comparison function must return int, not long
[18:28:00,server] Serving requests.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.