BuildStream BoF at GUADEC: Wednesday session minutes



Hi,

please review the minutes of our Wednesday BoF


## Topics not covered during the BoFs

        * Improvements in Code Review governance. - @tristanvb
        * Gitlab related topics
                * Notifications through mail - @toscalix
                * Evaluation of the capabilities to integrate Gitlab and mailing lists 
to send merge requests and diffs to the mailing list. - @toscalix
        * BuildStream release
                * Schedule - @toscalix
                * Goals - @tristanvb @jjardon  and @toscalix
                * Key features - @tristanvb
                * Release checklist - @toscalix

# Wednesday session

        * SourceCache - Richard Maw
        * Summary of yesterday's Flatpak BoF - Valentin
        * Dogfooding BuildStream - Richard Maw
        * Freedesktop SDK - Javier and Adam
        * Bootable images (complete systems) - Javier
        * VCS Reduction - Richard Maw
        * Conference evaluation - All

## SourceCache

        * We reuse sources in various cases and could optimise the staging 
        * Splitting tasks: CAS cache and xxx
                * Currently believe we know the requirements from experience with 
BuildGrid - also uses a CAS cache
        * Will be extra work to reformat data, but hopefully it will pay off for 
other workers
        * Need a cache ID for sources
                * may already have one: Source.get_unique_key()

## Summary of yesterdays Flatpak BoF

        * Valentin summarised the conclusions of the BoF and the conversations 
with GNOME devs, specially Alex Larson.
        * Discussion about how to move forward
        * For each module there is an element
        * Each Flatpak package need 2 elements:
                * Compose to split and run integration commands
                * Flatpak image that takes the /app sub-tree out of the artifact to 
package a Flatpak app, 
                * Because we need at least the runtime plus the .Debug extension, we 
need 4 elements to package each application.
        * Re-use what's in compose - make something that can work with compose.
        * Generate different directories per domain of the split rules, still have 
an artifact at the end, check that out, run Flatpak build-export on the 
directories
        * Things to improve on freedesktop sdk:
                * Clean up of junctions - we have two - One for config, one for sdk 
itself.  Simplify by using just one junction.

https://gitlab.com/valentindavid/org.gnu.Hello/tree/valentindavid/supertuxkart 
(b515a232db73d5aca1f10e5703877aea13e4431c)
https://gitlab.com/BuildStream/buildstream/tree/valentindavid/331_include 
(6028168de6fc4bbf27b7e04c96a336d641536dc5)
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/tree/valentindavid/conf-includes-2

## Dogfooding

        * We have a problem that developers are making changes to buildstream 
without using BuildStream so the only feedback we get is from users.We can 
advance some of those issues by using the tool ourselves.
        * there's been debate about best way to do this
                * we could build a system to host buildstream in and use bst shell to 
run the test suit in this
                * we could build other images as well  (Flatpak/container) images out 
of this so that we can use the current version
        * There's worries that we could end up over optimizing for our own use 
case
        * Potential blocker - Linux kernel, before 4.18, does not support 
unprivileged fuse mounting - you can't combine usernamespace and  FUSE, and we 
need FUSE.
        * So one option is just to wait for 4.18 which is released in a couple of 
weeks
        * Valentine emphasises the point that the bottom line is simple: Our 
developers aren't using the tool and that using the tool in anyway is going to 
be a big step forward.
        * It looks like we have users working with slightly different workflows: 
bst shell vs workspaces.
        * Agustin has points he wants developers to consider in order to ensure we 
do not go too far.
                * dogfooding is about testing a tool as it is consumed by users and 
use it as users do, mimetising their workflow as much as possible. It is 
advancing problems they will have.
                        * Dogfooding vs simulation/emulation.
                * we are testing as users *are going to* use the tool, not how they 
are using it at the moment. There is a risk of getting an experience that is 
not real.
                * questions that this is actually dog fooding but still sees value in 
doing it
                * Problem is perhaps that bst is too different from the stuff being 
developed by downstream users
                * Let's ensure we don't set up an imagined workflow here - need to base 
it on actual use cases. 
                * AB: simulate the dev workflow in one example and then set up test to 
