Wikimedia Developer Summit/2016/Software engineering

T119032 - This is the session pad for the Working area focus: Software engineering session, slated to begin at 10:00 AM on Monday, January 5th.

Purpose
Figure out how we can simultaneously optimize the following conditions: In more concrete terms, we want to discuss ways to make making MediaWiki more modular, and by that, making it easier to test, understand, modify, and re-use individual components. The two approaches we want to discuss in particular are SOA and DI - not as alternatives, but as techniques that complement each other.
 * 1) make software development more logical and obvious for all Wikimedia contributors
 * 2) make Wikimedia software more useful and reliable for the Wikimedia sites

Agenda

 * 20 minutes - introductory presentation
 * 60 minutes - open discussion

Some possible topics revolve around refactoring core:
 * T114803: Service-Oriented Architecture, quo vadis?.
 * T384: RfC: Dependency Injection for MediaWiki core

Etherpad
https://etherpad.wikimedia.org/p/WikiDev16-T114803

https://etherpad.wikimedia.org/p/WikiDev16-T384

For overarching discussion: https://etherpad.wikimedia.org/p/WikiDev16-T119032

Goals
For SOA (T114803), we are seeking.... TBD

For DI (T384), we are seeking consensus about:
 * Moving towards a DOA architecture, with (mostly) stateless service objects and (mostly) dumb value objects.
 * De-coupling services using dependency (constructor?) injection.
 * Using a service locator / DI container, and how and in how far this should be configurable by extension.

Chronology
''This section is where an attempt is made to capture the gist of who said what, in what order. A transcript isn't necessary, but it's useful to capture the important points made by speakers as they happen.''