Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-20 Thread Tristan Van Berkom
Hi Philip,

On Tue, 2016-06-21 at 04:28 +, philip.chime...@gmail.com wrote:
[...]
> Tristan, I wonder if I can present a different perspective that might
> reconcile these differences.
> 
> I'm an active contributor to the gtk-osx module, which is a
> collection of scripts and jhbuild modulesets for building (some of)
> the GNOME stack on Mac OSX. While I personally believe very much in
> the goal of the GNOME desktop as a unified platform, I also put a lot
> of work into keeping the the GNOME stack libraries buildable on Mac,
> so that people can provide builds of GNOME apps (such as Gedit) on
> Mac as well as build their own cross-platform apps using GNOME tools.
> I think you even reviewed some of my patches to make Glade buildable
> on Mac not too long ago.
> 
> I hope you'll agree that this is a diverse use of GNOME modules,
> focused on consumers outside of the GNOME desktop.

Sure,

Running GNOME apps built on the GNOME stack on other operating systems
qualifies, and helps to raise our standards of quality and flexibility;
at least ensuring that some of our apps and libraries arent tied too
tightly to 'linux only' or even 'linux + systemd only'. But I'm also
interested in seeing our stack being the stack of choice for developing
appliances and systems in the IVI and mobile spaces for instance. It
was not all that long ago that GTK+ was a viable competitor to Qt for
embedded.

>  Please believe me then when I say that _nothing_ would make me more
> happy, in the capacity of gtk-osx contributor, than a CI system, and
> with it the ability to assume that the entire stack is buildable at
> any given time.

Yes, some things would make us happy even if they are not entirely
viable, and this is the point I've been trying to make.

The _only_ way this can be even halfway viable is if we were to make
the statement that all projects under the GNOME umbrella have the
single priority of integrating into a single unified user experience
and that this goal should override all other technical considerations -
this is a statement I perceive as hostile towards projects which only
want to be the best solution for the functionalities they provide. And
the people who just want to work on the best solution, are the people
we should be trying to attract and engage.

That said, there are two types of build breakages, there are simple
mistakes and there are intentional API breakages, I dont even want to
talk about mistakes, apparently there are many of those and that should
stop, if we want to be industry leaders; please dont go committing
stuff that breaks even the build of your own module.

Regarding intentional breakages; while I personally would love it if
the whole platform were to be meticulously API and ABI stable at all
times this is just not possible. Firstly, we don't hold all platform
libraries to the high standards as we do glib for instance, and
secondly; in order to improve the platform we need to refactor
vigorously. If we cannot enforce a discipline where all API breaks come
with an entirely new, parallel installable library (not soname bump),
then this refactoring will equate to API breaks, and if we're not
making them, then we are stagnating and falling behind.

If you've been following planet GNOME you will be aware that in fact
the GTK+ team is considering a plan to break API more often; with a
rolling 'unstable' release; if this route is taken then you can expect
a lot more cross-module breakages, how can one expect that all of GNOME
projects 'master' branch always be in sync with API changes from
underlying modules ? The best we can do is introduce breakages early in
the cycle, allowing a reasonable grace period for depending projects to
adapt to those.

On the other hand, having a reference 'integration' branch which always
does build, or a 'master-stable' as Sébastien has called it (it's
pretty much the same proposal when you boil it down), would allow us to
always easily see the delta of what modules have adapted to API
changes, and would also provide an entry point for newcomers to have
something as close to master as possible which builds.

Anyway, at this point I'm just reiterating the same things I've been
saying since our first thread in January - and for doing so I am
perceived as the enemy of CI, I am not; I just dont see how everything
'master' can possibly be expected to always be buildable, and trying to
come up with some approach which could.

Cheers,
    -Tristan


___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-20 Thread philip . chimento
On Sun, Jun 19, 2016 at 7:34 AM Tristan Van Berkom <
tristan.vanber...@codethink.co.uk> wrote:

> On Sat, 2016-06-18 at 08:15 +0100, Emmanuele Bassi wrote:
> [...]
> > Tristan: I understand you don't give a crap about GNOME as a holistic
> > project; you've made it *painfully* clear over the years. I'd like to
> > point out that without GNOME working as a single unit nothing we do,
> > or did up until now, really matters in the grand scheme of things.
> > The
> > *only* successful thing out of GNOME is the GNOME desktop environment
> > and its whole stack of technologies; everything else has been a
> > failure, mostly caused by this inane obsession of considering the
> > GNOME platform as a bag of loosely coupled projects that somebody has
> > to work hard into identifying and keep working together, granting the
> > position of gatekeeper to a bunch of middle men. This position is
> > ignorant of the history of the project, especially of its failures;
> > it's insulting of the work of hundreds of people who want to keep
> > this
> > thing working and keep it approachable to newcomers; and completely
> > invalidated by the reality of what happens every day in the
> > commercial
> > space. I also don't understand your opposition to keeping the only
> > integration branch we have, the 'master' branch, building constantly,
> > considering this is a basic engineering practice, but at this point I
> > can barely muster the strength to even care. In any case, as I said
> > to
> > Milan, I'll gladly consider any project you maintain at the same
> > level
> > as an external dependency, and thus just tag it. Feel free to go
> > through the Continuous manifest and Jhbuild moduleset and point out
> > which modules you still maintain.
>
>
> Emmanuele,
>
> Thank you for sharing this. You make the perfect example.
>
> You will note, that my "astronauting" is in fact a sincere attempt to
> reconcile both of these views with some plausible technical approach,
> so while your goals are clearly not the same as mine; I am being
> sensitive to your goals, in fact I want some team within GNOME to be
> successful at integrating all of these projects into some coherent user
> experience - I only want that team to accept that the components they
> intend to integrate have bigger plans than *just* being a part of this
> integrated whole.
>
> You on the other hand seem threatened by my views and consequently act
> intolerant towards the existing diversity of goals of projects within
> GNOME - I don't think this intolerance is an attitude we should have to
> deal with, we should be instead looking for creative ways to reconcile
> both views.
>
> Yes, the GNOME Desktop Environment as a unified thing has never been a
> personal goal for me to work towards, rather the most important to me
> is to build a solid and stable platform with good development tools,
> and I want it to be the platform of choice in the FOSS world - if the
> GNOME Desktop Environment turns out to be the only consumer of the work
> I've done over the years, this will be the biggest failure of all in my
> eyes.
>
> You may have accepted defeat but as long as I spend any energy in GNOME
> at all, I simply can not.
>

Hi,

Tristan, I wonder if I can present a different perspective that might
reconcile these differences.

I'm an active contributor to the gtk-osx module, which is a collection of
scripts and jhbuild modulesets for building (some of) the GNOME stack on
Mac OSX. While I personally believe very much in the goal of the GNOME
desktop as a unified platform, I also put a lot of work into keeping the
the GNOME stack libraries buildable on Mac, so that people can provide
builds of GNOME apps (such as Gedit) on Mac as well as build their own
cross-platform apps using GNOME tools. I think you even reviewed some of my
patches to make Glade buildable on Mac not too long ago.

I hope you'll agree that this is a diverse use of GNOME modules, focused on
consumers outside of the GNOME desktop. Please believe me then when I say
that _nothing_ would make me more happy, in the capacity of gtk-osx
contributor, than a CI system, and with it the ability to assume that the
entire stack is buildable at any given time.

I realize that having a CI system on the proprietary Mac OSX is quite
another controversial step beyond having a CI system in the first place,
but I would be happy just to have commits that break the build on Linux
reverted automatically so that when I trepidatiously type "jhbuild build"
on my Mac and hover over the Enter key thinking "do I really want to commit
to another three evenings of build bugs," I can at least be assured that
any failures are going to be Mac build bugs (fixing which is the reason I
contribute to gtk-osx) and not general build breakage (which I feel I
shouldn't have to spend my limited time dealing with as there are automated
tools, such as CI, for catching this sort of thing!)

I hope to illustrate with this, that a CI system, and stabilit

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-19 Thread Tristan Van Berkom
On Sat, 2016-06-18 at 08:15 +0100, Emmanuele Bassi wrote:
[...]
> Tristan: I understand you don't give a crap about GNOME as a holistic
> project; you've made it *painfully* clear over the years. I'd like to
> point out that without GNOME working as a single unit nothing we do,
> or did up until now, really matters in the grand scheme of things.
> The
> *only* successful thing out of GNOME is the GNOME desktop environment
> and its whole stack of technologies; everything else has been a
> failure, mostly caused by this inane obsession of considering the
> GNOME platform as a bag of loosely coupled projects that somebody has
> to work hard into identifying and keep working together, granting the
> position of gatekeeper to a bunch of middle men. This position is
> ignorant of the history of the project, especially of its failures;
> it's insulting of the work of hundreds of people who want to keep
> this
> thing working and keep it approachable to newcomers; and completely
> invalidated by the reality of what happens every day in the
> commercial
> space. I also don't understand your opposition to keeping the only
> integration branch we have, the 'master' branch, building constantly,
> considering this is a basic engineering practice, but at this point I
> can barely muster the strength to even care. In any case, as I said
> to
> Milan, I'll gladly consider any project you maintain at the same
> level
> as an external dependency, and thus just tag it. Feel free to go
> through the Continuous manifest and Jhbuild moduleset and point out
> which modules you still maintain.


Emmanuele,

Thank you for sharing this. You make the perfect example.

You will note, that my "astronauting" is in fact a sincere attempt to
reconcile both of these views with some plausible technical approach,
so while your goals are clearly not the same as mine; I am being
sensitive to your goals, in fact I want some team within GNOME to be
successful at integrating all of these projects into some coherent user
experience - I only want that team to accept that the components they
intend to integrate have bigger plans than *just* being a part of this
integrated whole.

You on the other hand seem threatened by my views and consequently act
intolerant towards the existing diversity of goals of projects within
GNOME - I don't think this intolerance is an attitude we should have to
deal with, we should be instead looking for creative ways to reconcile
both views.

Yes, the GNOME Desktop Environment as a unified thing has never been a
personal goal for me to work towards, rather the most important to me
is to build a solid and stable platform with good development tools,
and I want it to be the platform of choice in the FOSS world - if the
GNOME Desktop Environment turns out to be the only consumer of the work
I've done over the years, this will be the biggest failure of all in my
eyes.

You may have accepted defeat but as long as I spend any energy in GNOME
at all, I simply can not.