run over and over again - that is a simulation / emulation, rather than dog-
fooding
        * We can test the workflow of developing using workspaces, but may not be 
able to test bst shell due to the above issues
        * We could make an example building buildstream, BuildGrid and buildbox
        * Tristan M points out that python developer workflow means we'll never 
actually build anything using buildstream for buildstream
        * we could use buildstream to build packages from which we could install 
buildstream.
        * Javier: what about create a Flatpak? We will partially resolve the 
distribution problem and exercise the Flatpak-image plugin that we want to 
improve anyway

Summary:
    * Clear path forward is to have a project that we can open a workspace 
with, develop in that way, build a package that we can install.
    * We may not get shell working because of kernel versions but it's 
something to look at. Building Buildbox is a good target. 
    * So, outcome should be: project with bst files for 3 components to build - 
BuildGrid, buildbox, buildstream. 

## Freedesktop SDK

        * Waiting for features
                * Marked in issue tracker as BuildStream
                        * Generate manifests etc.
        * Release - As soon as blockers are fixed. A matter of weeks.
        * It would be nice if BuildStream release a tag, so Freedesktop SDK can 
use that instead of a SHA1.
        * They want to change the release numbering to release date based
                * Want to replace semantic versioning by date based. Older dated 
releases will end up with more updates.
                * Will be Ubuntu-like 18.07.0 with bugfixes will be 18.07.1
                * At least annual releases.
                * We may end up with a year with no ABI changes which would mean not 
making a yearly release.
                        * We think it's unlikely since openssl changes ABI, but we might 
stick with an older openssl version for the sake of applications even if there 
is a newer openssl version.
                                * at present openssh isn't compatible with later versions of 
openssl, so updating right now is a challenge
                        * We can also have multiple versions of libraries installed in 
parallel. (should raise this with Flatpak guys?)
                * There's a messaging problem in the guarantee of how often there will 
be a release.
                * It's too young a project to need to have a regular release cycle, 
but it may make it more attractive as a platform.
                * For Open Source applications it would be possible for FlatHub to try 
building applications against newer releases, but proprietary applications 
can't do that.
                * Currently thinking that every 2 years would be a good cadence.
                * We are not sure on how long we will port security patches to older 
versions
                * Not every GNOME component makes a release with GNOME's release 
cadence, e.g. if there are no interesting changes.

Release Candace:
    
        * Aim for release once every year, unless there has been no ABI breakage, 
then no need to release. OR if there's a big application or feature change, we 
should release.
        * Message here to advance is that the release is based on ABI breakage, 
rather than an arbitrary date.
        * However, GCC could be a spanner in the works here...if you want to stay 
up to date with the latest GCC version, you need to release every year, as GCC 
does. So are we saying that we need to release every year? To be decided.
        * ACTION: Javier to come up with two release proposals - ask for the other 
stakeholders' input here.

Options discussed:
        1. We release every year, _only_ if:
                2.  There is a ABI break
                2. There is a major release in a component
        1. We release stable, 
                2. _only_ gets security updates
                2. All updates go to master now
        1. We explore changing release schedule for Platform and SDK


Javier's Proposal draft:
- We release stable, _only_ gets:
  - security updates
  - stable releases (tested carefully), no ABI breaks / API build breaks.
- We release every year, _only_ if:
  - there is a ABI break
  - there is a "API build" break (apps might not compile because new major 
releases of important packages (GCC))
  - Looking at the GCC cadence, this is going to happen

- We only maintain current release and previous one, this means:
  - stable release gets 2 years of security updates
  - We maintain 3 release at any given time:
    - development
    - stable
    - stable-1

## Bootable images

        * MR already available and working (in the CI, booting a system)
        * Only remaining a Dependency problem:
                *  The freedesktop-sdk runtime shouldn't depend on systemd, but 
systemd is needed for booting. 
                * d-bus builds differently based on whether it depends on systemd or 
not. Without systemd it is usable as a Flatpak container runtime. With systemd 
it is usable as an image.
                * Can have a conditional dependency on systemd if we want a variant of 
freedesktop-sdk that can run as an image
        * ACTION: Javier, valentin and tristan to explore bst conditionals to fix 
the already existing MR

