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
I (Nicholas H.Tollervey) would like to keep the copyright status of this
project as simple as possible. To this end, any contribution to the source code
(including documentation) will be subject to the following conditions:
- The contribution was created by the contributor who confirms they have the
right to submit it under the GNU Affero Public License version 3.
- The contribution is either completely original or based upon previous work
that is also covered by a compatible license.
- Since all development of Drogulus is done in public, the contribution will
be made public.
- There is no guarantee that a contribution will be accepted in to the source
Code Contribution Checklist
- Ensure your contribution is linked to an outstanding ticket in the issue
- 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)
- 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.