Regards,
    -Tristan

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-18 Thread Sébastien Wilmet
On Sat, Jun 18, 2016 at 08:15:19AM +0100, Emmanuele Bassi wrote:
> So, I want to stop this thread on my side because not only is making
> me not want to contribute anything ever again, but it also is
> absolutely pointless busy work that relies on two people architecture
> astronauting without the minimal intention of building anything or
> even consensus.

Citing myself from several mails ago: "With master/master-stable, it's a
more relaxed atmosphere."
https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg2.html

There is a proposal that is simple to understand: when tagging a module
in GContinuous, this would mirror what jhbuild builds by default. With a
branch. That's it.

Then there are more complicated proposals where everything is fully
automated, delivering a stable desktop continuously to end users. I
didn't talk about it, but it would enable to do canary releasing and A/B
testing.

And there is a gray scale between those two proposals.

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-18 Thread Emmanuele Bassi
So, I want to stop this thread on my side because not only is making
me not want to contribute anything ever again, but it also is
absolutely pointless busy work that relies on two people architecture
astronauting without the minimal intention of building anything or
even consensus.

I consider the matter that started this thread — ensuring that jhbuild
does non-srcdir builds by default — solved, and any talk about
continuous integration in GNOME absolutely moot until somebody comes
up with an actual CI server and tool that is *not* Continuous, and
shows that it works well enough that we can start talking about commit
and integration policies. I also consider the matter of fixing the
Continuous builds solved, in the sense that I'll continue tagging
badly behaving modules and file bugs. That is, obviously, if I can
muster caring about this stuff — something that I keep finding hard to
conjure out of thin air and my limited amount of time, given the
feedback I've received.

Instead of talking about these two matters, let me talk to you about
the only two tools we have at our disposal, and why I (possibly
naively) thought they were important enough to the GNOME project to
raise their continued working state as an important topic.

Let's start with jhbuild. I personally don't care if you're a
long-standing contributor to the GNOME project and you feel like you
don't need to use jhbuild because you either don't give a crap about
your system's state, or because you're competent enough to deal with
it; jhbuild *is* the tool that we provide to newcomers to the project.
It's the major blocker for people that come to use and wish to build
and contribute to GNOME. Since GNOME is a free software project and
contributors are a slowly renewable resource, introducing barriers
like having stuff *not* build is a perfect way to stagnate the
contributors pool, and turn enthusiasts and people willing to
contribute into people that will negatively impact the perception of
GNOME — and with good reason. Our Git repositories, and jhbuild, are
part of our developer outreach. Ensuring that potential new
contributors can follow a simple step tutorial without the build
crapping its pants two thirds into the process is the way we grow our
contributor's base. As much as I wish to retain one existing
maintainer, I'd rather have 10 new contributors every month.

Let's move on to Continuous. As much as it's a build bot, and a
continuous delivery testing mechanism, Continuous is much more, and
much simpler, than that: it's our Minimum Viable Product. It's the
closest thing we have to present to OSVs and OEMs and say: "You can
take this list of modules, with the given commit ids, and build
options; build them; and plop the resulting file system tree into a
product — and we can guarantee you that it'll boot, log in, and give
you the exact same results we seen". You literally have *no* idea how
powerful this is. It allows companies to create a whole operating
system without having to deal with the whims and policies of Linux
distributions. It gives us the ability to QA what we create. It gives
Linux distributions the ability to determine a baseline for their own
packaging, and check if something is a bug they introduced or if it's
upstream. Continuous is GNOME, and GNOME is Continuous.

Both of these things are so important because they demonstrate that
GNOME is bigger than the sum of its parts.

To return to the original topic: Milan, I understand you don't like
any policy imposed on your projects. That's perfectly understandable,
so I will consider Evolution and all its dependent modules as external
dependencies, and treat them as such. I'd even be happy to only build
the stable branches in Continuous, so we can keep the burden at a
minimum, and we'll ensure that GNOME does not use unstable API until
it's been released, but for the time being I'll just keep tagging
stuff — both in Continuous and in Jhbuild.

Tristan: I understand you don't give a crap about GNOME as a holistic
project; you've made it *painfully* clear over the years. I'd like to
point out that without GNOME working as a single unit nothing we do,
or did up until now, really matters in the grand scheme of things. The
*only* successful thing out of GNOME is the GNOME desktop environment
and its whole stack of technologies; everything else has been a
failure, mostly caused by this inane obsession of considering the
GNOME platform as a bag of loosely coupled projects that somebody has
to work hard into identifying and keep working together, granting the
position of gatekeeper to a bunch of middle men. This position is
ignorant of the history of the project, especially of its failures;
it's insulting of the work of hundreds of people who want to keep this
thing working and keep it approachable to newcomers; and completely
invalidated by the reality of what happens every day in the commercial
space. I also don't understand your opposition to keeping the only
integration branch we

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-17 Thread Tristan Van Berkom
First,
  I've been on vacation this week and have been able to put time into
this, with the hope that next week I will be able to focus on $dayjob
without regretting too much not being able to take part in this
important debate. I hope we are going somewhere. Also, in closing in
this mail, I will just highlight my motivations for bringing up this
proposal in the first place.

Sri,
  Please just gloss over the technical stuff and read the end, I think
you are in a position to effect change and this is written with you in
mind (from the "Why do I think..." heading).

On Fri, 2016-06-17 at 15:17 +0200, Milan Crha wrote:
> On Fri, 2016-06-17 at 17:11 +0900, Tristan Van Berkom wrote:
> > 
> > I dont believe you have any such functionality in jhbuild.
> > 
> > At best, you can specify the sha1 of the commit you want to build
> > of
> > a given module, this would not let you single out one commit,
> > omitting it from history in integration and at least attempt to
> > apply
> > subsequent commits without that one included, re-including that
> > commit in the correct place in history only when CI infrastructure
> > would find integration unbroken.
>   Hi,
> I never thought of a single commit removal from a set of commits. To
> be
> honest, that sounds even more crazy (not 'crazy' like 'insane'). :)
> We are talking about master, the development version of the software.
> If you'd like to tell me that you are at commit X and feature which I
> added at commit X-3 does not work for you, then trying to figure out
> why exactly you do not see that feature is a real nightmare and waste
> of time for both the reporter and the developer, especially when you
> want to remove only single commit from a history. Not talking that
> following commit can "build on top of the previous commit", which is
> quite usual.
> 
> > 
> > The thing is, either way; your work flow will not be interrupted at
> > all with this approach, ...
> See above.

Milan,
    I think that if your commit broke integration with the wider GNOME
ecosystem, that will matter to you and you will be quite aware of which
commit in master broke it and why until it is fixed. I think we have to
ensure that people take integration breaking commits seriously and
ultimately, an integration breaking commit would block any stable
release.

That said, in your above scenario; a disparity between master and
integration is a serious issue, but consider the alternative:

If a new comer wants to get involved in GNOME, they probably have a
specific itch to scratch, say with Evolution or EDS; they will either
be able to build everything up to EDS & Evolution easily; have an easy
experience, and be able to submit a patch to bugzilla, or, they will
fail to build and get side tracked because the bleeding edge of master
for all GNOME modules doesn't build.

In other words (and this has absolutely nothing to do with using
jhbuild or not) when you build everything from master and it breaks
before you are even able to work on the issue you wanted to work on,
this is discouraging; this means that we are offloading our technical
debts to newcomers, forcing them to deal with our bugs before being
able to even submit a patch they wanted to contribute.

Would you prefer that a potential EDS contributor be able to submit a
patch to bugzilla, even if it does not match up *exactly* against
master ? Or would you prefer that your potential contributor get
discouraged while trying to build EDS against the latest gcr,
libsecret, libgdata or such, or just get bogged down trying to fix an
EDS bug to adjust to some API churn in a dependent GNOME library ?

I think receiving a patch for what the contributor wanted to work on is
preferable, even if you happen to fall on a patch that doesn't apply
exactly against master, in the 1% of the time that EDS integration is
broken and lagging behind.

[...]
> I said earlier in the thread that the current situation works for me
> the best. There is clearly stated what the continuous builds from, at
> which exact commit it "stopped updating" certain module, because of
> some breakage, and everything references the real master branch. That
> the continuous uses jhbuild might be just a coincidence, even it
> sounds
> like the moduleset is targeted for the Continuous builds, when it can
> influence an environment for any developer using the jhbuild (I do
> not
> use it, this is how I understood how it works in the jhbuild world).

I'll just note again this is not about jhbuild particularly, jhbuild in
master tries to build everything from master, sometimes it breaks and I
think that's natural in the present state of affairs.

gnome-continuous does *not* build jhbuild modulesets, it uses it's own
json format for, also building everything from master:

https://git.gnome.org/browse/gnome-continuous/tree/manifest.json

This is about getting the bleeding edge, or something as close as
possible to the bleeding edge to be always buildable; for two reasons:

  a.) T

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-17 Thread Milan Crha
On Fri, 2016-06-17 at 17:11 +0900, Tristan Van Berkom wrote:
> I dont believe you have any such functionality in jhbuild.
> 
> At best, you can specify the sha1 of the commit you want to build of
> a given module, this would not let you single out one commit,
> omitting it from history in integration and at least attempt to apply
> subsequent commits without that one included, re-including that
> commit in the correct place in history only when CI infrastructure
> would find integration unbroken.

Hi,
I never thought of a single commit removal from a set of commits. To be
honest, that sounds even more crazy (not 'crazy' like 'insane'). :)
We are talking about master, the development version of the software.
If you'd like to tell me that you are at commit X and feature which I
added at commit X-3 does not work for you, then trying to figure out
why exactly you do not see that feature is a real nightmare and waste
of time for both the reporter and the developer, especially when you
want to remove only single commit from a history. Not talking that
following commit can "build on top of the previous commit", which is
quite usual.

> The thing is, either way; your work flow will not be interrupted at
> all with this approach, ...

See above.

> I realize my answer is quickly written and I would like to keep my
> mind open and receptive, but I would also like to hear a more
> detailed counter proposal on your end too, weighing the benefits of
> managing this in a jhbuild moduleset vs a unified project wide git
> branch

