CI Requirements - Lessons Not Learnt?
Martin Gräßlin
mgraesslin at kde.org
Thu Jan 12 16:02:40 GMT 2017
Am 2017-01-12 08:32, schrieb Ben Cooksley:
> On Thu, Jan 12, 2017 at 4:54 AM, Martin Gräßlin <mgraesslin at kde.org>
> wrote:
>> Am 2017-01-11 10:46, schrieb Ben Cooksley:
>>>
>>> On Wed, Jan 11, 2017 at 6:57 PM, Martin Gräßlin <mgraesslin at kde.org>
>>> wrote:
>>>>
>>>>
>>>>
>>>> Am 10. Januar 2017 22:42:35 MEZ schrieb Ben Cooksley
>>>> <bcooksley at kde.org>:
>>>>>
>>>>> On Mon, Jan 9, 2017 at 8:22 AM, Martin Gräßlin <mgraesslin at kde.org>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Am 6. Januar 2017 17:46:30 MEZ schrieb Alexander Neundorf
>>>>>
>>>>> <neundorf at kde.org>:
>>>>>>>
>>>>>>> On 2017 M01 6, Fri 22:39:22 CET Ben Cooksley wrote:
>>>>>>>>
>>>>>>>> See my notes above re. why tying this to the dependency freeze
>>>>>>>> date
>>>>>>>
>>>>>>> is
>>>>>>>>
>>>>>>>> a bad idea and won't really work.
>>>>>>>>
>>>>>>>> Given that we potentially have to take into account Qt version
>>>>>
>>>>> bumps
>>>>>>>>
>>>>>>>> and base system rebuilds - i'll give a timeline of 1 month's
>>>>>
>>>>> advance
>>>>>>>>
>>>>>>>> notice (this is an absolute worst case scenario time). In most
>>>>>>>> instances we can turn things around in much shorter time (about
>>>>>>>> a
>>>>>>>> week), especially where it's just a case of installing an
>>>>>>>> already
>>>>>>>> available package / adding a PPA/Equivalent Repository.
>>>>>>>>
>>>>>>>> The significant variation in time above is why I don't want to
>>>>>>>> actually specify a time frame which is set in stone. Some things
>>>>>
>>>>> are
>>>>>>>>
>>>>>>>> just easier to provide / upgrade than others.
>>>>>>>
>>>>>>>
>>>>>>> how about some simple rule like "new dependencies every first of
>>>>>>> the
>>>>>>> month",
>>>>>>> and 1 week notice. For the developer this would mean in the worst
>>>>>
>>>>> case
>>>>>>>
>>>>>>> 5 weeks
>>>>>>> waiting, which is probably quite a lot.
>>>>>>> E.g. if you need a new dependency, and announce it let's say
>>>>>>> January
>>>>>>> 6th,
>>>>>>> you'll get it February 1st.
>>>>>>> If you announce it January 29th, you get it March 1st.
>>>>>>
>>>>>>
>>>>>> In general I like the more formal approach to dependency handling.
>>>>>>
>>>>>> This concrete proposal is in my opinion to restrictive to
>>>>>> developers
>>>>>
>>>>> - in case of plasma it could mean only one date per release
>>>>> schedule.
>>>>>>
>>>>>> That's difficult to plan and makes it easy for devs to miss. If
>>>>>> for
>>>>>
>>>>> whatever reason you cannot push that one day you have to wait a
>>>>> complete release cycle.
>>>>>>
>>>>>>
>>>>>> And I don't see how this addresses the problem of CI needs time.
>>>>>> As
>>>>>
>>>>> Ben told us one week might not be enough.
>>>>>>
>>>>>>
>>>>>> It can address the problem for distro consumers, but for
>>>>>> developers
>>>>>
>>>>> on older distros it wouldn't help either.
>>>>>
>>>>> Can we have a proposal from your side then Martin?
>>>>>
>>>>> As i've said previously, what i'm asking for here is fundamentally
>>>>> incompatible with integration into a release schedule, as
>>>>> dependencies
>>>>> can be bumped at essentially any time from the point of a version
>>>>> being released (the unfreeze) to the point dependencies are frozen
>>>>> in
>>>>> the lead up to a release. The advance notice i've asked for needs
>>>>> to
>>>>> be given before said bump actually happens.
>>>>>
>>>>> Note that the amount of notice needed is very dependent on the
>>>>> nature
>>>>> of the bump - some bumps could be sorted in 24 hours... while
>>>>> others
>>>>> require extensive planning and need weeks.
>>>>
>>>>
>>>> Honestly, that is an inflexibility I cannot work with. I don't see
>>>> how I
>>>> as a dev can
>>>> plan to upgrade a dependency if all we get is something between a
>>>> day and
>>>> months.
>>>> Please remember that our release schedule is only about 3 months.
>>>> With
>>>> the
>>>> requirements presented here it means I have to announce in the last
>>>> release cycle that I want to upgrade a dependency.
>>>
>>>
>>> I'm sorry but that is how it is - we're providing CI to the entire of
>>> KDE, covering Frameworks, Applications and Extragear - in addition to
>>> Plasma.
>>> Jenkins currently has ~1300 jobs loaded into it - so KWin is a
>>> miniscule blip in comparison, considering it makes up only 2 of those
>>> jobs.
>>>
>>> This makes any change in the base platform a complex one - requiring
>>> a
>>> full rebuild of everything (takes more than a day last time we did it
>>> - and that's not taking into account the current Jenga tower state of
>>> the dependency tree for some parts of KDE). This is where the "weeks"
>>> part I mentioned above comes in - as depending on what you are after
>>> we may have to replace the system base. That isn't something we can
>>> just do at a drop of a hat because you've decided to bump
>>> dependencies
>>> on something, and it isn't something I can predict with any certainty
>>> either.
>>>
>>> How difficult a dependency bump or introduction is to accommodate
>>> very
>>> much depends on the availability of supplementary repositories
>>> (PPAs),
>>> the difficulty of building it ourselves (bear in mind this has a
>>> corresponding maintenance cost as well) and the ABI impact on the
>>> rest
>>> of the system (even Qt patch releases demand a full rebuild of things
>>> due to the usage of private API in various parts of KDE).
>>
>>
>> From what I get here we have different classes of dependencies. And
>> they
>> will take a different amount of time.
>
> That's correct.
>
>>
>> Can we classify this in a way that we as developers can derive how
>> long it
>> takes.
>> My saying about inflexibility is only about the "can take as long as
>> it
>> takes".
>> That is something I cannot plan with. I need to know how long it will
>> take.
>>
>> So if we have categories like:
>> * if present in Ubuntu 16.10, but not yet installed: 24 h
>> * if not present in Ubuntu 16.10, but available through PPA: 48 h
>> * if not present through a PPA: evaluation by sysadmin is needed
>> * Qt version increase: tell us 3 months ahead
>>
>> That would be something I can work with. This would give me a clear
>> planning
>> and I could categorize the required dependency myself.
>
> Something a little more than 24 hours would be nice in case we have
> other Sysadmin requests or work that needs attending to (several
> instances needed Wordpress upgrades this afternoon for instance)
all right! Can we put that down in a wiki page together with Eike's
suggestion
so that we have it formalized?
>
> It would probably be a good idea to announce it for other developers
> to know about as well so they can sort their systems out.
that's what we have code review for :-)
Cheers
Martin
More information about the kde-core-devel
mailing list