Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Bhushan Shah
Hello Johan,

On Tue, Apr 28, 2020 at 06:18:14PM +0200, Johan Ouwerkerk wrote:
> I would like to propose that the sysadmin team pick the layout that is
> easiest to *implement*, which I suspect is also the most like what we
> have now, and that we live with that. Unless there is a pressing need,
> like real hard data that we're losing contributors because they can't
> find our repos or a sysadmin burden that would be excessively higher
> than otherwise... let's keep things as simple and straightforward for
> syadmin and tooling maintainers to implement during the Gitlab
> migration.
> 
> Let's worry about the perfect project layout once we've identified the
> need. That way it's a lot easier to garner consensus for a practical
> solution that isn't just a wishlist of all the features we would like
> but which Gitlab may or may not have and which tooling is probably
> completely unprepared for.

Going with flat namespace right now and then making whole thing non-flat
means double amount of work for sysadmins, once to migrate everything on
invent, and then later to their final home. It is equal amount of work
for contributors, once to migrate to invent URL and then migrate to new
grouping.

If setups needs changing, I'd rather change it now at once then later.

> By all means disregard this stuff if the pressing need has already
> been identified and I've either neglected to read e-mails properly or
> wasn't aware for some other, possibly historical, reason.

We have gotten a request for namespacing from projects on multiple
occassion, in cgit our workaround has always been that we prefix the
repo name with namespace- (i.e wikitolearn-courses-backend).

While this works out with our current workflow, it is not really
optimal. I've also mentioned various new contributor focused
requirements which lead us to this proposal for structuring in previous
emails.

-- 
Bhushan Shah
http://blog.bshah.in
IRC Nick : bshah on Freenode
GPG key fingerprint : 0AAC 775B B643 7A8D 9AF7 A3AC FE07 8411 7FBC E11D


signature.asc
Description: PGP signature


Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Dan Leinir Turthra Jensen
On Monday, 27 April 2020 21:25:09 BST Albert Astals Cid wrote:
> El dilluns, 27 d’abril de 2020, a les 13:58:02 CEST, Bhushan Shah va 
escriure:
> > In part I am mostly re-iterating what Ben already mentioned in different
> > messages.
> > 
> > On Mon, Apr 27, 2020 at 12:38:42PM +0200, Aleix Pol wrote:
> > > Does this mean that to clone it we'll have to go "git clone
> > > kde:games/knetwalk" or something along the lines?
> > 
> > Yes
> > 
> > [Rest of message is with sysadmin hat off and as a developer]
> > 
> > > If that's the case I'd much prefer if we didn't do this, at the moment
> > > it's already uncomfortable for me to remember the URL for some of the
> > > repos (e.g. is it sysadmin/ or not?), this will only increase the
> > > problem and I personally don't see the advantage.
> > 
> > I do agree that it maybe small inconvience, but let's be honest, most of
> > us have been using kdesrc-build or some kind of automated tooling for
> > building everything, apart from very rare case we never have to manually
> > clone any of KDE repository, at least it is true for me personally. I am
> > not sure about others.
> 
> Please let's refrain from saying things like "most of us have been using
> kdesrc-build" when you don't have any data to back that up.
> 
> Cheers,
>   Albert

Just adding my "i don't use kdesrc-build, and git clone kde:x everything 
myself" voice, here. Now, if a simple(ish) script can be created to make 
something akin to the kde: rewriting work, even if what it really does is to 
search gitlab and create a clone with the appropriate command, i could deal 
with that, but having the ability to simply ask for the project name is more 
than a little useful.

-- 
..dan / leinir..
http://leinir.dk/




Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Johan Ouwerkerk
On Tue, Apr 28, 2020 at 1:09 PM Adriaan de Groot  wrote:
>
> One actor is "tooling", as Albert has pointed out. Whatever the resulting
> structure is, it needs to be communicated to tool authors on time for tools to
> be updated, released, and rolled out for use. Tools mentioned so far:
>  - kdesrc-build
>  - i18n / scripty
>  - release scripts
> The tools don't have An Opinion regarding the layout, they just need to be
> updated.
>

To some extent, yes, but some assumptions are baked in at a quite
fundamental level for e.g. kdesrc-build (if I understand the Perl
correctly):

- Uniqueness of project names. Cannot have two "documentation"
projects being advertised through kde-build-metadata
- There must be a single shared root prefix for all projects. This
prefix may be the empty string, but the point is that repo paths
advertised in kde-build-metadata must work from this single root
prefix