I didn't think of my workflow changes in any deep way, also because I
do not use jhbuild (that's not a tool for me). I just want to keep
things simple as much as possible. Not only for me, but for the others
too. Adding a new branch adds some non-trivial complexity.

Consider the early adopters, whom will fill bugs against the developer
version of some module. The developer will not only ask "what steps to
do to reproduce the issue", but also "which branch was used and with
what commits". And it happens often that the developers do not react on
bugs "quickly", thus the commit numbers in the integration branch can
be easily lost (branch rebuilt), thus making the bug report more or
less useless.

I said earlier in the thread that the current situation works for me
the best. There is clearly stated what the continuous builds from, at
which exact commit it "stopped updating" certain module, because of
some breakage, and everything references the real master branch. That
the continuous uses jhbuild might be just a coincidence, even it sounds
like the moduleset is targeted for the Continuous builds, when it can
influence an environment for any developer using the jhbuild (I do not
use it, this is how I understood how it works in the jhbuild world).

I do not care about the new branch, if you (plural 'you') will decide
to use it, then I've nothing significant against. I only think it'll
add too much confusion for the developers, that it'll strike back in
some way in the future. I only do not like the idea of random reverts,
the master branch is the pure bleeding edge, thus if the automatically
managed branch is a way to go for you (plural 'you'), to avoid those
reverts, then feel free to do it.

Maybe, only, it would be ideal if the new branch won't influence daily
`git pull` on the projects, due to bandwidth limitation, connection
speed and similar constraints. That would, maybe, better fit to create
a new project for the automatic builds, with the "interesting" git
sub-modules there at certain commits. There might not be much
difference between the new project with submodules and 10K branches in
each module, right? Your new tool would still work on the git commits.
That's still too complex, too limiting for a daily work on the master
(not for me, but for jhbuild users to whom some modules will
automatically stop updating at certain commit which can break other
modules, like with the API changes, but the developer of the affected
module might not ever notice, because he/she will stay at the commit
which precedes the API change).

There had been said in this thread already that having a continuous
integration (automatic builds) is not easy, especially for such a large
project like GNOME. Whenever a "Continuous" was said in this thread a
shortly after followed "jhbuild". It's understood. The jhbuild is the
current tool for the automatic builds. Supporting random automatic
build systems, which is what you said could be done with the
'integration' branches, is not needed from my point of view, due to the
GNOME project complexity. Thus target jhbuild only. Using modulesets
(it's called like that, right?) for jhbuild and writing an
export/import utility to transform the jhbuild's moduleset into another
automated build integration could be also doable, hypothetically
speaking. If any such thing would be needed in the future. That is,
let's target jhbuild first. The jhbuild already has a functionality 

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-17 Thread Tristan Van Berkom
On Fri, 2016-06-17 at 07:55 +0200, Milan Crha wrote:
> On Thu, 2016-06-16 at 14:16 +0900, Tristan Van Berkom wrote:
> > 
> >   o The integration branch of every module is continuously
> > reconstructed based on that module's master branch.
>   Hi,
> as the 'integration' branch targets only jhbuild, then it doesn't
> make
> sense to add it at each git module, no?

I dont think it targets only jhbuild, but jhbuild is an obvious
plausible consumer of it - rather it is the stomping grounds for
automated CI to be developed and the reference point for automatically
filing bugs against modules for broken commits; jhbuild is the consumer
of this which eases workflow for new comers.

>  Thinking of it, instead of
> playing with a jhbuild only, you propose to add one more layer (and
> place of possible issues) between the git master <-> jhbuild
> connection. The proposal, as I understand it, is:
>   git master <-> git integration <-> jhbuild
> where the git integration can be sometimes skipped in the jhbuild.
> But
> as you already have a functionality to skip some commits inside the
> jhbuild,

I dont believe you have any such functionality in jhbuild.

At best, you can specify the sha1 of the commit you want to build of a
given module, this would not let you single out one commit, omitting it
from history in integration and at least attempt to apply subsequent
commits without that one included, re-including that commit in the
correct place in history only when CI infrastructure would find
integration unbroken.

>  and the integration branch is meant to do exactly that, then
> why to have one software which would eat only space on a disk

I think disk space is really not a concern here, integration branches
would be rebuilt, they should not be accumulative, in the usual case
where no commits need to be omitted; the ref is just a ref to master.

If disk space is an issue somehow (because git will normally keep
history even when branches are re-written, the old sha1's still exist),
a mirror could also be an option, but I think branches are better.

>  in each
> git module with a new branch history, instead of writing the
> automated
> build tool which would cooperate directly with the jhbuild setup? You
> also want to add some restrictions on the git integration branch,
> which
> is even more unnecessary work.

Honestly, I see where you are going, but I tend to disagree; managing
this sort of thing in a jhbuild xml file, who's state needs to be
managed ideally by a cooperation of gnome-continuous build bots
(probably multiple in tandum to test on all supported arches) sounds
like a lot of work, not to mention it does not allow for singling out
commits, it can only block integration on the first integration
breaking commit.

> Not having the branch will make things easier for the developers and
> new comers too, as there will be no confusion for them. Having
> somewhere a super-detailed description of the integration branch
> intention is nice, but it'll be easy to forget of it during the time.

The thing is, either way; your work flow will not be interrupted at all
with this approach, it offers greater flexibility for CI systems to be
improved on looking forward and IMO actually seems less complex in a
first implementation than trying to manage this all in a single jhbuild
moduleset.

I realize my answer is quickly written and I would like to keep my mind
open and receptive, but I would also like to hear a more detailed
counter proposal on your end too, weighing the benefits of managing
this in a jhbuild moduleset vs a unified project wide git branch, how
much work it would really take and how this alternative route would
impact our workflow; for instance the first thing I can see is that I
would have to regularly refresh my integration modulesets if I wanted
to have a working build - while making jhbuild simply target
integration by default would not involve this extra step to confuse new
comers either.

This is not a super detailed proposal, but lets start with a base
minimum of at least trying to cover all the bases.

Best,
    -Tristan

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-16 Thread Milan Crha
On Thu, 2016-06-16 at 14:16 +0900, Tristan Van Berkom wrote:
>   o The integration branch of every module is continuously
> reconstructed based on that module's master branch.

Hi,
as the 'integration' branch targets only jhbuild, then it doesn't make
sense to add it at each git module, no? Thinking of it, instead of
playing with a jhbuild only, you propose to add one more layer (and
place of possible issues) between the git master <-> jhbuild
connection. The proposal, as I understand it, is:
  git master <-> git integration <-> jhbuild
where the git integration can be sometimes skipped in the jhbuild. But
as you already have a functionality to skip some commits inside the
jhbuild, and the integration branch is meant to do exactly that, then
why to have one software which would eat only space on a disk in each
git module with a new branch history, instead of writing the automated
build tool which would cooperate directly with the jhbuild setup? You
also want to add some restrictions on the git integration branch, which
is even more unnecessary work.

Not having the branch will make things easier for the developers and
new comers too, as there will be no confusion for them. Having
somewhere a super-detailed description of the integration branch
intention is nice, but it'll be easy to forget of it during the time.
Bye,
Milan
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-15 Thread Tristan Van Berkom
On Wed, 2016-06-15 at 17:49 +, Sriram Ramkrishna wrote:
[...]
> I think with a couple of iteration we can work out an agreement.  :)

Hi Sri,

I can see you read through this diagonally, so I'll try a TL;DR version
below...

> So to wit, let me summarize your points:
> 
> * Master is unstable and can be in unbuildable state until we apply a
> tag making it stable.

Basically what it is today, mostly always buildable modulo transitional
periods in times of API churn, and modulo some mistakes which may take
time to fix for maintainers in different timezones with dayjobs.

> * We have a 'integration' branch or something like that which is
> always in buildable state but lags behind master by some undetermined
> number of commits.

The integration branch as proposed does not lag behind except by
commits which break integration, in all other respects it is always
exactly master.

> I'm a little unclear what a maintainer's workflow is, and how can we
> ascertain that they push to this integration branch when there is no
> social policy in place to do so.  I mean some maintainers can
> completely ignore that if they wanted to.

Nobody ever pushes to 'integration' (at least not developers and
maintainers), and this is why I want some strict git hooks in place to
ensure that any pushes to the integration branch are immediately
rejected ('git push origin integration' shows you an error).

TL;DR version is basically:

  o Yes, this is going to take some actual work to implement, technical
work, but not an astronomical amount, maybe a few weeks.

  o The integration branch of every module is continuously
reconstructed based on that module's master branch.

This must be an automated process, which runs perhaps every 10 min
or so, updating integration branches of all modules whenever new
commits are available on master.

At first it wont be completely automated, it will require some
human intervention to assist in maintaining the blacklist of
broken commits (we have a problem to solve which is deciding
which commits to blacklist in the cases of API churn).

Ideally though, the buildbots should be able to reconstruct
integration by performing many variants and deciding on the
blacklist with least changes omitted.

  o Notifications are delivered, perhaps bugs filed, against commits
in master which dont integrate properly into 'integration'

No need for a grace period, when your commit to master breaks
integration, it is omitted from integration and you get a bug
report.

  o Default for jhbuild is 'integration' of everything, which is
    almost always buildable (in fact it could be made to be literally
    always buildable with a bit more effort, assuming some tries
    are performed by the build bots before constructing the integration
    branches).

    In terms of workflow this would mean people would always work
    against the integration branch, except that developers/maintainers
    of a given specific module would checkout a few modules as master.

    Commits only ever enter the history via regular master or stable
    branches.


Basic gist of the idea is like this.

Cheers,
-Tristan

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: [ Revised Proposal ] Continuous Builds in GNOME

2016-06-15 Thread Sriram Ramkrishna
On Tue, Jun 7, 2016 at 9:45 PM Tristan Van Berkom 
wrote:

> On Tue, 2016-06-07 at 22:24 +0200, Sébastien Wilmet wrote:
> [...]
> > > This of course, requires real thought and engineering, but I wanted
> > > to
> > > at least offer some technical input, some starting point that could
> > > be
> > > explored - this wont be solved without real engineering, trial and
> > > error.
> > It's similar to the "master/master-stable-next/master-stable"
> > branches
> > concept that I thought about in this previous sub-thread. See those
> > two
> > mails:
> > https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg2
> > .html
> > https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg8
> > .html
> >
> > It doesn't look like rocket science to me, and it would get us closer
> > to
> > continuous delivery.
>
> Honestly I hadn't put a huge amount of thought to this, but I did
> figure in that once there is API churn, there will be multiple
> variations/combinations that are desirable to build - one might want to
> build a certain app which has not yet adapted to an API change, in
> which case they need an amalgamation of branches which gets them their
> app building without the API change in a lower level library/service.
> On the other hand someone who wants bleeding edge of the given
> library/service will want it with the API change included... but I
> admit these considerations are possibly not worthwhile for our basic
> goals: improve CI for development cycles and help have a more friendly
> starting point for onboarding newcomers.
>
> I also woke up this morning to an interesting conversation on #gnome-
> hackers, which I missed due to timezone skew, but made me think of
> something cheaper also more inline with what you suggest with master-
> stable, master-stable-next etc.
>
> So here it goes, after reading the interesting conversation I think
> that we are close to something that is a step forward which will not
> cost very much at all, I think that the main point we disagree on is
> reverts in *master*, and the idea that *master* is something that can
> be forced to be always stable.
>

I think with a couple of iteration we can work out an agreement.  :)

So to wit, let me summarize your points:

* Master is unstable and can be in unbuildable state until we apply a tag
making it stable.
* We have a 'integration' branch or something like that which is always in
buildable state but lags behind master by some undetermined number of
commits.

I'm a little unclear what a maintainer's workflow is, and how can we
ascertain that they push to this integration branch when there is no social
policy in place to do so.  I mean some maintainers can completely ignore
that if they wanted to.

I think in general we still need to figure out how to socially have
compliance as I can envision some maintainers not wanting extra work for
sake of argument.

 [snip]


> Any thoughts ?
>
>
Thanks for taking the time to putting your thoughts and contributing
positively to this discussion and making suggestion, well appreciated by
the rest of us.  I don't think we have gotten any feedback on this and I'm
bumping this again to see if people can look at Tristan's proposal as
something workable and acceptable as a base of a conversation around doing
this.

sri
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

[ Revised Proposal ] Continuous Builds in GNOME

2016-06-07 Thread Tristan Van Berkom
On Tue, 2016-06-07 at 22:24 +0200, Sébastien Wilmet wrote:
[...]
> > This of course, requires real thought and engineering, but I wanted
> > to
> > at least offer some technical input, some starting point that could
> > be
> > explored - this wont be solved without real engineering, trial and
> > error.
> It's similar to the "master/master-stable-next/master-stable"
> branches
> concept that I thought about in this previous sub-thread. See those
> two
> mails:
> https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg2
> .html
> https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg8
> .html
> 
> It doesn't look like rocket science to me, and it would get us closer
> to
> continuous delivery.

Honestly I hadn't put a huge amount of thought to this, but I did
figure in that once there is API churn, there will be multiple
variations/combinations that are desirable to build - one might want to
build a certain app which has not yet adapted to an API change, in
which case they need an amalgamation of branches which gets them their
app building without the API change in a lower level library/service.
On the other hand someone who wants bleeding edge of the given
library/service will want it with the API change included... but I
admit these considerations are possibly not worthwhile for our basic
goals: improve CI for development cycles and help have a more friendly
starting point for onboarding newcomers.

I also woke up this morning to an interesting conversation on #gnome-
hackers, which I missed due to timezone skew, but made me think of
something cheaper also more inline with what you suggest with master-
stable, master-stable-next etc.

So here it goes, after reading the interesting conversation I think
that we are close to something that is a step forward which will not
cost very much at all, I think that the main point we disagree on is
reverts in *master*, and the idea that *master* is something that can
be forced to be always stable.

For some of us, Milan and I at least, I think we disagree most
particularly on dirtying master, this creates work especially if we
have to pick up the pieces after some API change or such, and it
dirties the mainline development history which is a bad thing in
general, it makes bisections dirty and history tracking dirty, we've
come to have some discipline over the years to even avoid any
whitespace in commits because we value the history that much, we want
to know that every commit in mainline is relevant.

Simply put, if master is broken, it needs to be fixed the correct way,
and a maintainer has never advertised master as being stable until we
tag it as stable, we want to keep this.

So what I thought up after reading that IRC conversation, is that there
is no reason at all why all of this has to be done in master, and no
justification to want this behavior on master either - we just want to
be able to provide a closest-to-master as possible build that always
builds, and we want that to be the "easy way" that we advertise to
newcomers - more mature developers when they grow up might want to
build master anyway and see the actual breakages in real time.

Sorry I dont have time to spend hours reducing this huge text and being
all concise, but I want to contribute to this, so here goes:

Cheap proposal for a build-bot/release-team/build-sherif owned
integration branch
~~
So what I would propose here is a setup with some automation, similar
to the proposed master-stable but I would call it 'integration' and
with a few changes.

Starting with our current workflow, all our projects/modules use the
master branch as mainline development, feature branches are merged into
master and eventually come release time, master is tagged and branched
as stable and we release tarballs for each release tag.

 [ feature ]   |
 \ |
  \
  [ master ]
   |
   |
   [ release tag ]
\
   |  \
 [ feature ]   |\
           \   |  \
            \  |\
             \ |  [ release branch ]
  \|   |
   |   |
   [ bugfix ] ---> |
   |   |
   |  [ bugfix release ]

I dont think the above should change at all; patch flow for production
continues to flow in this traditional way that we have come to work
with very well. Master remains mainline.

What I would suggest, in addition to our setup, is that there is
a new 'integration' branch for every module in the moduleset, this
integration branch is automatically managed.

Workflow for contributors can look more like this:
[ integration ]   [ master ] [ bugzilla patches ]
   |   |/
   |   |  /  patches possibly
   |   |/made against
   |   |  /  int

Re: Continuous Builds in GNOME

2016-06-07 Thread Sébastien Wilmet
On Tue, Jun 07, 2016 at 07:34:42AM +0200, Milan Crha wrote:
> > > There is a solution: bump the major version of Camel or EDS each time an
> > > API or ABI break is unavoidable, making the new major version
> > > parallel-installable with the previous ones. And that, every 6 months if
> > > needed (or one year if the development cycle is longer for the
> > > Evolution-related projects).
> 
> there is no need to give me pointers to things and practices which are
> already used in the project. It can be useful for some other projects,
> for some maintainers following this thread, thought.
> 
> I mean, that's exactly what we do (unless accidentally overlooked). If
> the API/ABI changes, a soname version is bumped for that respective
> part, at least once between releases (I just did a soname version bump
> of Camel for 3.21.3 in one commit, then I did another change in the
> Camel API in another commit, but I didn't bump the soname version,
> because that all will be available for the early adopters in one single
> release, 3.21.3).

What I meant is that for the Camel library, incompatible versions should
be parallel-installable, like GTK+ 2 and GTK+ 3. That way, some modules
could still depend on the previous major version of Camel, and you can
port the modules that you want to the new major version of Camel, one at
a time if you want. From a quick glance at the evolution-data-server
repo, this isn't done.

The difference would be that all modules still build and work fine.

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-07 Thread Sébastien Wilmet
On Tue, Jun 07, 2016 at 05:24:21PM +0900, Tristan Van Berkom wrote:
> One approach might be a setup where we have an RC branch opened for
> integration of changes from master at the beginning of each cycle -
> this could be a sort of "soft master" that builds but might not be
> bleeding edge in every way, it could benefit new comers as they could
> still submit patches against the RC branch and it should at least
> successfully build all projects from scratch. Also it could benefit the
> release team inasmuch as we could have constant awareness of exactly
> how much of the bleeding edge currently integrates at a given time.
> 
> I strongly disagree with holding project maintainers responsible for
> creating feature branches and burdening them with the duty of updating
> other modules not under their control, especially for reasons already
> outlined in [0], however perhaps a uniform 'integration' CI branch
> could be automated to a certain extent, as gnome-continuous currently
> blacklists not-building modules, it could instead be made to guess what
> changes break a build and recreate the integration branch without the
> said failing patch, performing tries with merges from master until
> something builds and integration can again include the new changes.
> 
> This of course, requires real thought and engineering, but I wanted to
> at least offer some technical input, some starting point that could be
> explored - this wont be solved without real engineering, trial and
> error.

It's similar to the "master/master-stable-next/master-stable" branches
concept that I thought about in this previous sub-thread. See those two
mails:
https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg2.html
https://mail.gnome.org/archives/desktop-devel-list/2016-June/msg8.html

It doesn't look like rocket science to me, and it would get us closer to
continuous delivery.

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-07 Thread Tristan Van Berkom
On Fri, 2016-06-03 at 01:53 +, Sriram Ramkrishna wrote:
> I found this discussion really fascinating and so I wanted to
> continue it, separately from Emmanuele's thread so that issue is
> resolved without bifurcating the discussion.
> 
> My thoughts are that we really shouldn't be looking at something and
> say 'well, we can't do it we don't have the resources' especially
> when there is a clear return on investment.  I think this would be an
> interesting challenge and we should find a way to figure out how we
> can attract the talent, machines and money to do this.  After all, we
> have a foundation dedicated to supporting the development of GNOME.

Hi Sri,

I am not happy with how the previous discussion evolved. I think I
raised some technically valid points and historical insight, e.g. [0]
and [1] and I get the impression that those who are pushing this agenda
are not willing to digest the facts and converse constructively, but
lets re-examine this.

I am certainly not against continuous integration, but I think we need
to recognize first that we are in an extremely different position from
companies, organizations and projects which perform CI successfully -
this is not a solved problem that we can simply apply to GNOME as a
wider umbrella of various interconnected projects.

CI works very well where development is done in silo, all developers
are instantly reachable or replaceable, and all components are designed
to work in harmony for a very singular purpose. None of these
ingredients are present in the wider GNOME project.

So how can we improve things ? What technical approach can we take to
better leverage CI for the purpose of furthering the collective goals
of projects in GNOME ? Before we can even answer that question, we have
to ask also, what are the goals we want to achieve with CI, what do we
want to improve ?

I think this falls under 2 distinct categories:

  A.) Finding actual bugs and integration breakages early enough in the
      cycle to have a stable build come release time.

  B.) Making it easier for new comers to build and contribute to
      projects in GNOME.

