Changes to our Git infrastructure
mitchell at kde.org
Mon Dec 29 17:13:38 GMT 2014
On 29 Dec 2014, at 11:36, Jan Kundrát wrote:
>> As I see it, scratch repos are the first stage in a project's life
>> Before playground, you might fiddle with something, drop it in a
>> repo and share the link on IRC. Deleting it is painless when you
>> that your idea is terrible, or already exists elsewhere.
> I agree with scratch repos being useful as a first step.
Except nobody deletes it. That's a large problem. Scratch is nice in
concept but it's a sysadmin nightmare.
Out of the 846 repos I currently count in scratch/, nearly all of them
haven't seen a commit in years. Meanwhile that's an extra 846 repos that
have to be hosted, distributed to anongits, and backed up. That's not
just a lot; that's the largest piece of our Git hosting. There are more
scratch repos than normal repos. If clone repos were excluded, scratch
repos would actually be a majority of all repos -- and again, most of
them haven't been touched in years. People complain about propagation
delay of repos to anongits -- syncing all these totally outdated repos
is a major reason.
I understand the reason people like them -- as a place to test out early
concepts before making them official projects -- but I think that a
combination of social changes and technical changes can address losing
One social change would be divesting ourselves of the idea that getting
a Git repo from sysadmins is onerous. You can start a git repo locally
and push it up later; the extra few hours or even a day it might take to
get a hosted version should really not be the reason that your project
simply cannot see the light of day.
Another social change, in combination with a technical change, would be
to get interested people who would like to see this kind of thing happen
faster and have them take on specific sysadmin tasks -- for instance,
creating repos on request as soon as possible, spreading the workload
out so that any given request is likely to be handled faster (your
standard task queue). The reason it's semi-onerous now (but we should
stop thinking that it is, see above) is due to lack of manpower. But
volunteers can be given rights to handle specific ticket types without
having to become full sysadmins. Like anything else, if people think it
takes too long, get involved.
Clones (336 of them) are also nice in concept but with better code
review and/or auditing capabilities (especially pre-commit
capabilities), I think they will become less important, and remarks on
this thread seem to back that idea up. On GitHub they're mostly used to
prepare branches for merge requests because random user X can't commit
to a branch in repo Y, but KDE's open-to-all-by-default policy, and
generally decent project communication (IRC, mailing lists, and other
means), makes that less necessary. Approved developers discussing
improvements with developers are more likely to get approved to have a
branch in the main repo; tiny fixes can be approved via a pre-commit
audit. IOW, I think losing clones can be dealt with by some reasonable
workflow rejiggering and social engineering.
Remember, we don't have the resources of GitHub or Bitbucket. No
solution will be 100%. We're trying to decide what solution will, on
balance, be closest to that 100%. But this also needs to factor in
actual sysadmin time constraints/availability.
Sorry to be the sad-sack voice in this conversation. Ben and I have been
having many conversations about alternate hosting mechanisms over the
past few days, weeks, months, and (yes, really) years, and he's
definitely Good Cop and I'm definitely Bad Cop when it comes to meeting
every single desire of every single community member. We'd both love to
do it (again, really), but I'm trying to be pragmatic, not the least
because my availability is very hit and miss now and so even more burden
falls on Ben. I don't want the minimal sysadmin staff we have getting
crushed by the weight of requirements. Again -- I'd like to see us get
as close to 100% as possible, and I think that some features that a few
people find very useful -- but that can fairly effectively be addressed
through other means -- and that cause amazing amounts of sysadmin and
system burden should be up on the chopping block unless there are truly
compelling arguments against.
More information about the kde-core-devel