Any solution that wishes to preserve tooling must take these
fundamental constraints as given or else risk that you cannot move
until the whole world is fixed first.

I'm obviously biased as someone who invested some time and effort in
kdesrc-build, but the busfactor is a real concern here. E.g.: Michael
clearly just hasn't had the time lately to spend on kdesrc-build and I
don't think it's such a great idea for me to merge in major changes
without him reviewing it first.

>
> A tool-like actor that I don't think has been mentioned so far is "existing
> checkouts". I have a src/kde with all the bits I've looked at "recently".
> There may even be some SVN checkouts there -- I'm willing to forget about
> those. Surprising and annoying me every time I update those sometime in the
> future is not good, but it's only going to annoy me once (per repo, so at most
> 143 times for my clones).
>

I think that this is a bit of a lost cause. I think there's going to
be some level of annoyance all around until the pain has finally died
away because everybody made the upgrade. We can have a script to help
with that but that will inherently assume quite a bit about how you
set up your projects manually to begin with and it will still piss off
a lot of people because we break their workflow no matter what.

The main problem is not technical here, the main problem is that
people who use that manual git clone workflow do so because they don't
want to use the layers of tooling. So adding layers of tooling to
"fix" the manual work flow is defeating the point, and therefore the
pain is here to stay I think.

At a fundamental the only way to avoid the pain is for the URLs to
continue to work somehow, but I gather that is a completely unfeasible
solution in terms of not driving sysadmin crazy. A fairly big one is
that the fingerprint of the host's SSH key will be different.

>
> I'd be *vaguely* worried about existing crontabs and automatic jobs that we've
> forgotten about, or which others have forgotten about. Those aren't fixable in
> the face of any changes to repositories, anyway.
>

Yep. And I think for the exact same reason why a porting/transitioning
script is probably not going help all that much -- too much diff in
setup/config/versions/tools on the other end to deal with in a
reasonable script.

It's the main source of complexity in a tool like kdesrc-build and
that has lot's of Perl to hammer systems into submission... :)

>
> Turning to human actors, who are the more interesting ones,
>

I think we're in a situation that this migration is going to cause
pain for the human element no matter what. I also think that
ultimately from a technical pov it mostly doesn't really matter. As
someone else already mentioned: the Internet has search engines for
that.

What exact flavour of labeling/grouping/hierarchy we use, I think it
is mostly bikeshedding: I would predict that at first this is going to
be annoying for many if not nearly all contributors. After a while
we've all made the upgrade (just a matter of tweaking your
~/.gitconfig & git remote set-url per repo) and then it's business as
usual.

So yes this is about the social aspect. Personally I think the pain is
unavoidable for the individual contributor, but what seems to be
getting lost in this discussion is that there *is* also an amount of
pain that can be avoided. We can avoid pain for the sysadmin team by
choosing whatever is easiest to maintain long term here. We can avoid
pain for the maintainers of tooling by choosing whatever fits the
tooling most easily.

In particular we can avoid choosing an option that imposes additional
parallel sysadmin work indefinitely, like e.g. dedicated mirror
services to redirect stuff.

I would like to propose that the sysadmin team pick the layout that is
easiest to *implement*, which I suspect is also the most like what we
have now, and that we live with that. Unless there is a pressing need,
like real hard data that we're losing contributors because they can't
find our repos or a sysadmin burden that would be excessively higher
than 

Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Bhushan Shah
Hi Adriaan,

On Tue, Apr 28, 2020 at 01:08:33PM +0200, Adriaan de Groot wrote:
> A tool-like actor that I don't think has been mentioned so far is "existing 
> checkouts". I have a src/kde with all the bits I've looked at "recently". 
> There may even be some SVN checkouts there -- I'm willing to forget about 
> those. Surprising and annoying me every time I update those sometime in the 
> future is not good, but it's only going to annoy me once (per repo, so at 
> most 
> 143 times for my clones).

We have a plan to provide a script which can change remotes in existing
clones. (It would take a top-level directory path for all your clones).

