Upstream projects

From MediaWiki.org
Jump to: navigation, search

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.

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.

MediaWiki and its own upstream projects
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,

C. Scott Ananian

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?)
MediaWiki-related components of the MediaWiki development infrastructure
translatewiki.net Where we organise Localisation of MediaWiki PHP [1], MLEB translatewiki:Support Nikerabbit (founder), Siebrand (co-maintainer), Raymond (MediaWiki updates responsible)
Other projects by MediaWiki devs for MediaWiki work, not used by MediaWiki
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:

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.

Upstream components
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]
Squid 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.

Upstream tools
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]

Upstream tools
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.

Upstream tools
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.

Upstream tools
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]

  1. 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]