Skip to content

Design Decisions

Todd Schiller edited this page Sep 9, 2016 · 6 revisions

This page documents the design/architecture decisions made by the project.

Programming Languages and Framework

Python

We chose Python because it is currently the 2nd most popular language, behind Java, and is now the first language that many people are exposed to. Additionally, we believe it will best enable people with diverse backgrounds (e.g., data science, machine learning, journalism) to collaborate on the code and the data.

Django

Django is the most popular web framework for Python. As such, it has a robust ecosystem enabling us to focus development on the core features of Open Synthesis. Additionally, in the future, we can build a responsive front-end (e.g., using Angular or React) on top of Django (e.g., using Django REST).

Continuous Integration and Deployment

Open Synthesis should not be tied to a particular 3rd-party provider. Therefore, we must ensure that the deployment pipeline and hosting only depends on widespread standards.

Travis CI (Continuous Integration)

Travis CI is used by many projects within the Django ecosystem, supports testing, and has close integration with GitHub.

Heroku (Hosting)

As a Platform-as-as-Service, Heroku made it easy to get a prototype up and running. Heroku supports Python 3.5 out-of-the-box, unlike Google App Engine. Heroku also made it easy to configure SSL to their SSL endpoint.

Licensing

Source Code License

The foundations of the GPLv3 are consistent with the principles of this project. As a web application (as opposed to a library), there is likely little benefit (e.g., to adoption) to using a more permissive license (e.g., MIT).

Content License

The project website uses a Creative Commons Attribution-ShareAlike 4.0 International License because it aligns with the open ideals of the project. Wikipedia uses an earlier version of the license.