Technological knowledge requirements ==================================== Basic system ------------- Components which are installed directly as part of the basic virtual machine. Alpine linux ^^^^^^^^^^^^ - **General description:** Operating system - **Tech. description:** Lightweight linux distribution based on musl C libraries - **Depends on:** - - **Used by:** Everything - **Related skills:** EXTLINUX / ISOLINUX, git, linux administration (cron, filesystems, iptables, networking, user/group mgmt etc.), LUKS, LVM, OpenRC init system, POSIX standards, s6 init system, shell scripting Acme.sh ^^^^^^^ - **General description:** Certificate renewal tool - **Tech. description:** Shell-based Automated Certificate Management Environment client - **Depends on:** - - **Used by:** nginx, VMMgr - **Related skills:** shell scripting, SSL/TLS Nginx ^^^^^ - **General description:** Web server - **Tech. description:** Lightweight HTTP server - **Depends on:** - - **Used by:** All application containers, VMMgr - **Related skills:** HTTP (proxying, rewriting) LXC ^^^ - **General description:** Container virtualization host - **Tech. description:** Operating system-level container virtualization host - **Depends on:** - - **Used by:** All containers - **Related skills:** container virtualization fundamentals, linux kernel (cgroups, overlayfs, seccomp), shell scripting Postfix ^^^^^^^ - **General description:** Mail server - **Tech. description:** Outbound mail transfer agent - **Depends on:** - - **Used by:** All application containers - **Related skills:** SMTP SPOC ^^^^ - **General description:** Container virtualization manager - **Tech. description:** Convenience abstraction layer on top of LXC - **Depends on:** LXC, Python 3 - **Used by:** All containers, VMMgr - **Related skills:** JSON, python frameworks and modules (cryptography, requests, subprocess), LXC, shell scripting VMMgr ^^^^^ - **General description:** Virtual machine and application manager web interface - **Tech. description:** In-house Werkzeug-based virtual machine and application manager WSGI application - **Depends on:** Nginx, LXC, Python 3 - **Used by:** User - **Related skills:** JSON, python frameworks and modules (cryptography, jinja2, requests, subprocess, werkzeug), shell scripting, WSGI application development Runtimes -------- Components which are supplied as LXC overlay layers but don't run as standalone containers Java ^^^^ - **General description:** Java runtime environment - **Tech. description:** Java OpenJDK 8 runtime environment - **Depends on:** - - **Used by:** ActiveMQ, FrontlineSMS, Tomcat, CrisisCleanup, MifosX, Motech, OpenDataKit, OpenMapKit, Sigmah, Solr - **Related skills:** - Nodejs ^^^^^^^ - **General description:** JavaScript runtime environment - **Tech. description:** Server-side Nodejs 8 JavaScript runtime environment - **Depends on:** - - **Used by:** CrisisCleanup, GNU Health, Odoo, OpenDataKit Build, OpenMapKit - **Related skills:** HTTP (proxying), JavaScript (language overview) PHP ^^^ - **General description:** PHP 7 runtime environment - **Tech. description:** PHP 7 hypertext preprocessor scripting runtime - **Depends on:** - - **Used by:** Kanboard, SeedDMS, Ushahidi - **Related skills:** HTTP (proxying), PHP 7 (language overview), PHP-FPM Python 2 ^^^^^^^^ - **General description:** Python 2 runtime environment - **Tech. description:** Python 2 runtime environment and standard libraries - **Depends on:** - - **Used by:** CKAN, CKAN DataPusher, CTS, OpenMapKit, Sahana Eden - **Related skills:** linux compilation toolchain (header files, gcc, make etc.), pip, python (language overview) Python 3 ^^^^^^^^ - **General description:** Python 3 runtime environment - **Tech. description:** Python 3 runtime environment and standard libraries - **Depends on:** - - **Used by:** GNU Health, Odoo, Pan.do/ra, SeedDMS, VMMgr (doesn't use container) - **Related skills:** linux compilation toolchain (header files, gcc, make etc.), pip, python (language overview) Ruby ^^^^ - **General description:** Ruby runtime environment - **Tech. description:** Ruby 2.4 runtime environment and gem package installer - **Depends on:** - - **Used by:** CrisisCleanup, OpenDataKit Build - **Related skills:** linux compilation toolchain (header files, gcc, make etc.) Tomcat ^^^^^^ - **General description:** Lightweight Java application server - **Tech. description:** Java application JSP and servlet container - **Depends on:** Java - **Used by:** MifosX, Motech, OpenDataKit, Sigmah - **Related skills:** JVM tuning, shell scripting Components ---------- Components which are supplied as LXC containers required by other applications but aren't exposed directly to the end user ActiveMQ ^^^^^^^^ - **General description:** Message broker middleware - **Tech. description:** Java-based message broker and messaging server - **Depends on:** Java - **Used by:** Motech - **Related skills:** JVM tuning, XML MariaDB ^^^^^^^ - **General description:** MySQL database server - **Tech. description:** MySQL-compatible relational database management system - **Depends on:** - - **Used by:** MifosX, Ushahidi - **Related skills:** SQL (language overview) Postgres ^^^^^^^^ - **General description:** PostgreSQL database server - **Tech. description:** PostgreSQL relational database management system - **Depends on:** - - **Used by:** CKAN, CrisisCleanup, CTS, GNU Health, Kanboard, Motech, Odoo, OpenDataKit, OpenDataKit Build, OpenMapKit, Pan.do/ra, Sahana Eden, SeedDMS, Sigmah - **Related skills:** SQL (language overview) RabbitMQ ^^^^^^^^ - **General description:** Message broker middleware - **Tech. description:** Erlang-based message broker and messaging server - **Depends on:** - - **Used by:** Pan.do/ra - **Related skills:** - Redis ^^^^^ - **General description:** Key-value NoSQL database server - **Tech. description:** In-memory NoSQL key-value data structure object store - **Depends on:** - - **Used by:** CKAN - **Related skills:** - Solr ^^^^ - **General description:** Full-text search server - **Tech. description:** Apache Lucene-based full-text search and indexing platform - **Depends on:** Java - **Used by:** CKAN - **Related skills:** shell scripting, JVM tuning Applications ------------ Components which are supplied as LXC containers exposed directly to the end user CKAN ^^^^ - **General description:** Data management and data store system - **Tech. description:** Flask-based data store application - **Depends on:** CKAN DataPusher, Postgres, Python 3, Redis, Solr - **Used by:** User - **Related skills:** PostGIS, python frameworks and modules (flask, paster, setuptools), Solr core configuration CKAN DataPusher ^^^^^^^^^^^^^^^ - **General description:** Data file parser for CKAN - **Tech. description:** Python-based data file parser service for CKAN - **Depends on:** Python 3 - **Used by:** CKAN - **Related skills:** MIME types identification, WSGI application development CrisisCleanup ^^^^^^^^^^^^^ - **General description:** Disaster response and relief coordination - **Tech. description:** Ruby-on-Rails-based application with Nodejs-generated frontend assets - **Depends on:** LibXML, Nodejs, Postgres, Ruby - **Used by:** User - **Related skills:** Nodejs build systems (npm, yarn), Ruby build systems and frameworks (Bundle, Devise, Gems, Rails, Rake) CTS ^^^ - **General description:** Commodity tracking system - **Tech. description:** Django-based forms applicaton - **Depends on:** Postgres, Python 2 - **Used by:** User - **Related skills:** python frameworks (Django), WSGI application development Decidim ^^^^^^^ - **General description:** Platform for citizen participation - **Tech. description:** Ruby on Rails-based forms and polls applicaton - **Depends on:** Nodejs, Postgres, Ruby - **Used by:** User - **Related skills:** Nodejs build systems (npm, yarn), Ruby build systems and frameworks (Bundle, Devise, Gems, Rails, Rake) FrontlineSMS ^^^^^^^^^^^^ - **General description:** Bulk text messaging - **Tech. description:** Spring-based application for modem device access - **Depends on:** Java - **Used by:** User - **Related skills:** Java build systems and frameworks (grails, Spring), Jetty, linux modem/tty handling, Xorg (X server) GNU Health ^^^^^^^^^^ - **General description:** Hospital information system (ERP) - **Tech. description:** Tryton-based form application RPC backend with Nodejs-based frontend - **Depends on:** Nodejs, Postgres, Python 3 - **Used by:** User - **Related skills:** Nodejs build systems (grunt, npm), python modules (setuptools, virtualenv) Kanboard ^^^^^^^^ - **General description:** Kanban project management - **Tech. description:** Symfony-based forms application - **Depends on:** PHP, Postgres - **Used by:** User - **Related skills:** PHP build systems and frameworks (Composer, Symfony) MifosX ^^^^^^ - **General description:** - **Tech. description:** Spring-based forms application RPC backend with Nodejs-packed frontend - **Depends on:** MariaDB, Tomcat - **Used by:** User - **Related skills:** Java frameworks (Spring), Nodejs and JavaScript development (Angular, Bower, Grunt) Motech ^^^^^^ - **General description:** - **Tech. description:** Apache Felix-based forms application - **Depends on:** ActiveMQ, Postgres, Tomcat - **Used by:** User - **Related skills:** Java frameworks (Apache Felix, Spring) Odoo ^^^^ - **General description:** - **Tech. description:** Werkzeug-based forms application RPC backend with Nodejs-based frontend - **Depends on:** Nodejs, Postgres, Python 3 - **Used by:** User - **Related skills:** WSGI application development OpenDataKit ^^^^^^^^^^^ - **General description:** - **Tech. description:** Spring and OpenRosa-based data store application - **Depends on:** Postgres, Tomcat - **Used by:** User - **Related skills:** Java build systems and frameworks (Gradle, Spring) OpenDataKit Build ^^^^^^^^^^^^^^^^^ - **General description:** - **Tech. description:** Ruby-based forms application with Nodejs-based data converter - **Depends on:** Nodejs, Ruby - **Used by:** User - **Related skills:** Nodejs build systems (npm), Ruby build systems and frameworks (Bundler, Rake) OpenMapKit ^^^^^^^^^^ - **General description:** - **Tech. description:** Nodejs-based forms application with python dependencies - **Depends on:** Nodejs, Postgres, Python 2 - **Used by:** User - **Related skills:** JavaScript development, Nodejs build systems (Yarn) Pan.do/ra ^^^^^^^^^ - **General description:** - **Tech. description:** Python-based media store with Javascript-based frontend - **Depends on:** Postgres, Python 3, RabbitMQ - **Used by:** User - **Related skills:** ffmpeg, imagemagick, JavaScript development (oxjs) Sahana Eden ^^^^^^^^^^^ - **General description:** - **Tech. description:** Web2py-based forms application - **Depends on:** Postgres, Python 2 - **Used by:** User - **Related skills:** PostGIS, python frameworks and modules (requests, selenium, Web2py) SeedDMS ^^^^^^^ - **General description:** - **Tech. description:** PHP-based data store application with Lucene-based fulltext index - **Depends on:** PHP, Postgres - **Used by:** User - **Related skills:** Apache Lucene, ghostscript, LibreOffice (unoconv), imagemagick, MIME types identification Sigmah ^^^^^^^ - **General description:** - **Tech. description:** Apache Commons-based forms application - **Depends on:** Postgres, Tomcat - **Used by:** User - **Related skills:** Java development (hibernate, log4j) Ushahidi ^^^^^^^^ - **General description:** - **Tech. description:** Laravel-based RPC backend with Angular-based frontend - **Depends on:** MariaDB, PHP - **Used by:** User - **Related skills:** JavaScript build tools and frameworks (Angular, Babel, WebPack), PHP build tools and frameworks (composer, Laravel, phinx)