Welcome on my WikiBlog! You can find a mixed collection of German and English content here. This website is always work in progress as there is a lot to do and so little time.
Willkommen auf meinem WikiBlog! Hier gibt es eine Mischung aus deutschen und englischen Inhalten. Meistens habe ich zu viele Ideen und zu wenig Zeit und so ist auch diese Website eine ständige Baustelle.
Two days ago already I've put a new release of DokuFS online into my new cgit installation. There is not only that new release available, but also the whole history, you are able to browse the code, …
But now coming to the important point: the release. It is built for the DokuWiki ♥ release 2009-02-14. First of all there is a completely new big feature: media support. You can upload any number of files by just copying them into the right directory of your mounted DokuWiki. In my opinion that is one of the best uses for DokuFS. Download is, of course, supported, too. At the moment there isn't any cache for media files, please let me know if you need/want that.
There are other smaller features, among others you can disable the cache to always have a fresh copy of your files and you can specify the number of seconds between updates. There were a lot of bugs and problems in the update routine, I'm not sure if it really worked at all. Now it should work. At least I tested it and after I had fixed a lot of things it did work. And it should even work when the local clock and the clock on the server are totally out of sync and in different time zones.
Another change is that I'm using a real option parser now, the options use two dashes now and the help message has a different format. This should give you better error messages as the old ones weren't that good.
There are some other changes I almost forgot as I've done them last August already. It concerns the fact that DokuFS is now not only storing the names of the pages but also a lot of meta data it gets from the wiki when asking for all pages (this feature has been implemented in DokuWiki in August, too). This means that DokuFS no longer has to load a page from the wiki in order to know it's size and there are much better permission checks, too. As well for existing as for non-existing files there is a real permission check before you can open that file for write which prevents you from writing a page you can't save afterwards.
Nevertheless I am also experiencing the limits of FuseFS, the Ruby interface for fuse I am using, that is a rather high-level one. At the beginning that was right, but now as I'm having more and more a full-featured filesystem with permissions etc. I am thinking about moving to another system. Although I really do like Ruby I am also thinking about moving to Python. This has multiple reasons. First of all there is chimeric working on DokuVimKi and a general Python lib for the XML-RPC interface of DokuWiki and there is Notefinder, another piece of software that uses the XML-RPC API of DokuWiki and Python, too. I don't see any sense in doing the same thing twice, that's why I would love to use and extend this python lib. Furthermore I have the impression, that the fuse interface for Python is better and better maintained (the last release is from 2007 in contrast to 2005). This is an impression from someone who has used none of the two full implementations (I use rfuse as comparison here, as it exposes more of the complete fuse api than FuseFS and as such it is similiar to python-fuse).
Before I can begin this conversion project I first of all have to learn Python, so don't expect anything soon. Perhaps it will still be in spring, but more probably it will be in the summer when you can see something from that new project. But one thing is sure: It will be maintained in the git repository I've already linked so you can probably follow the development from the beginning. And if you want to join it, just comment or mail me so we can coordinate.
New features are:
- A cache (with memory limit)
- File size is now set properly (some graphical editors rely on that)
- Saving a file without content but a revision comment does no longer directly delete the file, but removes it from the directory listing (deleting the file was irritating some editors)
- Saving empty files doesn't change their content, this change was necessary because on an edit an empty file is saved first before the new content is saved.
All in all I have to say that writing a filesystem isn't that easy as I thought when your back-end isn't a traditional storage. The next features that will be implemented are permission-checking on client side and a check if the write was successful.