> Perhaps it's the "old school", but kdesrc-build doesn't do anything for me. 
> I'm intermittently interested in the source of some random part of KDE -- 
> generally because it's mentioned on IRC -- and then I need that source where 
> I 
> can look at it. Whether it's 'git clone' or 'kdesrc-build --just-the-source-
> please' doesn't matter much.
> 
> If there's any compiling to be done, the less magic there is between me and 
> the compile, the better.
> 
> So, yeah: `git clone kde:x` all the way, but I'm also not really invested in 
> the structure of the label x, or the precise configuration of kde:.
> 
> 
> > Now, if a simple(ish) script can be created to make
> > something akin to the kde: rewriting work, even if what it really does is to
> > search gitlab and create a clone with the appropriate command, i could deal
> > with that, but having the ability to simply ask for the project name is
> > more than a little useful.
> 
> I think we shouldn't underestimate how names are a social construct, though: 
> the current flat structure comes after a structured SVN naming epoch. But I'd 
> totes +1 a search-and-redirector, especially if it means I can write `git 
> clone kde:peruse` and the resulting .git/config has followed the redirects 
> and 
> whatnot and ended up with `url: kdeforreal:audio/peruse`

One thing to remember is, you can't really have a dynamic insteadOf URL
setup. Besides, even if we had a everything under KDE namespace I'd find
a setup for this weird enough.

Let's assume that everything is under invent.kde.org/kde (and
invent.kde.org/sysadmin and invent.kde.org/websites as it is right now).

