RoadMap
#######

2.0
***

Overall state: 'Test && polish period'.

Milestones
==========

* New deb package layout: mini-buildd (the service), mini-buildd-utils (for users), python3-mini-buildd, mini-buildd-doc
* Code migration to ``python 3``.
* Update to ``django 2.2`` (minimal version).
* Switch to ``twisted`` as http backend.
* Support secure data channels (HTTPS && SFTP).
* API upgrade to json.
* Event message queue.
* Periodic task scheduler (cron, internal use).
* Automated repository snasphots (weekly, monthly, yearly).
* WEB UI rewrite.

2.0 will

* be 'upgrade-compatible' with 1.0 (especially, there is no SQL scheme change).
* **not** be run-time compatible with 1.0.

Open Tasks
==========

Test and document upgrades from 1.0.x
-------------------------------------

* Test mini-buildd-ssh-\*-command setup.

Upgrading from 1.0.x
====================

Package upgrade
---------------
Your ``1.0.x`` installation will typically run on a buster-based system.

You may simply ``dist-upgrade`` that system (to ``bullseye`` or rather ``bookworm``) -- just make sure the
``mini-buildd`` package is **never purged** during that process.

Extra APT sources needed:

* ``bookworm``: ``Debian Backports (bookworm-backports)`` -- *available after Debian bookworm release*
* ``bullseye``: ``Debian Backports (bullseye-backports-sloppy)`` -- *available after Debian bookworm release*

Alternatively: buster-based upgrade
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For convenience, it's still possible to run ``2.0.x`` under ``buster`` with some tweaks:

Extra APT sources needed:

* ``Debian Backports`` (buster-backports)
* ``Hellfield Archive`` (buster-ab-stable) **3rd party**

To upgrade, ``aptitude`` is imho the easiest way. Select the suggestion that de-installs py2 variants, and upgrades all the rest::

	aptitude install mini-buildd/buster-ab-stable

.. attention:: [buster-based install] 500 Internal Error: ``[Errno 2] No such file or directory: 'S.gpg-agent.extra'``

	 We see this error seemingly random on buster installations (w/ ``2.2.27-1~bpo10+1``) only so far.

	 * Removing a very old left-over ``~/.gnupg/gpg.conf`` seem to have helped so far on an actual host
	 * In test suite / chroot, it usually pops up with profile '_all'
	 * Never yet seen with default (no) profile or '_debian'

Post-install checklist
----------------------

* ``mini-buildd`` command line arguments (``dpkg-reconfigure``) -- see :mbdcommand:`mini-buildd`
	* ``--httpd-bind`` is now deprecated in favor of ``--http-endpoint``
	* ``--verbose``, ``--quiet`` are now deprecated in favor of ``--log-level``. Also, giving *none* of these options now yields the recommended production log level (before ``--verbose`` was default)
	* ``--debug`` now has some options removed (see man page). In general, never use it for production, ``--log-level=DEBUG`` should be good enough
* Decide if you want switch to ``https/ftps``: See :ref:`administrator:Running encrypted`
* DB field ``Daemon.ftpd_bind`` now also deprecates 'non-endpoint' notation
* DB field ``Daemon.gnupg_keyserver``: Please change to traditional keyserver (like ``keyserver.ubuntu.com``) to retain functionality
* Inspect/extend your setup, see :ref:`administrator:API call ``setup``` (regenerate reprepro repositories will enable new ``Content`` support (else you need to wait for internal cron))
* Recommended to re-create all chroots -- see :apicall:`remake_chroots`, :mbdpage:`builders`
* File ``~/.mini-buildd.pid`` is no longer used, and may be removed (unless you use a custom setup using the old initv start/stop script)
* In case you have a custom upload setup, you can now add a custom dput snippet for convenience -- see :apicall:`dput_conf`
* In case you hate the autogenerated complicated "Origin" text, you may now customize it -- see DB field ``Daemon.extra_options``

2.2 Brainstorm
**************

New Features
============

* Dependency check on package migration
* Watcher support: Autoport and/or alarm on Debian Package Updates
* Automatic SSH upload support, either by scripting the setup or integrating SSH w/ twisted
* Make piuparts actually work (non-EXPERIMENTAL)
* Cron: ccache expire

django
======

* SQL schema migration: Get rid of all the workarounds in models just to stick to old schema.
* Integrate CAS/SSO-like features (python3-django-casclient?)

Refactoring
===========

* gnupg: Switch completely to 'python3-gpg' (*NOT* 'python3-gpgme')
* Archive: Rethink Archive::mbd_ping (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=740576)

Repository
==========

* Release: Alternatives for NotAutomatic, ButAutomo...)?? Can we use more finegrained PRIOS on archives?
* sid-test-wildwest: Add extra suite for arbitrary package (deb+src) installs?