I think first, we need to dispel the belief that the bleeding edge of
every module is going to build at all times - especially to new comers
who have the idea that they can build all of GNOME and it just doesn't
pan out, they get a bad experience because we advertise jhbuild of
master as something that should just work. We need to be more honest
here.

What we have currently with gnome-continous is already helpful for (A),
but can be improved. For (B) we don't have a solution right now, but
there may be some technical approaches to help solve (B).

One approach might be a setup where we have an RC branch opened for
integration of changes from master at the beginning of each cycle -
this could be a sort of "soft master" that builds but might not be
bleeding edge in every way, it could benefit new comers as they could
still submit patches against the RC branch and it should at least
successfully build all projects from scratch. Also it could benefit the
release team inasmuch as we could have constant awareness of exactly
how much of the bleeding edge currently integrates at a given time.

I strongly disagree with holding project maintainers responsible for
creating feature branches and burdening them with the duty of updating
other modules not under their control, especially for reasons already
outlined in [0], however perhaps a uniform 'integration' CI branch
could be automated to a certain extent, as gnome-continuous currently
blacklists not-building modules, it could instead be made to guess what
changes break a build and recreate the integration branch without the
said failing patch, performing tries with merges from master until
something builds and integration can again include the new changes.

This of course, requires real thought and engineering, but I wanted to
at least offer some technical input, some starting point that could be
explored - this wont be solved without real engineering, trial and
error.


