Skip to content
This repository has been archived by the owner on Sep 10, 2020. It is now read-only.

Commit

Permalink
[docs] Completed motivations & goals page #80
Browse files Browse the repository at this point in the history
Closes #80
  • Loading branch information
nemesifier committed Jul 27, 2018
1 parent 2520526 commit c8de1a5
Showing 1 changed file with 51 additions and 3 deletions.
54 changes: 51 additions & 3 deletions docs/source/general/goals.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,63 @@
Motivations and Goals
=====================


In this page we explain the goals of this project and the motivations
that led us on this path.

Motivations
-----------

The old version of OpenWISP (which we call OpenWISP 1) had a freeradius module
which provided several interesting features:

- user registration
- account verification with several methods
- user management
- password reset
- basic general statistics
- basic user account page with user's statistics

But it also had important problems:

- it was not written with automated testing in mind, so there was a lot of code which
the maintainers didn't want to touch because of fear of breaking existing features
- it was not written with an international user-base in mind, it contained a great
deal of code which was specific to a single country (Italy)
- it was hard to extend, even small changes required changing its core code
- the user management code was implemented in a different way compared to
other openwisp1 modules, which added a lot of maintenance overhead
- it used outdated dependencies which over time became vulnerable and were hard to replace
- **it did not perform hashing of user passwords**
- the documentation did not explain how to properly install and configure the software

Similar problems were affecting other modules of OpenWISP 1, that's why
over time we got convinced the best thing was to start fresh using best practices
since the start.

Project goals
-------------

* provide a web interface to manage a freeradius database.
* provide abstract models and admin classes that can be imported, extended and reused in third party apps.
The main aim of this project is to offer a web application and documentation
that helps people from all over the world to implement a wifi network
that can use freeradius to authenticate its users, either via captive portal
authentication or WPA2 enterprise, **BUT** this doesn't mean we want to
lock the software to this use case: we want to keep the software generic enough
so it can be useful to implement other use cases that are related to
networking connectivity and network management; **just keep in mind our main
aim if you plan to contribute to django-freeradius please**.

Other goals are listed below:

* replace the user management system of OpenWISP 1 by providing a similar feature set
* provide a web interface to manage a freeradius database
* provide abstract models and admin classes that can be imported, extended and reused in third party apps
* provide ways to extend the logic of django-freeradius without changing its core
* ensure the code is written with an international audience in mind
* maintain a very good automated test suite
* reuse the django user management logic which is very robust and stable
* ensure passwords are hashed with strong algorithms and freeradius can
authorize/authenticate using these hashes (that's why we recommend using the
``rml_rest`` freeradius module with the REST API of django-freeradius)
* integrate django-freeradius with the rest of the openwisp2 ecosystem
* provide good documentation on how to install the project, configure it with
freeradius and use its most important features

0 comments on commit c8de1a5

Please sign in to comment.