NB: This is an unfinished work in progress and does not yet work.

Check out the project’s website for more details: http://drogul.us

Drogulus is a programmable peer-to-peer data store designed for simplicity, security, openness and fun. It’s also an exercise in practical philosophy.

It’s influenced by ideas from Fluidinfo (an openly writable data store), Kademlia (a distributed hash table), Lisp, public/private key cryptography with a dash of Xanadu thrown in for inspiration. It is implemented in Python and requires very few external dependencies.

It’ll probably all come to nothing. ;-)

Current status: the distributed hash table is almost finished. Crypto based work is done. Lisp implementation is an (uncommitted) toy which requires further work although the design is pretty much done.

If in doubt, please ask. :-)

Should you wish to contribute please make sure you read CONTRIBUTE file. By making a contribution you are agreeing to the terms described therein.

Developer Quick Start

  • Clone the repository: git clone git://github.com/ntoll/drogulus.git
  • I suggest you create a virtualenv for development purposes (see: https://pypi.python.org/pypi/virtualenv).
  • Make sure you have a clean virtualenv. Then, within the resulting drogulus directory, type pip install -r requirements.txt to install all the project’s requirements. This may take some minutes since the packages need to be downloaded from the internet. You may need to have the Python development headers installed for your system (on Debian based environments this is the python-dev package) otherwise see the http://python.org/ website for more information.
  • Next, type make check to run various code quality checks and the test suite. You should see a bunch of green OK messages scroll past. If you see errors, just ask.
  • To build the documentation locally type make docs. As the script will tell you, the resulting docs (as HTML) can be found in drogulus/docs/_build/html/index.html.
  • A simple demo application is coming soon...

Contributing to Drogulus

Hey! Many thanks for wanting to improve Drogulus.

Contributions are welcome without prejudice from anyone irrespective of age, gender, religion, race or sexuality. Good quality code and engagement with respect, humour and intelligence wins every time.

Feedback may be given for contributions and, where necessary, changes will be politely requested and discussed with the originating author. Respectful yet robust argument is most welcome.

Submit an Issue

  • Use GitHub’s built in issue tracker to report bugs and suggest improvements.
  • When reporting a bug explain what you were doing, what you expected to happen, what actually happened and the steps needed to recreate the problem.
  • When requesting an improvement please describe the problem you want solving, why it’s important and potential costs / benefits to the project.
  • Ensure you’re not duplicating an existing issue.
  • Submitting an issue is no guarantee that it’ll be addressed (and it may even be rejected).

Code Contribution Checklist

  • Ensure your contribution is linked to an outstanding ticket in the issue tracker.
  • Create a new branch for your contribution with a descriptive name and reference to the issue number. For example: add-blue-widget-867536
  • Create the pull request from your new branch to the remote (i.e. my) master branch.
  • Alternatively, send me a patch file (see git patch) via email with a description of the work done. ;-)
  • Make sure you include tests!
  • Your code should be commented in plain English.
  • Ensure you run make check to tell you that you’re following PEP8, PyFlakes isn’t complaining about redundant code, all the tests pass and you have as close to 100% test coverage as is possible.
  • Did I mention you should include tests..? Yeah, include tests.
  • If you’ve not done so already, add yourself to the AUTHORS file.