One line of thinking I think we really need to distance ourselves from,
is the idea that the "social problem" of projects in GNOME is one that
needs itself to be fixed. Yes it is a problem, but rather a riddle or
puzzle to be solved. Lets embrace the community as it is and find a
technical solution that works *for* the community, not try to teach the
community that their goals should be more in line with what some
particular participants think.

I say this, because I sense there is some impatience coming from
participants who seem to hold the belief that a uniform and beautiful
desktop experience is the singular goal of all projects participating
in GNOME, while on the other hand, projects who have been solving real
problems and are targeting a much wider audience than just this suffer.
The result is that we begin to alienate smart and diligent developers
who have been long standing dedicated contributors, 

Re: Continuous Builds in GNOME

2016-06-06 Thread Milan Crha
On Mon, 2016-06-06 at 20:32 +, Sriram Ramkrishna wrote:
> I think that is the point of the try server, right?  You push it to
> the try server and make sure that it builds correctly for everyone...

Hi,
if you mean that "jhbuild" is a synonym for "everyone", then you surely
didn't open [1], to which I gave a link to earlier. There jhbuild
succeeded, my local build succeeded, Fedora build succeeded, still
there was an environment where it failed. And it failed properly, I'd
say.

Your idea of the "try server" makes me think of the way WebKit has it
done. You attach a patch to their bugzilla, set some flags and a bot
runs some testing and builds in various environments with that patch
applied. All automated. Anything like that can work for smaller
patches, but once you think of the bigger changes, like the
aforementioned Camel API change [2], you get into a very different
world.

> A lack of diligence on your part for instance costs time and
> headache somewhere else.

Right, I agree, there will be always someone unhappy. The question of
this thread, and the whole idea of the reverts, is who that will be.

> Nope and Emmanuele does stipulate that we need someone to monitor the
> build and act accordingly.  However, the rest of you have an
> obligation when that person nags you about it to respond in a timely
> manner.

I hope it was understood from my mail that I am not part of that "the
rest of you" group. What you said makes me feel that you think that
everyone else is "a bad guy". That's really not true.
 
The "timely manner" is the keyword too. Sometimes it takes time before
the maintainer notices that the Continuous broke. Consider different
timezones, weekends, public holidays in different countries and so on.
Everything matters when it comes to "timely manner".

I know, this thread is also about addressing just this in some not so
cruel way to anyone.

> I think we all agree that there should be change, we just need to
> agree what is the minimal set of things we can accomplish today and
> then iterate there.  We just need to establish a place where we can
> at least start on a path and break current status quo.

I'm sorry, but the current state works for me. Of course, I do not work
on the Continuous, I have no idea how much time and headache it costs
to keep it working with so many involved projects. Thus my point of
view is not objective, it's rather subjective.

> In general, I really don't like the idea that we're all a set of
> fiefdoms with no influence on each other.

Some projects are core parts, where others can use them. Some are on
"leafs", final applications, which cannot be reused (in a library
sense) by others. Those are very different types of projects. As had
been said in this thread, Continuous doesn't build each hosted project
in the GNOME infrastructure.
Bye,
Milan

> > [1] https://bugzilla.gnome.org/show_bug.cgi?id=766540
> > [2] https://bugzilla.gnome.org/show_bug.cgi?id=764065

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-06 Thread Milan Crha
On Mon, 2016-06-06 at 22:21 +0200, Sébastien Wilmet wrote:
> On Mon, Jun 06, 2016 at 10:10:58PM +0200, Sébastien Wilmet wrote:
> > 
> > There is a solution: bump the major version of Camel or EDS each time an
> > API or ABI break is unavoidable, making the new major version
> > parallel-installable with the previous ones. And that, every 6 months if
> > needed (or one year if the development cycle is longer for the
> > Evolution-related projects).

Hi,
there is no need to give me pointers to things and practices which are
already used in the project. It can be useful for some other projects,
for some maintainers following this thread, thought.

I mean, that's exactly what we do (unless accidentally overlooked). If
the API/ABI changes, a soname version is bumped for that respective
part, at least once between releases (I just did a soname version bump
of Camel for 3.21.3 in one commit, then I did another change in the
Camel API in another commit, but I didn't bump the soname version,
because that all will be available for the early adopters in one single
release, 3.21.3).

> Mmh maybe it's not possible for EDS, since it's a daemon (or contains
> a daemon) and thus only one instance can run on a system. I don't
> know much about how EDS, Camel etc are designed.

The Camel is a library, which happens to be part of the evolution-data-
server. The evolution-data-server consist also of some D-Bus services,
which allow clients to connect to them and have address books and
calendars, tasks, memos. The Camel library is used for Mail and it
doesn't provide any such D-Bus service as of today. The D-Bus services
are also versioned, thus, if needed, the version can be bumped.

Nonetheless, the evolution-data-server doesn't support parallel builds
into the same prefix, neither the evolution.

We diverged from the initial thread topic a bit here, I'm afraid.
Bye,
Milan

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-06 Thread Christian Hergert
On 06/06/2016 01:35 PM, Sriram Ramkrishna wrote:
> I would think the docs team would be also interested.  I wonder if we
> could create coverage maps using this..

Generally the docs team doesn't write API documentation, but I certainly
wouldn't turn anyone away that wants to write API docs for me.

-- Christian

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Sriram Ramkrishna
On Mon, Jun 6, 2016 at 1:03 PM Christian Hergert 
wrote:

> On 06/06/2016 12:48 PM, Michael Catanzaro wrote:
> > I agree with you that when landing a big API change, if you don't want
> > to use side branches, then a revert is less preferable to tagging in
> > Continuous and branching in jhbuild. (In such cases, it'd be great if
> > you could handle that before pushing the API change, though. :)
>
> A couple weeks ago I wrote a quick hack to parse Continuous build logs
> and extract CFLAGS for the built files. It can use this to then go
> perform static analysis on the module with clang and extract/resolve all
> function calls.
>

This is pretty cool!


>
> The goal was to be able to tell us which API are used the most (and
> therefore requires our attention to documentation), but we could also
> use it to tell developers everywhere in g.g.o that their API is being used.
>
>
I would think the docs team would be also interested.  I wonder if we could
create coverage maps using this..


> I expect to build this out as I work more on documentation stuff for
> Builder.
>

Excellent!

sri


>
> -- Christian
>
> ___
> desktop-devel-list mailing list
> desktop-devel-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/desktop-devel-list
>
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-06 Thread Sriram Ramkrishna
Hi Milan!

On Mon, Jun 6, 2016 at 10:05 AM Milan Crha  wrote:

> On Mon, 2016-06-06 at 09:49 -0500, Michael Catanzaro wrote:
> > A revert is not supposed to be "punishment" in any way... rather,
> > consider it as assistance to make sure GNOME stays buildable. :)
>
> Hi,
> maybe it's not supposed to be, but it is in my eyes. I try my best to
> not break builds, I'm grateful when other folks let me know when the
> builds are broken for them. Neither jhbuild catches everything [1],
> which you seem to suggest. I broke build in general, not only in the
> jhbuild, in the not so distant past, which was a shame and it was all
> my fault. I'm sorry for that, though in that particular case the change
> on the evolution-data-server side was correct, only the evolution build
> broke, because it wasn't updated appropriately. The revert on the eds
> side would not make any sense. It was correct, as I said. (API changed
> in some way and I didn't realize that the evolution uses the API in a
> way which breaks it. Just my fault.)
>

I think that is the point of the try server, right?  You push it to the try
server and make sure that it builds correctly for everyone and then you'll
know whether something is broken or not before it get committed to master.

Perhaps, reverting might seem like over kill, but I think we need to have a
social contract to at least use the try server and make sure that it builds
there before pushing it to master.  After all, we all committed to a six
month release cycle and this doesn't add too much additional overhead, and
helps enables development across the stack without anybody getting stuck.
A lack of diligence on your part for instance costs time and headache
somewhere else.  Just another perspective on the issue.


> I do not fully understand why reverting in some random project (and
> making sort of hostile environment) is easier than the current state,
> when the same person "tags" what commit is supposed to be used in
> Continuous in the jhbuild. You still need the person, the person cannot
> be a monkey, it will think before doing anything (I mean, it's not a
> mechanical job where one rule fits each case).
>

Nope and Emmanuele does stipulate that we need someone to monitor the build
and act accordingly.  However, the rest of you have an obligation when that
person nags you about it to respond in a timely manner.


>
> I appreciate how Emmanuele and others (are there any others?) handle
> the situation right now. I do not want to add them more work, really
> not.
>

I think we all agree that there should be change, we just need to agree
what is the minimal set of things we can accomplish today and then iterate
there.  We just need to establish a place where we can at least start on a
path and break current status quo.


>
> Right, it's unrealistic in some cases to land all of that at one time.
> Side branches is a nice idea, but it won't work, because you do not
> have any influence on the other project maintainers usually, thus even
> a bugzilla requests can lurk there for a long time. Having a side
> branch only means that the maintainers whom do not follow particular
> mailing list will notice only later, rather than sooner.
>

Well that's when we ask the release team for help.  They are in my opinion
currently under utilized for this kind of thing.

In general, I really don't like the idea that we're all a set of fiefdoms
with no influence on each other.  We all here to move this platform
forward.  We should all be making sure that we support each other, because
that support helps GNOME and moves our purpose forward.  This shouldn't be
about my little piece of soil with the myopic view that this is all I care
about unless you are a contributor to the module.  If I come to you with a
build breakage issue then I expect a return courtesy because my request
comes with the intent that we want to improve things.


