Hey,

> * Symphony

The Symfony Console component, no the Symfony framework.

> 1) Split the command line interface into a separate component (WQE-CLI perhaps) that would not be deployed.

This is easy to do, though will be less convenient for users of those scripts.

> 2) Go back to using MediaWiki's DB abstraction for running queries.

We cannot directly use it without making QueryEngine depend on MediaWiki, and without losing the ability to run the tests with an in-memory SQLite database. Luckily we can easily switch back to using the interface originally written for this task: https://github.com/wmde/WikibaseDatabase/blob/master/src/QueryInterface/QueryInterface.php

> 3) For generating DB tables (aka schema creation), we create a separate component

The schema definition code should not be moved into it's own component. It belongs very close to the code using the schema. So I don't see a sane way of getting rid of all code that depends on DBAL in a sane way. We could create our own implementation of this functionality again, though I do not consider that to be a sane approach. The code in question will not be executed on the WMF cluster though. And if you want to be really paranoid about it, you can just delete dbal from the build before it goes onto the cluster, and be sure it is indeed not executed.

Cheers

--
Jeroen De Dauw - http://www.bn2vs.com
Software craftsmanship advocate
Evil software architect at Wikimedia Germany
~=[,,_,,]:3