view contributing.rst @ 17:619c88af600b tip

fix non de localized date formats
author gregor@srvint01
date Thu, 17 Sep 2020 16:10:48 +0200
parents dcee86214f55
children
line wrap: on
line source
======================
Contributing to ediwo
======================

As an free software project, ediwo welcomes contributions of many forms.

Examples of contributions include:

* Code patches
* Documentation improvements
* Bug reports and patch reviews
* Translations

By contributing, contributors agree to the Contributor License Agreement cla.txt which can be found in the source root.


Philosophy
==========

The principal development philosophy is KISS, Keep it simple and stupid:
https://en.wikipedia.org/wiki/KISS_principle

The project aims for maximum benefit for society as a whole and the planet.
Therefore:

* standards compatibility is a main goal
* old software and hardware on the server and client should be supported
* resource consumption should be held to a minimum

The project aims for separation of data logic and presentation logic.
Logic that belongs to the data should be in the database. (views, triggers, rls...)
The Django code should as far as possible only contain presentation logic.
It should be easy to write other representation programs on top of the database
(Cli, GUI, Mobile App etc.) in any language without redundant data logic in each client.

Client logic and requirements should be held to a minimum, to avoid client
compatibility problems and code redundancy. If something can be solved on the server side it should
be done there.


External dependencies, versions
===============================

The goal is to minimize administration effort for running the site.
Therefore all external dependencies must be in the Debian stable repository or
in an well maintained Debian stable compatible external repository which has:

* automatic security updates for the life time of Debian stable LTS
* a stable branch with extensive testing before stable release
* strong security measures as good or better than Debian

Unfortunately PyPi does not meet those criterias at the moment.

All code must be compatible with the software versions in the current Debian stable
repository and be actively maintained.

Exceptions from that rules have to be thoroughly justified and approved by the maintainer.

This program is developed and tested under Debian stable, but should work on other platforms.
Although multi platform is not a primary concern.
Python 2 is not supported.


Issues
======

Bugs, enhancements proposals and road maps are maintained in the todo.org file in the root
directory. Although it is an Emacs Organizer Mode file it can be edited with any text editor.
https://orgmode.org/


Patches
=======

Please export your changes from your local repository and email them to code<at>ediwo<dot>com
https://www.mercurial-scm.org/wiki/TutorialExport


Coding Style / Tests / Documentation
====================================

Code language is English.

Unless otherwise specified, follow PEP 8.
https://www.python.org/dev/peps/pep-0008/

Please write unit tests to automatically verify your code.
We do not aim for 100% test coverage, but at least all external URLs must be tested with all
supported HTTP methods.

All user facing functionality patches must include also a patch for the user
documentation, at least the English one.

Please comment your code.


Source Repository
=================

ediwo uses mercurial for source control.
The main repo is at:

https://hg.ediwo.com/ediwo

command to clone a local copy::

  $ hg clone https://hg.ediwo.com/ediwo my-ediwo

see https://www.mercurial-scm.org/wiki/TutorialClone


Installation for development
============================

* install python

* install dependencies in debian_install.sh
  This is a bash shell file for automatic debian stable installation. The information
  in it is also valuable for manual installation on other platforms. Please
  install the versions that are in Debian stable.
  Only Postgresql is supported as a database backend.

* copy ediwo/settings/__init__.py_template to ediwo/settings/__init__.py and
  configure your install specific settings (database, secret_key etc.)

* configure Postgresql pg_hba.conf so that your database user can access your database and
  the test database (same name but with prefix 'test_').
  Example lines::

  local   ediwodb      ediwo                                   trust
  local   test_ediwodb ediwo                                   trust

  restart Postgresql::

  $ sudo systemctl restart postgresql

* create the Postgresql database::
  $ ./setup_pgdb.sh


Contributors
============

* Gregor Horvath, 2020 : idea, development, project lead
* Franz Gratzer,  2020 : design ideas, mock-up, usability testing


Contact maintainer
==================

mailto: code<at>ediwo<dot>com