>
> There is a bug to make more structures in Camel GObject based [2], to
> be able to introspect it in a much easier way and so on. That change
> will not be only a simple API change, it'll break core Camel things,
> everything what uses it. If you open the [2], then I listed affected
> projects at the end of the comment #5. It counts 18 projects. Maybe
> there are more. I do not think I'd be able to coordinate the change in
> a side branch for all of them, I (we) will surely provide patches in
> the bugzilla around the time of the change landing, then it'll be up to
> the respective maintainers to pick or reject them. What will the
> Continuous do during this "broken period" is something I do not know. I
> only know that the change will be for good. Introspection support for
> the Mail part is good, I believe. Trying to revert such change in the
> eds would hurt very much, no doubt.
>

I would say that is a matter of negotiation.  If we are tolerating a full
break in the builds, then be it.  You schedule that time, and then give
people a chance to test the patches 

Re: Continuous Builds in GNOME

2016-06-06 Thread Sébastien Wilmet
On Mon, Jun 06, 2016 at 10:10:58PM +0200, Sébastien Wilmet wrote:
> There is a solution: bump the major version of Camel or EDS each time an
> API or ABI break is unavoidable, making the new major version
> parallel-installable with the previous ones. And that, every 6 months if
> needed (or one year if the development cycle is longer for the
> Evolution-related projects).

Mmh maybe it's not possible for EDS, since it's a daemon (or contains a
daemon) and thus only one instance can run on a system. I don't know
much about how EDS, Camel etc are designed.

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Sébastien Wilmet
On Mon, Jun 06, 2016 at 07:05:49PM +0200, Milan Crha wrote:
> There is a bug to make more structures in Camel GObject based [2], to
> be able to introspect it in a much easier way and so on. That change
> will not be only a simple API change, it'll break core Camel things,
> everything what uses it. If you open the [2], then I listed affected
> projects at the end of the comment #5. It counts 18 projects. Maybe
> there are more. I do not think I'd be able to coordinate the change in
> a side branch for all of them, I (we) will surely provide patches in
> the bugzilla around the time of the change landing, then it'll be up to
> the respective maintainers to pick or reject them. What will the
> Continuous do during this "broken period" is something I do not know. I
> only know that the change will be for good. Introspection support for
> the Mail part is good, I believe. Trying to revert such change in the
> eds would hurt very much, no doubt.

There is a solution: bump the major version of Camel or EDS each time an
API or ABI break is unavoidable, making the new major version
parallel-installable with the previous ones. And that, every 6 months if
needed (or one year if the development cycle is longer for the
Evolution-related projects).

Distros might not like that, but packagers should be encouraged to drop
old major versions if it is no longer used by any package.

(As a more practical matter, instead of hardcoding the API/major version
a bit everywhere in the build system, see how it is done at:
https://developer.gnome.org/programming-guidelines/stable/parallel-installability.html.en
with @LIBRARY_API_VERSION@ in the Makefile.am etc. That way the API
version can be bumped easily).

One of the initial goals of developing a shared library is to reduce
memory consumption. But with systems like Flatpak, that goal is fading
away: there will be a new GNOME runtime version every 6 months. And with
today's computers, is it more important to save, say, 100MB of memory,
or to fluidize the development and ease big refactorings?

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Christian Hergert
On 06/06/2016 01:02 PM, Christian Hergert wrote:
> A couple weeks ago I wrote a quick hack to parse Continuous build logs
> and extract CFLAGS for the built files. It can use this to then go
> perform static analysis on the module with clang and extract/resolve all
> function calls.

And the missing link: https://github.com/chergert/sightline



___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Christian Hergert
On 06/06/2016 12:48 PM, Michael Catanzaro wrote:
> I agree with you that when landing a big API change, if you don't want
> to use side branches, then a revert is less preferable to tagging in
> Continuous and branching in jhbuild. (In such cases, it'd be great if
> you could handle that before pushing the API change, though. :)

A couple weeks ago I wrote a quick hack to parse Continuous build logs
and extract CFLAGS for the built files. It can use this to then go
perform static analysis on the module with clang and extract/resolve all
function calls.

The goal was to be able to tell us which API are used the most (and
therefore requires our attention to documentation), but we could also
use it to tell developers everywhere in g.g.o that their API is being used.

I expect to build this out as I work more on documentation stuff for
Builder.

-- Christian

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Michael Catanzaro
On Mon, 2016-06-06 at 19:05 +0200, Milan Crha wrote:
> Right, it's unrealistic in some cases to land all of that at one
> time.
> Side branches is a nice idea, but it won't work, because you do not
> have any influence on the other project maintainers usually, thus
> even
> a bugzilla requests can lurk there for a long time. Having a side
> branch only means that the maintainers whom do not follow particular
> mailing list will notice only later, rather than sooner.

Hi,

If you have a patch that e.g. adapts another module to your API change,
but the relevant maintainers are not responsive on Bugzilla, you should
feel free to just push ahead with your changes. If you're not
comfortable pushing to other modules, you can contact the release team
and we'll push your work for you. We understand this happens sometimes;
everyone's busy, but nobody wants your work to get blocked in such
cases. (I remember recently we had this issue with e-d-s and
california, although california is neither in jhbuild nor continuous,
so we're not going to nag you if it breaks.)

I agree with you that when landing a big API change, if you don't want
to use side branches, then a revert is less preferable to tagging in
Continuous and branching in jhbuild. (In such cases, it'd be great if
you could handle that before pushing the API change, though. :)

Michael
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Milan Crha
On Mon, 2016-06-06 at 09:49 -0500, Michael Catanzaro wrote:
> A revert is not supposed to be "punishment" in any way... rather,
> consider it as assistance to make sure GNOME stays buildable. :)

Hi,
maybe it's not supposed to be, but it is in my eyes. I try my best to
not break builds, I'm grateful when other folks let me know when the
builds are broken for them. Neither jhbuild catches everything [1],
which you seem to suggest. I broke build in general, not only in the
jhbuild, in the not so distant past, which was a shame and it was all
my fault. I'm sorry for that, though in that particular case the change
on the evolution-data-server side was correct, only the evolution build
broke, because it wasn't updated appropriately. The revert on the eds
side would not make any sense. It was correct, as I said. (API changed
in some way and I didn't realize that the evolution uses the API in a
way which breaks it. Just my fault.)

I do not fully understand why reverting in some random project (and
making sort of hostile environment) is easier than the current state,
when the same person "tags" what commit is supposed to be used in
Continuous in the jhbuild. You still need the person, the person cannot
be a monkey, it will think before doing anything (I mean, it's not a
mechanical job where one rule fits each case).

I appreciate how Emmanuele and others (are there any others?) handle
the situation right now. I do not want to add them more work, really
not. 

> we can create a list of maintainers who don't want this

Nah, that's one more place to look at and to forget about. That adds
work to those nice folk(s) whom take care of the Continuous.

> In this case, when the API change breaks something in core or gnome-
> apps, then the module and its dependencies really need to be updated
> in jhbuild at (approximately) the same time, so there's at most a
> small window of time where jhbuild is broken.
> ...

Right, it's unrealistic in some cases to land all of that at one time.
Side branches is a nice idea, but it won't work, because you do not
have any influence on the other project maintainers usually, thus even
a bugzilla requests can lurk there for a long time. Having a side
branch only means that the maintainers whom do not follow particular
mailing list will notice only later, rather than sooner.

There is a bug to make more structures in Camel GObject based [2], to
be able to introspect it in a much easier way and so on. That change
will not be only a simple API change, it'll break core Camel things,
everything what uses it. If you open the [2], then I listed affected
projects at the end of the comment #5. It counts 18 projects. Maybe
there are more. I do not think I'd be able to coordinate the change in
a side branch for all of them, I (we) will surely provide patches in
the bugzilla around the time of the change landing, then it'll be up to
the respective maintainers to pick or reject them. What will the
Continuous do during this "broken period" is something I do not know. I
only know that the change will be for good. Introspection support for
the Mail part is good, I believe. Trying to revert such change in the
eds would hurt very much, no doubt.

> Yeah, of course runtime bugs are problems, but not the problem we are
> trying to solve here. :)

Heh, true, though the runtime bugs are more important. I believe.
I know, that's one reason why you want to have the jhbuild working, to
make it easier for the contributors to test and develop. Which is a
good thing for everyone.
Bye,
Milan

[1] https://bugzilla.gnome.org/show_bug.cgi?id=766540
[2] https://bugzilla.gnome.org/show_bug.cgi?id=764065
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-06 Thread Michael Catanzaro
Hi,

A revert is not supposed to be "punishment" in any way... rather,
consider it as assistance to make sure GNOME stays buildable. :) But if
you really don't like it and don't want other folks reverting your
commits when you're not around, we can create a list of maintainers who
don't want this; that way, on the rare occasions when something breaks,
we can branch your module in jhbuild and tag it in Continuous instead
of reverting your change. I think it's generally better to avoid
branching/tagging, so I'd encourage maintainers to just accept the
occasional revert now and then, but it's understandable if we won't all
agree on this.

On Mon, 2016-06-06 at 11:01 +0200, Milan Crha wrote:
> - a soname version bump can break dependant projects. Such change
>   should not be reverted, the dependencies should be rebuilt.

Right; incremental builds with jhbuild are not completely reliable, and
a soname bump is generally not a valid reason to revert a commit. But
if a clean build doesn't work, then we have a problem to be fixed.

> - a soname version bump with an API change can break dependant
>   projects. Such change should not be reverted, the dependencies
>   should be rebuilt and adapted to the change.

In this case, when the API change breaks something in core or gnome-
apps, then the module and its dependencies really need to be updated in
jhbuild at (approximately) the same time, so there's at most a small
window of time where jhbuild is broken. Of course it can take time to
port dependencies; in such cases, we can either (a) make the API change
on a side branch, port dependencies on side branches, and merge the
changes to master when all GNOME modules are ready; or (b) make the API
change on master, but branch the module in the jhbuild moduleset so
that other modules continue to build against the older version of the
module with the API change. Really, you can do whatever you want, so
long as you avoid breaking jhbuild or Continuous, please!

> - a change which can build, but causes regressions in runtime. Such
>   change should be reverted, right? But wait, you care only about
>   the build, not about runtime. Having a software buildable and
>   having the same software usable are two very different things.

Yeah, of course runtime bugs are problems, but not the problem we are
trying to solve here. :)

Hope that clarifies where I'm coming from.

Michael
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-06 Thread Alberto Mardegan
On 03/06/2016 17:26, Sriram Ramkrishna wrote:
> Yes, but it highlights the value something like GitHub provides.  What
> about GitLab?  (BTW I'm not advocating we move, just looking to see
> alternatives)  GitLab while open source, does not seem to open source
> its CI work that I can tell.  Still, maybe a deal can be made.. 

