[haiku-development] Re: Beta1 release roadmap (again)

  • From: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx>
  • To: Haiku Development <haiku-development@xxxxxxxxxxxxx>
  • Date: Mon, 25 Sep 2017 22:24:03 +0200

Hi,

On Sat, Sep 23, 2017 at 9:53 AM, Adrien Destugues
<pulkomandy@xxxxxxxxxxxxx> wrote:

Hi there,
On the existing Haiku-managed repo
==================================

The existing repo at download.haiku-os.org is used when building Haiku
from sources. This is where we download package files from. It is
managed using jamfiles in Haiku sources and the "upload-packages" jam
target.

It was set up this way because it automatically keeps an archive of old
repo states, allowing people to build Haiku from old sources and get a
working image (useful for binary searching regressions, for example).

The new repo does not provide anything like that, it is more of a
rolling release with only a "current" branch.

My suggestion here is to keep things as they are, but:
- Strip the repo used to build Haiku to strictly the things needed to
  build Haiku. This means it remains used at build time, and we still
  need to manually upload packages to it, but much less often as it is
  only for the core libraries.
- Make the images point to the eu.hpkg repo by default. This means on
  first install, people will have a lot of updates to install already,
  but then they can easily keep their system up to date.

I like the suggestion of keeping a stable build repo.

My worry with the rolling repo is twofold:
* Can a broken package/broken dependency break Haiku? OpenSSL comes to
mind as a basic system package that needs to be taken care of.
* New (major) versions of software will come out. How do we handle
incompatibilities and dependencies? Is it possible to generate an
overview of (mostly) libraries that will require older versions to be
packaged separately? Likewise for big packages like python that are
designed to have different releases running alongside.

Both of these concerns make me suggest that we define a set of
restricted packages that are protected from being replaced with newer
builds without an additional intervention or check.

Packages and R1 branch
======================

The current plan for beta1 is that it is the branching point for the R1
branch. This means, once beta1 is out, there will be two live branches
in the Haiku repo. The R1 branch with the goal of fixing bugs in beta1
(no new features), and the master branch where works towards R2 could
start.

Doing things this way means the master branch will start to break binary
compatibility at some point. This means we need a different set of
packages and packages builders for it.

Our options are:

- Set up haikuports & buildmaster to handle this and publish two
  separate repos. We may need to extend haikuporter to be able to tag
  recipes as "R1 only" or "R2 only", I guess. It should be possible to
  use the haiku version for that (haiku >= R1~beta1 or haiku >= R2 or
  so).
- Give up on creating the R1 branch now and delay that to beta2. This
  allows us to get the beta1 release sooner and work on these
  infrastructure things a little later.

It depends on what the plans are for R2. I don't think there is much
code breaking binary compatibility in the works yet, so maybe the delay
creates no problems and we can continue with a single branch for some
time? In that case the beta1 branch would follow the same lifecycle as
previous release branches: a few weeks/months of stabilization, then the
branch "dies" when the release is made.

This is probably not the proper thread to discuss this, but I would
guess that one of the first efforts for R2 (or R1.1) would be to
switch to GCC5 as main compiler, which would de facto break binary
compatibility, at least for the x86 platform. IMO this would warrant a
branch in the builders. In that light I'd suggest that we would have
the infrastructure ready for a separate R2 branch.

Regards,

N>

Other related posts: