Developing LFS

This section describes how to develop LFS.

Warning

This is only for development. Don’t use this version in production. We might break the head, add stuff which need database migrations or introduce some security issues, etc.

Creating a Development Environment

There is an installer based on zc.buildout, which should make the installation straightforward:

  1. $ git clone https://github.com/diefenbach/lfs-buildout-development.git
  2. $ cd lfs-buildout-development
  3. $ python bootstrap.py
  4. $ bin/buildout -v
  5. $ bin/django syncdb
  6. $ bin/django migrate
  7. $ bin/django lfs_init
  8. $ bin/django test lfs.core
  9. $ bin/django runserver
  10. Browse to http://localhost:8000

Note

You might want to fork LFS on GitHub and point to it within buildout.cfg first.

Contributing Code to the Core

If you consider to contribute code to LFS, please read the following statements first:

  1. First of all, you are very welcome!

  2. Generally, it would be great if you would discuss new stuff first. We are very reluctant to add new things. Every new feature should have a real live use case. Find us on IRC or the LFS Google Group.

  3. Fork LFS GitHub and send us pull requests.

  4. Please make sure that you just add related code to your fork. This makes it easier to review and pull your code.

  5. The code must be put under a permissive free software licenses like BSD, otherwise we can’t add it. For instance, code under the GPL or a other copyleft software licenses won’t be added to the core.

  6. Python code must follow PEP 8. The maximum of 79 characters per line is the only exception. You may want to check your code with pep8. The following statement should run without complaints:

    $ pep8 --repeat --ignore=E501 /path/to/lfs
    
  7. Every new feature must have unit tests and documentation.

  8. All tests must pass. Please check this with:

    $ bin/django test lfs.core
    
  9. New features shouldn’t make LFS slower. Please see Benchmarking LFS.

  10. Add yourself to CREDITS.txt.

Contributing Translations

Please refer to Contributing translations.