## VCS Reduction

        * Juerg and Richard had a go at shell scripts to solve this on Monday
        * https://gitlab.com/BuildStream/buildstream/snippets/1731497
        * git stability disagreements between Juerg and Richard 
        * TVB: tested with Juerg's shell script overnight, everything we build 
from git has built, inspected one of the projects that uses git describe, it 
has the correct version number
        * Need to do more thorough testing though rather  than just a manual check 
of one.
        * There's a risk here that the shell script could be an ugly 
implementation that breaks things later - but the impact is not huge. 
        * Conclusion: this solution is not the most optimal, there is risk 
attached, there is no such thing as a perfect solution here - this is actually 
a feature that's not supported in git.
                * We would need to be able to pre-process a git history such that a 
subsequent call to `git describe` will work with any provided options.
        * AB: so as part of our release we have an page with 'known issues' - this 
is completely normal and we can deal with that.

Summary to approach: history which doesn't include objects, includes the tag 
in the cache key, though possibly not in the tracking data, as we want to 
ideally avoid a false hit if that tag has moved since history was updated 
(this would clearly be undesirable since we then cannot guarantee 
reproducibility. Cache misses may be expensive, but a false cache hit is 
scary). 
We should create a prototype / demo / first draft - before trying to create 
perfect.


## Documentation

        * Currently focused on newcomers, we can do more, including diagrams. We 
have demands for this which is a positive sign. 
        * For technical documentation, we have an established process in terms of 
how to write this.
        * Not currently got a clear description of what BuildStream even is.
        * The topic of how it should be documented comes up every time we spawn a 
new sub-project. If we think documentation of BuildStream is doing well we 
should use the same process for sub-projects.
        * We should come up with lists of what examples and other documentation we 
think we should have, so when developers have time,  can pick those 
documentation tasks up.
        * We should have a clear structure to follow for any newcomers to follow 
in order to submit and contribute docs.
        * Phil says we could add a paragraph in HACKING.rst to cover this - TVB 
says that this policy is covered on gitlab.
        * This is an area we can improve. Make it easy for people to contribute.
        * ACTION: tristan to check and put in HACKING the guide he shared with 
Alberto; DONE
        * Could have an edit button on the docs where it takes you directly to the 
.rst on gitlab and you can amend it and submit an MR.
        * AB: Let's keep consistency between all of the projects under the  
BuildStream Umbrella.  
        * Analyze use cases and write doc specific for them
                * Developer
                * Integrator
                * Flatpak packager
                * ...
                * One one to tackle this is to write examples for each case
        * We are missing documentation for examples, specifically:
                * I want to put a cmake project in BuildStream
                * I depend on project A, but i want to over-ride how it builds a 
library, because i don't want to build it twice. JJ raised a ticket for 
this... 
        * So the two examples that live in buildstream-examples make use of bst-
external plugins. We should migrate these examples to bst-external 
documentation, i.e. how do we write and use plugins that aren't supported by 
buildstream core
                        * We can then link to this into the main repo. 
        * For related projects (e.g. bst-external) it should have its own 
documentation, and they should link to each other and have as close look and 
feel as each other as possible, so the transition between documentation for 
one project and another is seamless apart from the URL pointing to a different 
project's documentation now.

        * Important pre-release docs
                * overides
                * conditionals
                * junctions
                * filters
                * workspaces



## Conference evaluation

No minutes from this topic.
* Each participant in the BoF went through the highlights and points to 
improve about GUADEC and the BuildStream specific activities or events.

## Participants on the Wednesday session

        * Jürg Billeter - juerg billeter codethink co uk
        * Agustin Benito Bethencourt - agustin benito codethink co uk
        * Richard Maw - richard maw codethink co uk
        * James Ennis - james ennis codethink co uk
        * Phil Dawson - phil dawson codethink co uk
        * Thomas Coldrick - thomas coldrick codethink co uk
        * Finn Ball - finn ball codethink co uk
        * Valentin David - valentin david codethink co uk
        * Laurence Urhegyi - laurence urhegyi codethink co uk
        * Javier
        * Adam
        * Tristan

################################

-- 
Agustín Benito Bethencourt
Principal Consultant
Codethink Ltd
We respect your privacy.   See https://www.codethink.co.uk/privacy.html


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]