Now you add a following snippet in gitconfig,

 [url "https://invent.kde.org/KDE/;]
 insteadOf = kde:
 [url "g...@invent.kde.org:KDE/"]
 pushInsteadOf = kde:

Which is slightly modified version of the existing kde: URL helper shown here,
https://community.kde.org/Sysadmin/GitKdeOrgManual#Let_Git_rewrite_URL_prefixes

Now this is perfectly fine for the something which is kde/ so you can do
git clone kde:krita and it would happily replace 'kde:' part with
'https://invent.kde.org/KDE/' and would clone 
'https://invent.kde.org/KDE/krita' 

But, now things get interesting when you want to clone the
docs-krita-org which is in the websites/ namespace. We will have to keep
this things in separate namespace for policy reasons (and same goes for
sysadmin stuff). How would you clone docs-krita-org?

git clone kde:../websites/krita-org ?
add a separate prefix for websites and sysadmin?

Let's assume that you added snippet for sysadmin and websites, it's
just 8 more lines after all,

 [url "https://invent.kde.org/websites/;]
 insteadOf = websites:
 [url "g...@invent.kde.org:websites/"]
 pushInsteadOf = websites:
 [url "https://invent.kde.org/sysadmin/;]
 insteadOf = sysadmin:
 [url "g...@invent.kde.org:sysadmin/"]
 pushInsteadOf = sysadmin:

Does this solve all use-cases? I believe no, it still does not support
the personal repositories of users. So you also need to add 4 more lines
for your own user, and 4 for each user whose repository you want to
clone.

What our workflow with the kde: prefix so far had been really useful I
agree, and I will miss it, but with departure of gitolite which allowed
repositories at top-level, we can't easily support this, and we have to
accept it.

Perhaps solution suggested by Ben in his email could be useful instead
and in addition generic invent: snippet which does not include any
namespace.

 [url "https://invent.kde.org/;]
 insteadOf = invent:
 [url "g...@invent.kde.org:"]
 pushInsteadOf = invent:

> (That said, bigflatlistofrepositories.kde.org .. or maybe call it 
> cgit.kde.org 
> .. could be a particular view onto gitlab which does flattening and search, 
> but only if there's people around to create it and maintain it)

Just to clarify, sysadmins have no plan to support or maintain the cgit
instance once we migrate to Gitlab.

Thanks

-- 
Bhushan Shah
http://blog.bshah.in
IRC Nick : bshah on Freenode
GPG key fingerprint : 0AAC 775B B643 7A8D 9AF7 A3AC FE07 8411 7FBC E11D


signature.asc
Description: PGP signature


Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Ben Cooksley
On Tue, Apr 28, 2020 at 11:09 PM Adriaan de Groot  wrote:
>
> There are a whole bunch of considerations and use-cases being discussed at
> once in this thread, and Leinir's post made me think a bit about different
> actors can interact with "the collection of repositories".
>
> One actor is "tooling", as Albert has pointed out. Whatever the resulting
> structure is, it needs to be communicated to tool authors on time for tools to
> be updated, released, and rolled out for use. Tools mentioned so far:
>  - kdesrc-build
>  - i18n / scripty
>  - release scripts
> The tools don't have An Opinion regarding the layout, they just need to be
> updated.
>
> A tool-like actor that I don't think has been mentioned so far is "existing
> checkouts". I have a src/kde with all the bits I've looked at "recently".
> There may even be some SVN checkouts there -- I'm willing to forget about
> those. Surprising and annoying me every time I update those sometime in the
> future is not good, but it's only going to annoy me once (per repo, so at most
> 143 times for my clones).
>
> I'd be *vaguely* worried about existing crontabs and automatic jobs that we've
> forgotten about, or which others have forgotten about. Those aren't fixable in
> the face of any changes to repositories, anyway.
>
>
> Turning to human actors, who are the more interesting ones,
>
> On 2020 prilula d. 28id 10:38:36 CEST Dan Leinir Turthra Jensen wrote:
> > On Monday, 27 April 2020 21:25:09 BST Albert Astals Cid wrote:
> > > El dilluns, 27 d’abril de 2020, a les 13:58:02 CEST, Bhushan Shah va
> > > > On Mon, Apr 27, 2020 at 12:38:42PM +0200, Aleix Pol wrote:
> > > > > Does this mean that to clone it we'll have to go "git clone
> > > > > kde:games/knetwalk" or something along the lines?
>
> > > > > If that's the case I'd much prefer if we didn't do this, at the moment
> > > > > it's already uncomfortable for me to remember the URL for some of the
> > > > > repos (e.g. is it sysadmin/ or not?), this will only increase the
> > > > > problem and I personally don't see the advantage.
>
>
> Humans come in all shapes and sizes; here's one called Aleix who likes to
> remember the name of a thing, one single label. (Ironic: this particular Aleix
> is also labelled "Aleix Pol" and possibly "Aleix Pol Gonzales") The question
> I'd ask is "in what **context** do you need to remember the URL of a repo?"
> and for that matter: "why is 'knetwalk' an obvious thing to remember, and
> 'games/knetwalk' not-obvious?"
>
> Context here can mean many things. In this thread we've had mentioned:
>  - people just browsing and wanting A Big List
>Here a hierarchical approach means more clicks and navigating a tree,
>rather than a flat structure.
>  - people browsing for a known label
>Using ^F in a flat list or some search field (see also Ian Wadham's
>message just now) doesn't seem *that* different to me, although I've
>got to give ^F the benefit of speed and simplicity.
>  - developers sharing a task list and reviews
>
> .. probably more. Some of these roles have, depending on the chosen solution,
> problems that can be solved with a *technical* addition
> (bigflatlistofrepositories.kde.org .. or whatever), others are going to need a
> social solution.
>
>
>
> Personally, I'm with Leinir here:
>
> > Just adding my "i don't use kdesrc-build, and git clone kde:x everything
> > myself" voice, here.
>
> Perhaps it's the "old school", but kdesrc-build doesn't do anything for me.
> I'm intermittently interested in the source of some random part of KDE --
> generally because it's mentioned on IRC -- and then I need that source where I
> can look at it. Whether it's 'git clone' or 'kdesrc-build --just-the-source-
> please' doesn't matter much.
>
> If there's any compiling to be done, the less magic there is between me and
> the compile, the better.
>
> So, yeah: `git clone kde:x` all the way, but I'm also not really invested in
> the structure of the label x, or the precise configuration of kde:.
>
>
> > Now, if a simple(ish) script can be created to make
> > something akin to the kde: rewriting work, even if what it really does is to
> > search gitlab and create a clone with the appropriate command, i could deal
> > with that, but having the ability to simply ask for the project name is
> > more than a little useful.
>
> I think we shouldn't underestimate how names are a social construct, though:
> the current flat structure comes after a structured SVN naming epoch. But I'd
> totes +1 a search-and-redirector, especially if it means I can write `git
> clone kde:peruse` and the resulting .git/config has followed the redirects and
> whatnot and ended up with `url: kdeforreal:audio/peruse`

Would some form of git alias/custom command script that works similar
to the following be suitable?

git kde-clone skrooge

That script would then search the appropriate groups (ignoring any
personal repositories including forks), find the necessary repository
and perform the clone 

Re: Information regarding upcoming Gitlab Migration

2020-04-28 Thread Adriaan de Groot
There are a whole bunch of considerations and use-cases being discussed at 
once in this thread, and Leinir's post made me think a bit about different 
actors can interact with "the collection of repositories".

One actor is "tooling", as Albert has pointed out. Whatever the resulting 
structure is, it needs to be communicated to tool authors on time for tools to 
be updated, released, and rolled out for use. Tools mentioned so far:
 - kdesrc-build
 - i18n / scripty
 - release scripts
The tools don't have An Opinion regarding the layout, they just need to be 
updated.

A tool-like actor that I don't think has been mentioned so far is "existing 
checkouts". I have a src/kde with all the bits I've looked at "recently". 
There may even be some SVN checkouts there -- I'm willing to forget about 
those. Surprising and annoying me every time I update those sometime in the 
future is not good, but it's only going to annoy me once (per repo, so at most 
143 times for my clones).

I'd be *vaguely* worried about existing crontabs and automatic jobs that we've 
forgotten about, or which others have forgotten about. Those aren't fixable in 
the face of any changes to repositories, anyway.


Turning to human actors, who are the more interesting ones,

On 2020 prilula d. 28id 10:38:36 CEST Dan Leinir Turthra Jensen wrote:
> On Monday, 27 April 2020 21:25:09 BST Albert Astals Cid wrote:
> > El dilluns, 27 d’abril de 2020, a les 13:58:02 CEST, Bhushan Shah va
> > > On Mon, Apr 27, 2020 at 12:38:42PM +0200, Aleix Pol wrote:
> > > > Does this mean that to clone it we'll have to go "git clone
> > > > kde:games/knetwalk" or something along the lines?

> > > > If that's the case I'd much prefer if we didn't do this, at the moment
> > > > it's already uncomfortable for me to remember the URL for some of the
> > > > repos (e.g. is it sysadmin/ or not?), this will only increase the
> > > > problem and I personally don't see the advantage.


Humans come in all shapes and sizes; here's one called Aleix who likes to 
remember the name of a thing, one single label. (Ironic: this particular Aleix 
is also labelled "Aleix Pol" and possibly "Aleix Pol Gonzales") The question 
I'd ask is "in what **context** do you need to remember the URL of a repo?" 
and for that matter: "why is 'knetwalk' an obvious thing to remember, and 
'games/knetwalk' not-obvious?"

Context here can mean many things. In this thread we've had mentioned:
 - people just browsing and wanting A Big List
   Here a hierarchical approach means more clicks and navigating a tree,
   rather than a flat structure.
 - people browsing for a known label
   Using ^F in a flat list or some search field (see also Ian Wadham's
   message just now) doesn't seem *that* different to me, although I've
   got to give ^F the benefit of speed and simplicity.
 - developers sharing a task list and reviews

.. probably more. Some of these roles have, depending on the chosen solution, 
problems that can be solved with a *technical* addition 
(bigflatlistofrepositories.kde.org .. or whatever), others are going to need a 
social solution.



Personally, I'm with Leinir here:

> Just adding my "i don't use kdesrc-build, and git clone kde:x everything
> myself" voice, here. 

Perhaps it's the "old school", but kdesrc-build doesn't do anything for me. 
I'm intermittently interested in the source of some random part of KDE -- 
generally because it's mentioned on IRC -- and then I need that source where I 
can look at it. Whether it's 'git clone' or 'kdesrc-build --just-the-source-
please' doesn't matter much.

If there's any compiling to be done, the less magic there is between me and 
the compile, the better.

So, yeah: `git clone kde:x` all the way, but I'm also not really invested in 
the structure of the label x, or the precise configuration of kde:.


> Now, if a simple(ish) script can be created to make
> something akin to the kde: rewriting work, even if what it really does is to
> search gitlab and create a clone with the appropriate command, i could deal
> with that, but having the ability to simply ask for the project name is
> more than a little useful.

I think we shouldn't underestimate how names are a social construct, though: 
the current flat structure comes after a structured SVN naming epoch. But I'd 
totes +1 a search-and-redirector, especially if it means I can write `git 
clone kde:peruse` and the resulting .git/config has followed the redirects and 
whatnot and ended up with `url: kdeforreal:audio/peruse`

(That said, bigflatlistofrepositories.kde.org .. or maybe call it cgit.kde.org 
.. could be a particular view onto gitlab which does flattening and search, 
but only if there's people around to create it and maintain it)

[ade]

signature.asc
Description: This is a digitally signed message part.