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 Tuesday, 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

 * 2x10 minutes - introductory presentation(s)
 * 45 minutes - open discussion
 * 10 minutes - wrap up

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-T119032

Goals
For SOA (T114803), we are seeking to Slides: SOA at Wikimedia - Quo Vadis?
 * reflect on what we have done in the last two years, and discuss
 * what went well, and
 * what did not go so well.

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.
 * Using or avoiding auto-wiring
 * Using existing DI frameworks like Pimple, PHP-DI, or Symfony (directly or wrapped)

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.''