On Wed, 2022-11-30 at 21:59 +0000, PlusNET: Subs wrote:
>
> [ ... list of steps involved in contributing ... ]
>
> a) clone the required code from git://sigrok.org/repository-name to
> local disk (note, not Github)

You can clone from anywhere you want to. Can be sigrok.org, can
be github.com, can be anybody else's repo that you happen to
find. That's the point of git, it's a distributed system (DVCS).
>From the tool's perspective none of the repos is special in any
way. It's just a convention among humans to consider one of them
canonical, which is sigrok.org in this project's case.

All you care about is: Start your contribution from (base it on)
recent master of sigrok.org, i.e. the tip of what the project's
current state of development is. "Falling behind" a little bit
because sigrok's master moves while you are doing your work is
usually not a problem. Only when conflicts arise that recipients
cannot resolve, this will be when you are asked to rebase to
something more recent. But it's rare.

When you depend on sombody else's work, then state it clearly.
Either take "kind of stable" versions of theirs through your
tree, or document that dependency. Though it's also rare that one
contribution strictly depends on another and does not include the
base which they depend on. Because then the contribution would
not be usable as is.

> b) make an host a publicly accessible copy of it (on Github?)

Make it available at any public location. That's the only
requirement. Again, can be github.com, can be repo.or.cz, can be
gitlab or bitbucket or gitea or sourcehut or whatever you happen
to use. Just any public git repo really. (I'd assume wikipedia or
the git homepage to have a list of hosting sites that were known
at a given point in time. Could be incomplete, or could have gone
stale or outdated, but should give you the idea that github is
just one arbitrary hosting provider among others.)

Or could be the mailing list. Though it's rarely done in the
sigrok case, since the list is mostly used for users and their
support requests, sending a patch or a series to the list _is_
one of the options. Fulfills the requirement of "anywhere public,
where others can access it".

Of course you would not send patches or patch series (that is:
lengthy files) to the chat. But you can send URLs there which
reference any public git repo.

See the pattern? Just "make it available to others", that's it.

> c) modify or add to the code as required
> d) commit changes locally

Yes that's normal VCS use. In the case of git or DVCS in general,
you'd do local development, and once you are "kind of done" and
want to publish something, you'd push it to a public place where
others can access it. See above for options.

> e) when ready, submit a pull request

Speaking in most general terms: You "announce" the availability
of what you want to submit. To wherever the project typically
happens to communicate.

This "pull request" approach seems to be some github specific
thing, at least in the form that most users' questions refer to.
The git utility itself has some pull request feature but it's not
what people usually are asking about (see man git-request-pull
for a description), and confuses those who think that github is
the only way of doing something.

So what you do is: Push your locally created, or locally modified
version to somewhere public, and (re-)send the URL to the chat,
or (re-)send the URL or the series to the mailing list, or create
or update some github style pull request, or essentially use any
communication channel that's available.

> f) for the review stage, anyone can go to the relevant Sigrok
> repository* and review the submissions

Any number of people could then learn about the submission's
existence, and respond in any way they feel like. That's again
the point of git, it's a version control system. Not a wiki, not
a bug tracker, not a collaboration suite, not a product lifecycle
management system, not a website creation utility. Just a version
control system, which leaves you the freedom to communicate in
any way that you prefer. Some projects exclusively use mailing
lists, others use github style hosting services, some support
several of these approaches.

Some of the channels may be preferred when multiple are
supported, or the probability of getting feedback could be higher
in some of the channels, depending on their characteristics. But
that's neither new nor specific to the sigrok project.

If you feel that you "must" use github, go and do that. I'm not
stopping you from doing that. Anybody else who feels that github
is great can go there and communicate to you there. My dislike
should be of no concern to anybody else. That'd be strange, the
community is supposed to be larger than that one individual. But
we had this before. Do as you please.

> g) contributor reviews comments and makes changes and the commits -
> we go back interatively to (d) until everyone is happy

Yes that's the iteration through review/feedback cycles. Which
should result in the availability of improved versions of the
submission. Issues get addressed as they get identified and an
approach for them is found. Nothing special again. Normal
software development work.

The "everyone is happy" result would be ideal. You often see
submitters discuss whether they really need to improve their
submission. Or frankly state that they lost interest in the
subject. That's another (not uncommon) way of ending the cycle.
You will also see submitters not being aware of or familiar with
the necessity of improving their submission until it becomes
acceptable. That's when any number of people can help as they
become aware of that situation.

When you push to public git repos, please don't force push.
That'd destroy information which recipients are working with, and
is frowned upon. Provide "parallel"/sibling branches instead as
you push new/different versions of the submission, so that
reviewers can see what has changed between versions, whether
feedback got addressed and how so. Name these branches so that
reviewers can tell them apart. A simple approach is to append
-v1, -v2, etc to their names. Or don't, ignore recipients' needs
and add extra work on them, and see if they want to keep helping
you.

It's OK to append new commits to the end of the current series.
But eventually the series should get reworked so that it can get
taken as is. Also simplifies review when clutter is kept to the
necessary minimum.

> h) at some point developers accept the code, tag it and merge it
> into the project

That is "take it"? Because no tagging is involved in the pick up.
In git terms it's a fetch and (fast forward) merge that is done,
to integrate an external submission into mainline.

Adding unnecessary work at this point to those who take the
submission is a means to decrease their willingness to do it. Not
using git at all, piling up dirty commits and not cleaning them
up, not providing a minimum of essential information, etc etc all
reduces the probability of having the submission taken. But that
shall not be a surprise either.


Need I repeat it? This is my personal perspective as a user of
the sigrok project, matches what I have experienced in other
projects as well, etc etc. If you want the official project's
statement on this, ask somebody who represents the project.


virtually yours
Gerhard Sittig
--
     If you don't understand or are scared by any of the above
             ask your parents or an adult to help you.


_______________________________________________
sigrok-devel mailing list
sigrok-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to