It's all open-source:
https://about.gitlab.com/gitlab-ci/

Ciao,
  Alberto
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Carlos Soriano Sanchez
Hey Milan,

| The proposal about random reverts makes me feel that you want to flip
| the positions. While I agree that the maintainers point of view is
| broken, the position flip just means (for me): "the GNOME
| infrastructure/jhbuild environment is the only good build environment
| and if the maintainer breaks it, then the GNOME infrastructure team can
| punish the maintainer if it needs to". Do you see how absurd it sounds?

I see what you meant, but I think you are looking at it with "bad eyes". It is 
not punishment, is just that should be a requirement that the master branch is 
buildable on continuous and jhbuild, and the only way to do so it's reverting 
the breaking change.
In the meantime the maintainer can do whatever he wants in a branch and wait 
until the he/she figures out the build problem before merging to master again.

| The breakage should be dealt with in a cooperation manner, rather than
| in a force manner. Of course, if the maintainer is not willing to
| cooperate..., but I hope that's only a minority of the GNOME-hosted

Indeed, and I think Emmanuelle acts in the right way, trying to reach the 
maintainer, and if he/she is not available, just reverting with a commit 
message explaining the reason or fixing it temporarily so everyone can still 
build the module.

I think this is more about that bad feeling of someone else not involved in the 
module touching "our" project without even asking to us the maintainers, and I 
also have that feeling, however I think it's more important that everyone can 
build our modules. Otherwise we are going to make worse the already difficult 
experience of building GNOME.

Cheers,
Carlos Soriano
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-06 Thread Milan Crha
On Fri, 2016-06-03 at 08:28 -0500, Michael Catanzaro wrote:
> I expect module maintainers to be understanding when reverts happen.
> It's not the end of the world; you can land your change again as soon
> as you figure out why it was broken. We can all live with a few
> revert commits in our git history. Your module can still be your
> fiefdom... just so long as it's still building with the rest of
> GNOME.

Hi,
I'm not a fan of the random reverts from some 3rd party person whom
doesn't know the "bigger picture" of the project changes which can lead
to a win-win state, even the changes are that large that it's better
(for whatever reason) to split them into several commits, which not
necessarily follow in a short time. Such reverts would mean more work
for the maintainers, which is always a pita.

I hear here an argument that the maintainers claim that "it builds on
their machine" and they do not care of the other build environments.
Personally, I do not understand this statement, one (the maintainer)
should be willing to support his project home, appreciate that the
project can use the infrastructure and be tested in more places, which
is always a good thing.

The proposal about random reverts makes me feel that you want to flip
the positions. While I agree that the maintainers point of view is
broken, the position flip just means (for me): "the GNOME
infrastructure/jhbuild environment is the only good build environment
and if the maintainer breaks it, then the GNOME infrastructure team can
punish the maintainer if it needs to". Do you see how absurd it sounds?
The breakage should be dealt with in a cooperation manner, rather than
in a force manner. Of course, if the maintainer is not willing to
cooperate..., but I hope that's only a minority of the GNOME-hosted
projects (I do not know any numbers here) and definitely the core
project maintainers are all good, I believe, thus there might not be
any issue. The "bad" projects, if not from the core part, can be
skipped in the Continuous builds due to the lack of the interest from
the maintainers side.

There had been discussed also what can be reverted and what not.
If you recall:
- a soname version bump can break dependant projects. Such change
  should not be reverted, the dependencies should be rebuilt.
- a soname version bump with an API change can break dependant
  projects. Such change should not be reverted, the dependencies
  should be rebuilt and adapted to the change.
- a change which can build, but causes regressions in runtime. Such
  change should be reverted, right? But wait, you care only about
  the build, not about runtime. Having a software buildable and
  having the same software usable are two very different things.

I suppose the GNOME build system runs some unit tests, if the module
provides such, but such tests are testing the new code, not the
regressions the change in the module can cause in another module which
had been/will be built against it.

Just my opinion on the matter.
Bye,
Milan

___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-03 Thread philip . chimento
On Fri, Jun 3, 2016, 01:42 Emmanuele Bassi  wrote:

>
> Right now, the easiest and cheapest option would literally be moving
> the GNOME development infrastructure wholesale to GitHub, put
> everything under Travis CI, and keep a separate machine somewhere that
> cranks out GNOME Continuous images from the GitHub repositories. For
> reasons that you may guess, this is not going to be a very good move.
> Any other option involves replicating that set up on gnome.org
> infrastructure, with all the issues that it entails.
>

We already have mirrors of all the Gnome repositories on GitHub, and I
believe you could run Travis CI off of those without shifting the entire
primary infrastructure to GitHub. Travis CI isn't free-as-in-speech, but as
far as I know there is no lock-in. Maybe having such a setup as a temporary
measure would 1) visibly demonstrate to module maintainers why it's useful
and necessary, and therefore help to get people out of the "it builds on my
machine" mindset; and 2) inspire people to replicate it on Gnome
infrastructure out of free components. That task would probably seem less
daunting if there was a familiar example to follow.

Travis will hardly be ideal either though, because I believe we'd have a
hard time getting dependencies of our bleeding edge modules onto their
Ubuntu 12.04 and 14.04 VMs...

Regards,
Philip C

>
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-03 Thread Sriram Ramkrishna
On Fri, Jun 3, 2016 at 1:42 AM Emmanuele Bassi  wrote:

> Hi Sri;
>
> On 3 June 2016 at 02:53, Sriram Ramkrishna  wrote:
> > I found this discussion really fascinating and so I wanted to continue
> it,
> > separately from Emmanuele's thread so that issue is resolved without
> > bifurcating the discussion.
> >
> > My thoughts are that we really shouldn't be looking at something and say
> > 'well, we can't do it we don't have the resources' especially when there
> is
> > a clear return on investment.  I think this would be an interesting
> > challenge and we should find a way to figure out how we can attract the
> > talent, machines and money to do this.  After all, we have a foundation
> > dedicated to supporting the development of GNOME.
>
> Can the Foundation hire a full time "build team" that:
>
>  * keeps the build machines running
>  * keeps the build running
>  * works on the necessary tooling to integrate our Git repositories
> activity with our mailing list, our bug tracking system, and possibly
> our IRC channels
>

I don't know, right now, probably not.  But we could attract some devops
talent, and help support the initiatives and Andrea Veri and Patrick
Uiterwijk have been doing to attractive them.  We only a part time person
for the moment and even that has given us a significant benefit.

But as you allude to, even with the above we have a social problem, so
before we can even do that we need to figure out how to get maintainers to
participate into the build system.  In this day and age, most developers
accept the fact of using a try server and not merging code that doesn't
build.


>
> The current situation can barely run on volunteers time, and I think
> it's time to be pretty clear on what our requirements are — instead of
> architecture astronauting our way out.
>

Sure.


>
>
> Right now, the easiest and cheapest option would literally be moving
> the GNOME development infrastructure wholesale to GitHub, put
> everything under Travis CI, and keep a separate machine somewhere that
> cranks out GNOME Continuous images from the GitHub repositories. For
> reasons that you may guess, this is not going to be a very good move.
> Any other option involves replicating that set up on gnome.org
> infrastructure, with all the issues that it entails.
>

Yes, but it highlights the value something like GitHub provides.  What
about GitLab?  (BTW I'm not advocating we move, just looking to see
alternatives)  GitLab while open source, does not seem to open source its
CI work that I can tell.  Still, maybe a deal can be made..


>
> Incidentally, if you find somebody like that, good luck not getting
> them poached by companies that want the exact same thing, and are
> likely to pay more than the GNOME Foundation for it.
>
>
Actually, I was going to use this argument to find me talented, but out of
work systems administrators who for whatever reason is not able to find a
job.  I know one such right now, and I've worked with him for 20 years.  It
is completely within his skill set. If we can find someone who can actually
implement it then we have at least some chance.



>
> Still, people consider Continuous somebody else's problem; if it
> "breaks on Continuous" but not on a maintainer machine, then who
> cares?
>

Then we should change where Continuous fits in the scheme of things by
asking the release team to have weekly builds from Continuous.

We should consider everything on the table.



>
> Even if we magically got the resources (build machines, at least one
> person working on the infrastructure side, volunteer work to improve
> the tooling), the attitude of "my module is my fiefdom, if a build
> breaks *you* fix it" has to change. GNOME has long since become an
> interconnected, complex system, and it requires a level of oversight
> that does not map with "a loosely coupled set of components", with
> each one of them that may or may not build; may or may not pass tests;
> may or may not break other components; may or may not lead to a
> bootable, usable system.
>

Well, we've done a lot of social changes, bringing in designers working
with developers, all firsts in a Free Software project.  It is clear we can
make social changes when we need to.

Since 2011, we've already started to think of ourselves as a product, and
so the idea that some people think we are still a loosely coupled set of
components is old way thinking and they need to 'git pull' on their
thinking.


>
> So, more than a *technical* issue (as usual), this is a *social*
> issue. People have to care about this stuff — and not just a couple of
> people getting Continuous running.
>
>
Well, I think to expand on that, all of us need to think about the big
picture.  We have an entire foundation set up to drive development.  But I
think there is a disconnect between development (development, translation,
and documentation) and the foundation/money/engagement.  People don't
realize that everything is connected.

Perception management, publi

Re: Continuous Builds in GNOME

2016-06-03 Thread Michael Catanzaro
On Fri, 2016-06-03 at 09:42 +0100, Emmanuele Bassi wrote:
> Even if we magically got the resources (build machines, at least one
> person working on the infrastructure side, volunteer work to improve
> the tooling), the attitude of "my module is my fiefdom, if a build
> breaks *you* fix it" has to change. GNOME has long since become an
> interconnected, complex system, and it requires a level of oversight
> that does not map with "a loosely coupled set of components", with
> each one of them that may or may not build; may or may not pass
> tests;
> may or may not break other components; may or may not lead to a
> bootable, usable system.

Based on the last time we discussed this, I'm pretty sure this view is
passionately-held by a very small minority of contributors. Yes it's a
social issue, but also a technical one with bearing on our ability to
onboard new contributors and the productivity of existing contributors.
I support a policy that all contributors may revert a patch on master
if it breaks Continuous, and I suspect the rest of release team would
as well, as we're tired of dealing with jhbuild issues on release day.
master should always be buildable.

