[Kde-scm-interest] Accountability, concrete suggestion
Thomas Zander
zander at kde.org
Thu Jul 31 17:25:57 CEST 2008
On Thursday 31. July 2008 16:06:16 you wrote:
> On 31 jul 2008, at 15:07, Thomas Zander wrote:
> > When Diana makes several translations she does this on a git
> > checkout. She
> > then commits her changes and emails or pushes her changes to Carlos.
> > Making a commit in Git is something that is done in several steps
> > and the last
> > step is to create a commit message. Diana will use a way of
> > committing[1]
> > that takes the commit message, the tree (including her changes) and
> > her email
> > address and it will gpg-sign that information.
> > This signature will be added to the logmessage, probably as a one-
> > liner of
> > ascii data.
>
> If you want to sign the tree that includes Diana's changes, you have
> to make
> sure that you also know on which tree the changes were applied.
Both this is present in the sha1 of the tree.
> and if you apply
> the patch
> on a different source tree, you will get another final tree, and the
> sha1 will
> not match
That is intended.
A patch does not stand on its own, a patch that changes a value from one thing
to another depends heavily on the rest of the tree. If you insert a
not-so-random patch before the otherwise completely sane and correct fix
would end up being a malicious one.
> Why not use a hash of Diana's patch instead of the final tree? That
> way the
> patch can be applied on every tree and still retain a valid sha1.
Because the signature is about the intended result, not about the change in
itself.
> Don't you think all this signing off will make it harder for first-
> timers to
> send in a patch? Or is this purely optional, for people that don't
> have commit
> access but don't want to put the responsibility on the maintainer?
Indeed, it is purely optional. I can accept patches from known committers and
not bother with this extra step.
> Why
> not
> give them commit access?
Several reasons, gpg is much easier to get your hands on then getting a new
account. So it lowers the barrier to entry. Especially for first time
contributors that need a mentor anyway.
Second reason is that in some countries the connectivity is much lower then it
is here. And having a way to email your patches instead of having a stable
ssh connection to push your changes is just the only thing that is practical
for them.
But, please be clear, this is just an *extra* way of allowing people to work
in KDE and making sure we are ready for it.
The direct connection method we use currently will most likely be the
preferred way for all current contributors.
> > Ok, back to our Carlos usecase; Diana created the patch, she signed
> > it and
> > then pushes it to Carlos. Carlos checks the signature using some
> > custom
> > script to make sure the commit really is from Diana and he merges it
> > into his
> > tree.
> > At a later point he pushes all the changes he has, including the one
> > from
> > Diana, to the kde-server.
> > The commit is registered by the kde-server as being made by Carlos,
> > but Carlos
> > can point to the signature to indicate that, really, Diana was the
> > one that
> > made this commit.
>
> Have you thought about using person-specific branches? For example,
> let's take
> the previous use case with Diana. Diana does not have push access to a
> specifc
> project, but she does have push access to her own namespace (branches/
> diana/*
> perhaps). She pushes her change to her own branch, and asks Carlos to
> pull it.
> Carlos merges the branch, and pushes it. The server-side hook can see
> that the
> patch originated from diana's namespace, and give accountability to her.
The server side hook is based on the concept that we trust the server. And by
extension we trust the person that pushes to indeed be whom he authenticates
to be (using ssh for example).
This trust only works on a server that the kde sysadmins host. So the question
you post balances on the server actually used by Diana.
If she uses a kde server, then yes, we can have a logging branch for her
project.
If she doesn't use a kde server then the logging branch solution is useless,
signing is the only way to get accountability for her.
What Thaigo and me discussed for this usecase resulted in two answers;
* we can have a button on a webform 'integrate' and the server will be able to
merge from Dianas' repo to the release repo and keep the logging history.
This however is very scary due to the fact that auto-merges can go wrong, even
if no merge conflicts appear. So having a server do this automatically sounds
wrong.
Just to state the obvious; we can't pull from the server, merge locally and
then push and then expect logging info to not be lost. There is an untrusted
step in the process (user doing local mergin).
* When Carlos pushes a branch of changes, from Diana or anyone else, Carlos to
takes responsibility for all those patches by pushing. This is similar to you
committing a patch that someone emailed you.
I think there are some possibilities to retain accountability of commits that
come from a forked repo on the kde-server. But its ongoing research ;)
--
Thomas Zander
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-scm-interest/attachments/20080731/a7ecdbb6/attachment.pgp
More information about the Kde-scm-interest
mailing list