March 9, 2017 | Stefan Ruh The projects in the Parliament Network share a common principle: to serve the public and work for the common good. Even aside from our work as activists, bloggers and naggers we try to cater to this principle in every way possible. Since a large part of such an organisation relies on computer systems, we aim to use and contribute to software that is also based on this idea. Open source software very much carries the spirit of participation and openness that we also value. A project like abgeordnetenwatch.de is composed of the several components: first, there is of course the web site that most people see and use. Secondly, behind it, exists a system that acts as a manual filter for user submissions and is used to moderate questions and answers that come through our web site. Third: Internally, we use special management software for maintaining our user and donor base. And finally, there are the computers that are used by us for our daily work with the aforementioned systems. Public-facing web site For the servers running our web site we utitlise CentOS hosts and the Apache Web Server. The database software used in conjunction with our content management system is simply MySQL as the amount of data accumulated does not require more powerful solutions. For the mentioned content management we went with Drupal 7. Drupal is a great system in many ways. Beyond the simple publishing of content pages it allows us to create own taxonomies to represent the data we are holding and a powerful feature called Views. Views essentially allow the owner of a website to create pages which contain content based on dynamic criteria. This is especially useful for creating all the individual profile pages, every listing, search and even diagrams. Another major advantage that Drupal has for us is the tremendous support from the community. For almost every aspect that is not covered by the core system, there are extensions, called Modules, which add the required functions or allow for deeper modifications. The strong open source community behind Drupal also leads to a very well supported system: for almost every question regarding Drupal there are numerous Wiki entries, blog posts or StackOverflow issues. In addition to the numerous extensions provided by the community, the open source aspect of Drupal allows us to easily develop own customizations to reflect the kind of data we are working with and to add our own ideas to the platform. We contribute our work back to the public by keeping the code for our platform on GitHub. When users access our web site they don’t connect directly to our Apache Servers. Instead, we have load balancing in place to account for traffic spikes which occur when a major news outlet reports on our activities and links to our web site. For this purpose, we use the extremely fast and flexible server nginx as a reverse proxy and load balancer. Review system Before questions that were submitted to us are forwarded to their intended recipients, the politicians, they are read by our staff of moderators. In order to coordinate that work, we developed our own software based on the Open Source framework Flask which allows for web applications written in Python. The Flask instance runs behind a nginx server. User and donor management As an organisation that is funded by are large base of individual donors, we needed a system that allowed for flexible management of our supporters and their contributions. For this task we employ the constituent relationship management (CRM) software CiviCRM that works in conjunction with existing content management systems such as Drupal. In our case, that is what we use. On top of a plain Drupal installation running on a seperate web server we use CiviCRM along with a customization module that allows us for instance the use of special tokens in emails sent out by the system. We also use the great CiviCRM Data Visualization Framework extension for graphing user statistics directly from the CRM system. We recently started using CiviCRM for sending out our newsletter to over 120.000 recipients as well, thereby being able to use custom content based on whether a user is a contributor/donor or not. CiviCRM is even more powerful than that: it allows for campaign coordination, exact management of all the politicians present on our web site and is even used for recording our petition signatures. Client computers We try to use open source operating systems on as many client computers as possible. That means, whenever we issue a new computer to an employee, we install a LTS version of Ubuntu Linux for them. Use of open source software such as LibreOffice, GIMP and Mozilla Firefox for everyday work is encouraged. For keeping files in sync and share them with others we use our own ownCloud instance. What can you do? If you run a similar organisation, we hope to provide you with some ideas for software you can use. If you enjoy using the software, consider donating to it yourself. If you even develop own changes or entirely new software, be so kind and share it with the public by offering it under one of the many open source licences. Our recommendation is to create a public repository on GitHub. If you substantially change an existing open source project, consider publishing your own fork. This way the community and the public as a whole will profit form your efforts — a goal we all agree on.