I expect module maintainers to be understanding when reverts happen.
It's not the end of the world; you can land your change again as soon
as you figure out why it was broken. We can all live with a few revert
commits in our git history. Your module can still be your fiefdom...
just so long as it's still building with the rest of GNOME.

I would also like us to stop tagging modules in Continuous in general,
instead revert commits that introduce build breakage in the modules
themselves, and save tagging for very rare cases where reverts are not
appropriate. Of course, sometimes we may need a transition in which
master of some module is broken for a brief period while somebody is
actively working on fixing it (in a matter of hours, not days). Such
issues are reasonable if they're rare. But in general, everyone should
feel empowered to keep our modules building.

Michael
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: Continuous Builds in GNOME

2016-06-03 Thread Sebastian Geiger (Lanoxx)

Hi Emanuelle,

I just wanted to pitch into this discussion and say thanks to you (and 
everyone else working on this) for putting all the effort into fixing 
build issues and improving continuous integration.


I have been a developer for different gnome components for a while, but 
I am not such a frequent contributor that I know all the internals of 
most core components. So when a module breaks during a jhbuild, then I 
am often quite lost and need a few hours of google, asking people at 
#gtk or #gnome as well as trial and error.


Most of the time I just want to "quickly get a fairly recent build" and 
then "write a small patch" to fix something in one of the gnome modules. 
When that happens I may be able to set aside a few hours or half a day 
but not a whole week. However most times this half day is wasted 
battling with jhbuild and trying to get a working environment that not 
only builds glib but which actually comes as far as to build the module 
for which I wanted to write a patch in the first place. When I have 
already spend 4 hours and jhbuild is just building module 20 out of 90, 
and breaking on some unresolvable dependency, missing library, some 
obscure configure or make error or what ever, then this is usually the 
point were I just go and do something else.


So again, all your effort its highly appreciated.

I really hope that at some point in the future its possible to just type 
`jhbuild build` then go away to work on something else when then come 
back to find the build finished and login to the ready jhbuild session. 
If on top of that this would work not only on the most recent fedora 
"from last week" or so, but on the most recent Ubuntu _LTS_ or Debian 
_stable_, then that would be really awesome. And it would mean that I 
could spend more time testing gnome modules, fixing bugs and help to 
improve gnome rather then spending days trying to get all modules building.


Thanks and Cheers
Sebastian

On 03/06/16 10:42, Emmanuele Bassi wrote:

Still, people consider Continuous somebody else's problem; if it
"breaks on Continuous" but not on a maintainer machine, then who
cares?

Even if we magically got the resources (build machines, at least one
person working on the infrastructure side, volunteer work to improve
the tooling), the attitude of "my module is my fiefdom, if a build
breaks*you*  fix it" has to change.


___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Continuous Builds in GNOME

2016-06-03 Thread Emmanuele Bassi
Hi Sri;

On 3 June 2016 at 02:53, Sriram Ramkrishna  wrote:
> I found this discussion really fascinating and so I wanted to continue it,
> separately from Emmanuele's thread so that issue is resolved without
> bifurcating the discussion.
>
> My thoughts are that we really shouldn't be looking at something and say
> 'well, we can't do it we don't have the resources' especially when there is
> a clear return on investment.  I think this would be an interesting
> challenge and we should find a way to figure out how we can attract the
> talent, machines and money to do this.  After all, we have a foundation
> dedicated to supporting the development of GNOME.

Can the Foundation hire a full time "build team" that:

 * keeps the build machines running
 * keeps the build running
 * works on the necessary tooling to integrate our Git repositories
activity with our mailing list, our bug tracking system, and possibly
our IRC channels

The current situation can barely run on volunteers time, and I think
it's time to be pretty clear on what our requirements are — instead of
architecture astronauting our way out.

We don't need machines; those are "easy" to get. We need actual people
that would fit the bill of a "devops" team; we need people that can
install and maintain a complex build system; that set up a Continuous
Integration process on top of our existing Continuous Delivery one;
and that can fill in the blank spots on the map between "this branch
on this module failed to build" and "this is breaking the whole GNOME
please fix it".

Right now, the easiest and cheapest option would literally be moving
the GNOME development infrastructure wholesale to GitHub, put
everything under Travis CI, and keep a separate machine somewhere that
cranks out GNOME Continuous images from the GitHub repositories. For
reasons that you may guess, this is not going to be a very good move.
Any other option involves replicating that set up on gnome.org
infrastructure, with all the issues that it entails.

Incidentally, if you find somebody like that, good luck not getting
them poached by companies that want the exact same thing, and are
likely to pay more than the GNOME Foundation for it.

> We have an amazing infrastructure that we can attract possible very smart
> people of whatever age to come and work on for the betterment of GNOME and
> of course their own careers.

Colin Walters presented Continuous to the GNOME community in 2012 —
and it was already cranking out GNOME builds. Apart from a flurry of
activity in the beginning, I have not seen much interest being
attracted to the actual tools; for a long while, people didn't even
care much about the builds — and to be fair, why would they? It works
on *their* machine and maybe they can even release tarballs every once
in a while, and if it breaks patches welcome, right? Well, patches
started to arrive, and at the end we got a much better experience for
newcomers, with jhbuild not constantly breaking.

Still, people consider Continuous somebody else's problem; if it
"breaks on Continuous" but not on a maintainer machine, then who
cares?

Even if we magically got the resources (build machines, at least one
person working on the infrastructure side, volunteer work to improve
the tooling), the attitude of "my module is my fiefdom, if a build
breaks *you* fix it" has to change. GNOME has long since become an
interconnected, complex system, and it requires a level of oversight
that does not map with "a loosely coupled set of components", with
each one of them that may or may not build; may or may not pass tests;
may or may not break other components; may or may not lead to a
bootable, usable system.

So, more than a *technical* issue (as usual), this is a *social*
issue. People have to care about this stuff — and not just a couple of
people getting Continuous running.

> I just hate when we say we don't have resources when we can't quantify what
> we have and we aren't quantifying what we need.  I mean, yes, it is
> difficult and hard right now, and so we need to make strategic plans to fix
> it especially if it is a man power problem.  Our development, our
> engagement, the board, everything is connected and so we need to look at it
> from all angles.
>
> I really love the ideas of try servers, and you know they have this some how
> in github, and man, we should try to find clever means to do the same thing.

Sometimes there are no "clever" options, just the old dumb ones.

Ciao,
 Emmanuele.

> -- Forwarded message -
> From: Emmanuele Bassi 
> Date: Tue, May 31, 2016 at 9:51 AM
> Subject: Re: Enabling builddir != srcdir by default in jhbuild
> To: Michael Catanzaro 
> Cc: Desktop Development List 
>
>
> Hi;
>
> I already pushed the default change to master, as that will only
> affect new clones or updates. I'm also building locally the default
> gnome moduleset — but I can safely say that the core platform builds
> fine. I'm just worried about gnome-world, but for that I 

Re: Continuous Builds in GNOME

2016-06-03 Thread Sébastien Wilmet
I also think it is sometimes important to discuss about the big picture,
even if it is just pipe dreams.

On Fri, Jun 03, 2016 at 01:53:28AM +, Sriram Ramkrishna wrote:
> I really love the ideas of try servers, and you know they have this some
> how in github, and man, we should try to find clever means to do the same
> thing.

>From my naive point of view, a try server would be more complicated to
implement and integrate into the gnome.org infrastructure, and it would
be a big change for contributors and maintainers. When doing such
changes, the biggest challenge comes from the people, not from the
technical aspect of it.

My (again, naive) proposal with the
master/master-stable-next/master-stable branches [1] seems easier to
implement to me and the advantage is that contributors and maintainers
don't need to change how they work. Of course a try server would be nice
too, but it can be done separately.

[1] The more I think about it the more it becomes complicated, I know
the Devil is in the details (or God is in the details. Whatever is in
the details it is something important).

--
Sébastien
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Continuous Builds in GNOME

2016-06-02 Thread Sriram Ramkrishna
I found this discussion really fascinating and so I wanted to continue it,
separately from Emmanuele's thread so that issue is resolved without
bifurcating the discussion.

My thoughts are that we really shouldn't be looking at something and say
'well, we can't do it we don't have the resources' especially when there is
a clear return on investment.  I think this would be an interesting
challenge and we should find a way to figure out how we can attract the
talent, machines and money to do this.  After all, we have a foundation
dedicated to supporting the development of GNOME.

A more interesting discussion would be a practical set of criteria needed
to implement a reasonable version that we can evolve over time and then
convert that into something that GNOME Foundation directors and engagement
team members can work to figure what needs to be done.

We have an amazing infrastructure that we can attract possible very smart
people of whatever age to come and work on for the betterment of GNOME and
of course their own careers.

I just hate when we say we don't have resources when we can't quantify what
we have and we aren't quantifying what we need.  I mean, yes, it is
difficult and hard right now, and so we need to make strategic plans to fix
it especially if it is a man power problem.  Our development, our
engagement, the board, everything is connected and so we need to look at it
from all angles.

I really love the ideas of try servers, and you know they have this some
how in github, and man, we should try to find clever means to do the same
thing.

sri

-- Forwarded message -
From: Emmanuele Bassi 
Date: Tue, May 31, 2016 at 9:51 AM
Subject: Re: Enabling builddir != srcdir by default in jhbuild
To: Michael Catanzaro 
Cc: Desktop Development List 


Hi;

I already pushed the default change to master, as that will only
affect new clones or updates. I'm also building locally the default
gnome moduleset — but I can safely say that the core platform builds
fine. I'm just worried about gnome-world, but for that I guess we'll
have to wait until stuff breaks.

Ciao,
 Emmanuele.

On 31 May 2016 at 17:47, Michael Catanzaro  wrote:
> On Mon, 2016-05-30 at 23:44 +0100, Emmanuele Bassi wrote:
>> So, it seems that the discussion died on these shores.
>>
>> In the meantime, GVfs is but the latest module that broke because
>> people don't test under builddir != srcdir; I really, *really* don't
>> want to deal with this kind of perfectly avoidable build breakages
>> any
>> more.
>>
>> Ciao,
>>  Emmanuele.
>
> Emmanuele, I think you can feel free to change the default in jhbuild
> provided that everything in the apps and core suites still builds after
> doing so. i.e. you need to make sure to add exceptions in the jhbuild
> modulesets for all modules that need it.
>
> Just please wait a couple days first to see if there are any
> substantial objections (which I do not expect).
>
> Michael



--
https://www.bassi.io
[@] ebassi [@gmail.com]
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list