Upstream projects
MediaWiki developers and users[1] rely on several upstream projects for their architecture or processes. At the same time, they develop software projects used by others, which are downstream to them. These links define our location in the free software map, our neighbor communities, and the flows of feedback, patches, and contributors.
Let's identify our upstream projects, our neighbor communities, and the contributors that connect us with them.
Contents
Motivation[edit | edit source]
This is a first step to improve our relations with other communities, to increase the contributions received, and our influence in the projects that matter to us.
Our mid-term goals include:
- identify the projects where we want to see significant development, to the point of sending patches as well
- identify the communities where Wikimedia should be regularly active and heard
- identify the people in the Wikimedia and upstream communities that know each other and act as bridge
- identify organizations and events we should get in touch and be part of
- get involved in bigger development efforts regularly, become a regular FOSS player
Invented Here[edit | edit source]
Projects we maintain that we want others to use and contribute to.
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
MediaWiki | Wiki engine | PHP | gerrit | Phabricator | Tim Starling, Brion Vibber |
Orgchart tool | Generates organisational charts. | JavaScript plus some node.js hackery | gerrit | Phabricator (under "Utilities") | MarkTraceur |
Parsoid | Two-way MediaWiki wikitext↔HTML parser | NodeJS | gerrit | Phabricator (under "Parsoid") | Subbu Sastry, |
VisualEditor | Rich HTML editor | JavaScript | gerrit | Phabricator (under "VisualEditor") | James Forrester, Ed Sanders, Trevor Parscal |
OOjs | Library for working with objects | JavaScript | gerrit | Phabricator (under "OOjs") | Timo Tijhof, Roan Kattouw, Trevor Parscal |
OOjs UI | OOjs-based UX toolkit | JavaScript and PHP | gerrit | Phabricator (under "OOjs-UI") | James Forrester, Bartosz Dziewoński, Trevor Parscal, Timo Tijhof |
ResourceLoader | Web code delivery system | PHP and JavaScript | Currently embedded inside MW | Phabricator (under "MediaWiki-ResourceLoader") | Timo Tijhof, Roan Kattouw, Trevor Parscal |
Milkshake | jQuery.uls, Language selection | JavaScript | GitHub | GitHub | Santhosh Thottingal |
jQuery.IME, input method editor library | JavaScript | GitHub | GitHub | Santhosh Thottingal | |
jQuery.i18n, Internationalization library | JavaScript | GitHub | GitHub | Santhosh Thottingal | |
jQuery.webfonts, Font embedding capabilities | JavaScript | GitHub | GitHub | Santhosh Thottingal | |
Offline content tools | mw-ocg-bundler, article/resource spider tool | JavaScript/node | GitHub | GitHub | C. Scott Ananian |
mw-ocg-latexer, article PDF conversion tool | JavaScript/node | GitHub | GitHub | C. Scott Ananian | |
Pywikibot | Python Wiki Robot Framework to automatize tasks | Phabricator (under "Pywikibot") | |||
CDB | Pure PHP replacement for dba_* functions | PHP | gerrit | Phabricator (under "CDB") | Tim Starling, Chad Horohoe, |
at-ease | Safe replacement to PHP's @ for suppressing warnings | PHP | gerrit (temp Gitblit) | Phabricator (under "at-ease") | Tim Starling, Legoktm, |
utfnormal | Unicode normalisation functions | PHP | gerrit | Phabricator (under "utfnormal") | Brion VIBBER |
IPSet | Matches IPs against CIDR sets | PHP | gerrit (temp Gitblit) | ??? | Brandon Black, Ori Livneh |
composer-merge-plugin | Merge one or more additional composer.json files at runtime | PHP | GitHub | GitHub | Bryan Davis |
(What else?) |
translatewiki.net | Where we organise Localisation of MediaWiki | PHP | [1], MLEB | translatewiki:Support | Nikerabbit (founder), Siebrand (co-maintainer), Raymond (MediaWiki updates responsible) |
Bingle | Pipes bugs form Bugzilla into tools like Mingle and Trello; obsolete after migration to Phabricator | Python | Github | Github | User:Awjrichards |
More stuff (hundreds of projects) from MediaWiki devs and wikimedians is being listed at:
- https://www.ohloh.net/p/mediawiki-webtools
- https://www.ohloh.net/p/mediawiki-clients
- https://www.ohloh.net/p/mediawiki-scripts
- https://www.ohloh.net/p/wikibots
- Others: https://www.openhub.net/orgs/wikimedia/projects
Components[edit | edit source]
Projects that contribute to the architecture of MediaWiki, key extensions, and applications. They are included in the downloadable packages of key Wikimedia projects, or they are identified as required dependencies.
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
GNU diff and diff3 | Powers recent changes, history and undo button (i.e. most editing features). | ||||
Elasticsearch | Distributed real-time search and analytics engine. | Java | GitHub | GitHub | manybubbles aka nik9000 on GitHub. |
jQuery | Lots of DOM traversing, and other DOM-related helpers, for JavaScript. | JavaScript, CSS | GitHub | Trac | Krinkle |
OpenStack Nova | OpenStack compute service. | Python | OpenStack Gerrit | Launchpad | Ryan Lane |
OpenStack Glance | OpenStack image service. | Python | OpenStack Gerrit | Launchpad | Ryan Lane |
OpenStack Keystone | OpenStack identity service. | Python | OpenStack Gerrit | Launchpad | Ryan Lane |
OpenStack Swift | OpenStack object storage service. | Python | OpenStack Gerrit | Launchpad | Wikimedia Operations team |
Puppet | Configuration management system. | Ruby | GitHub | Jira | Wikimedia Operations team |
SaltStack | Orchestration and remote execution system. | Python | GitHub | GitHub | Ryan Lane |
Unihan Database | For Chinese language conversion | Used as database | |||
Smart Common Input Method | For Chinese language conversion | Used as database | |||
libtabe | For Chinese language conversion | Used as database | |||
ImageMagick | general purpose image scaling | C | No repo sourcelink | Forum | |
Lua | Scripting language | C | |||
ACE | Web based code editor | JavaScript, HTML | Github | Github | User:TheDJ (has signed contributor license) |
VIPS | Image scaling of large images (VipsScaler) | Github | Github | User:Bryan | |
libRsvg | PNG renderer for SVG images | C | GNOME git | GNOME bugzilla | |
MathJax | Math rendering in HTML/SVG/MathML; used by Math extension | JavaScript | GitHub | GitHub | |
FFmpeg / libav | Video conversion and scaling | C | ffmpeg / libav | ffmpeg / libav | |
MWLib | mediawiki parser and converter | Python | GitHub | GitHub | |
Pygments.org | Syntax highlighting | Python | Bitbucket | Bitbucket | |
Unicode CLDR (Common Locale Data Repository) | All we manage to take: language names, plural rules, language-territory information, ... | Nemo (CLDR Survey Tool manager) | |||
CLDRPluralRuleParser | Plural support based on CLDR | JavaScript | GitHub | GitHub | User:Santhosh.thottingal |
Apertium | Free software, rule-based machine translation; used by Translate, ContentTranslation and others. | [2] | [3] | Francis Tyers, Firespeaker, Unhammer | |
Ceph | Distributed storage system | [4] | |||
Cortado | Media streaming Java applet | [5] | |||
GlusterFS | Distributed file system | [6] | |||
HHVM | https://github.com/facebook/hhvm/issues | ||||
HTML Tidy | http://sourceforge.net/p/tidy/bugs/ | ||||
Kaltura / mwEmbed | used by TimedMediaHandler | [7] | |||
Leaflet | Maps on Mobile | [8] | |||
Lilypond | used by the Score extension | [9] | |||
MariaDB | Database | [10] | |||
memcached | https://github.com/memcached | ||||
multilightbox | used by Extension:MultimediaViewer | [11] | |||
MySQL | Database | [12] | |||
nginx | Reverse proxy / web server | [13] | |||
PHP | Programming language that MediaWiki is written in | [14] | |||
Rangy | JavaScript range and selection library, used by VisualEditor | [15] | |||
Caching proxy (superseded by Varnish in WMF infrastructure) | [16] | ||||
Swift | Distributed storage system | [17] | |||
Varnish | Reverse proxy server | [18] | |||
lightncandy | HTML templating (mustache and handlebars) in PHP | PHP | GitHub | GitHub | EBernhardson, Kaldari, ? |
Composer | Dependency manager for PHP libraries - used for managing MediaWiki libraries and CI | PHP | getcomposer.org | Github | |
(what else?) |
MediaWiki development process[edit | edit source]
Projects that contribute to our development process. They are installed in Wikimedia servers and they are used in the release process of key Wikimedia projects.
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
Jenkins | Continuous integration | Java | GitHub | Jira | Hashar, Krinkle, MarkTraceur |
Jenkins Job Builder | Job creation system | Python | Git | Launchpad | Hashar, Krinkle, MarkTraceur |
Zuul | Gerrit/Jenkins bridge trigger | Python | Git | Launchpad | Hashar, Krinkle, MarkTraceur |
Gerrit | Code review tool | Java | Gerrit | Google Code (not for long) | (left empty for our gerrit admin), QChris |
Etherpad Lite | Real-time collaborative document editing | JavaScript, mostly node.js | GitHub | GitHub | MarkTraceur, Mutante |
PHPunit | xUnit testing framework for PHP | PHP | GitHub | ||
QUnit | JavaScript Unit Testing framework | GitHub | |||
Vagrant | |||||
Logstash | A tool that can be used to collect, process and forward events and log messages | JRuby | GitHub | Jira | bd808 |
Kibana | A browser based analytics and search interface for Elasticsearch that was developed primarily to view Logstash event data | JavaScript | GitHub | GitHub | bd808 |
Graphite/Carbon | Real-time graphing system and time series | Python | GitHub | GitHub | |
Grafana | Metrics visualisation | JavaScript | GitHub | GitHub | |
JSDuck | Documentation generator | Ruby | GitHub | GitHub issues | |
Mailman | Mailing list server / management (see also m:Mailing lists/Administration) | Launchpad | |||
git-review | Command line tool for using Gerrit | [19] | |||
Phabricator | Task tracker and software development tool used by Wikimedia, see https://phabricator.wikimedia.org | PHP | GitHub | phab:tag/phabricator-upstream and secure.phabricator.com | Andre et al. |
Bugzilla | Bug tracker which was used before moving to Phabricator. Now in read-only mode but might still require applying security upgrades (cf. T1198) | Perl | Git | Bugzilla, under the Bugzilla product | Andre |
(what else?) |
Non-MediaWiki but still WMF-used stuff[edit | edit source]
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
Trebuchet | Deployment system using SaltStack. | Python | GitHub | GitHub | Ryan Lane |
Trebuchet Trigger | Deployment system frontend extending git CLI. | Python | GitHub | GitHub | Ryan Lane |
RT (Request Tracker) | Ticket system used by Wikimedia Operations team | [20] | |||
Selenium | Automated Browser Testing | [21] | |||
Icinga | Network system monitoring (icinga.wikimedia.org) | [22] | |||
OTRS | Ticket system used for answering queries, see https://ticket.wikimedia.org/otrs | [23] | |||
CiviCRM | used for WMF Fundraising | [24] | |||
(what else?) |
Client-side interaction[edit | edit source]
Software heavily interacting or interconnected with MediaWiki functionality and work, but user side.
Integrated on Wikimedia projects[edit | edit source]
Projects that are used in some way (embedding, linking) on Wikimedia projects, often installed in Wikimedia servers like ToolLabs.
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
IIPImage | Viewing and zooming of ultra high-resolution images (linked by default on Wikimedia Commons) | C++ | SourceForge | SourceForge | |
Hundreds of other packages on Tools | |||||
(what else?) |
Editing tools[edit | edit source]
For a full listing, see the lists m:Open Source Toolset, m:FLOSS-Exchange, d:Q6584911.
Name & URL | Description | Language(s) | Repository | Bug tracker | Main contacts |
---|---|---|---|---|---|
Multimedia software and SVG tools | Software used to contribute/work on multimedia in MediaWiki wikis, like Inkscape and GIMP. May play well with MediaWiki or not. | ||||
LibreOffice (formerly OpenOffice) | Productivity suite, can e.g. produce charts and export/publish documents to wikitext (via libreoffice-wiki-publisher). | [25] | |||
Browser spellcheckers | Aiding editors to prevent errors before they're saved. | Over 120 in Firefox, see respective descriptions. | |||
KIPI uploader and other third party upload tools | Multimedia contribution software by third parties, usually made for integration in their software (e.g. digiKam, Gwenview). | ||||
Chromium/Chrome | Browser by Google | [26] | |||
Firefox | Browser by Mozilla | [27] | |||
Opera | Browser | [28] | |||
Internet Explorer | Browser by Microsoft | [29] | |||
(what else?) |
Notes[edit | edit source]
- ↑ For instance, whether volunteers or for work: maintainers and contributors of MediaWiki core and extensions and other developers; Wikimedia projects editors and sysadmins; sysadmins of MediaWiki wikis.
See also[edit | edit source]
- Developers/Maintainers
- Key Wikimedia software projects (As of August 2015[update] is out of date)
- https://krinkle.github.io/#wikimedia – Wikimedia projects mirrored on Github.
- Library infrastructure for MediaWiki
- m:FLOSS-Exchange