Post by Otto KekäläinenCurrent https://dep-team.pages.debian.net/deps/dep14/ states that the
In Debian this means that uploads to unstable and experimental should be prepared either in
the debian/latest branch or respectively in the debian/unstable and debian/experimental
branches.
...
The helper tools that do create those repositories should use a command like git symbolic-ref
HEAD refs/heads/debian/latest to update HEAD to point to the desired branch.
Within the omitted context, this seems clearly to me to be just an
example on how to point the HEAD to the default branch, and not a
declaration of what constitutes the default recommended branch in
that DEP.
I assume that this, and that debian/latest is the first item on the
alternative recommendations on that DEP, is the reason you have been
going around claiming debian/latest is the primary and recommended
default by the DEP (which does not seem correct), as a way to push for
this (which does not seem right), and where there is no consensus nor
agreement. Even after being told so by multiple people, and where even
a recent comment in that direction on a thread you participated in
earlier, could be:
https://lists.debian.org/debian-devel/2024/08/msg00260.html
And where similar sustained objections to the naming and workflow have
been popping up every time this has been brought up.
Post by Otto KekäläinenI would be curious to hear why people are *not* adopting 'debian/latest'?
[ The following is heavily adapted from a comment from a Go team MR. ]
In the Debian context «latest» seems like a very confusing and ambiguous
term as its meaning imposes an ordering, and because while latest refers
to the most up-to-date or recent thing, when we are talking about software
development and where multiple development branches are possible, the term
can be taken in absolute or relative terms. It could easily refer to the
latest changes in absolute time (which can also be either packaging
commits or upstream releases or snapshots), or it could refer to the
latest changes relative to a specific branch (say latest from sid or
latest from experimental, or say the latest upstream 5.x release when
upstream also has a devel branch or a 6.x branch or similar).
Because of the ambiguity of the term in this context, using debian/latest
does not generally make the development workflow obvious:
* If it is about latest in absolute terms, then if you ever need
concurrent sid and experimental development, then the debian/latest
branch would need to flip flop between these depending on which one
is the most recent (also most recent in packaging terms or upstream
terms?) at the time (which seems rather broken and a mess of history,
or it would become a misnomer). Or you coerce the development into a
single branch and declare that no uploads to sid can ever happen while
the branch is sitting on experimental (which seems rather bad?).
* If it is in relative terms, and:
- debian/latest always tracks for example the sid suite, and then
there is a debian/experimental branch with all recent activity,
then debian/latest can be easily argued is not the latest both in
relative nor absolute terms;
- so it seems that the workflow that makes a bit more sense for
debian/latest is to track either sid or experimental suites
(whatever is newer, again in what terms?) and then possibly have
a debian/sid branch to track changes in sid while debian/latest
is sitting on experimental (this can still be argued to be a
misnomer when the debian/sid branch contains newer commits, even
if it's sitting on an older version!). But then when debian/latest
is sitting on sid, then this either requires the overhead of
continuously merging changes from debian/latest back into
debian/sid to keep the branch alive, or to leave it as a dead
branch while debian/latest takes its role, which is also confusing
(because sid in the archive is always active, while packages in
experimental can get pruned).
The problem with that latter workflow is that, the usual flow into a
Debian stable release is through sid, and experimental tends to be used
for multiple purposes ranging from preparing upcoming work, either new
upstream development branches, or to stage some possibly disruptive
change, a transition or for NEW processing to not block sid, or for
short-lived discardable experimenting, etc. In addition sid does not
necessarily have an ancestor relationship with experimental, the
histories can be decoupled, and the process of moving something from
experimental requires human consideration and intervention, and it
might actually end up never happening, so there is no natural automatic
flow like from unstable to testing. And still the problem is that the
debian/latest name does not imply any specific workflow, nor does the
DEP for this naming.
In a context where there is only ever a single line of development
(such as downstreams with no unstable/experimental package development
branches), using a single «<vendor>/latest» makes way more sense. I
also think that there are going to be situations in Debian where
a «debian/latest»-style workflow might make sense from a workflow point
of view for some teams with specialized workflows (where upstream have
a predictable release cycle, or where you only ever commit safe and
releasable stuff but do not know beforehand what the next target suite
should be, for example) or for some people (there were some cases
presented in this and previous d-d threads) that think they will never
need experimental (which does not really seem future-proof, and then
debian/sid would work as well). So I think it makes sense to allow for
this (probably with a specified detailed workflow, but still with
qualifications and explaining all the context-specific problems with
that workflow and naming), and AFAIUI these were the primary reasons
«<vendor>/latest» was added (*not* as a preferred workflow or naming,
but as an acceptable alternative).
But unconditionally using a naming and workflow that lands people by
default into a branch potentially pointing to experimental content of
a random nature with who knows what kind of state present there, does
not really seem wise and looks like a very poor general default. Where
users/developers should (in the most general case) be landing on the
sid branch which is what is targeted for the next stable release and
is what is always active, and not something potentially containing
stuff targeting experimental (if the debian/latest branch has to keep
flip-flopping to honor its own name) with an unknown state that might
be blocking immediate uploads to sid. In the same way experimental
has a very low apt pin even if you add it, or you can think of this
also as if in unstable w/o any configuration «apt source something»
automatically picked sid or experimental depending on whatever is
the latest (unpredictably either based on version or on freshness,
depending on the source package).
The usual upstream names main (or master, even with this one being
phased out) to designate the primary development branch are a bit
less problematic (because they do not impose an order), but then they
also do not unambiguously imply a specific workflow, when just looking
at the names. (For example I use main for non-native packaging where
that implies sid, and any experimental work is always in an experimental
branch, so I guess I'll ponder about namespacing with debian/ and to
use debian/sid to make this more clear.)
This also ties into the upstream/latest naming which seems as
problematic. On one hand due to the same reasons debian/latest can be
problematic, where following the upstream branch name makes more sense
to me (instead of latest); and on the other because the upstream
branches are really vendor specific, where debian/copyright
Files-Excluded and Files-Included control their contents, so not
vendor-namespacing them by default seems also wrong. And thus, if
the upstream branches were vendor-namespaced that would also suddenly
make the upstreamvcs remote rename completely unnecessary, and would
get rid of people's objections to its apparent ugliness, which I think
is more a symptom and a gut feeling that there's something wrong with
the proposal being pushed.
So in summary, I think that in the Debian context the «<vendor>/latest»,
«upstream/latest» (and even «<vendor>/main») are confusing and ambiguous,
or potentially not future-proof, and do not imply a specific workflow
just by looking at the name, and do not map clearly into the
sid/experimental dichotomy. Where an explicit debian/<suite> or
debian/<codename> is always going to be in general the more obvious
(self documenting), consistent (matches the pattern of say
debian/bookworm), simpler workflow, which matches the Debian archive
and release cycles. And thus I strongly object to debian/latest being
so aggressively pushed as some kind of good general default and
preferred naming and workflow (which it is not even on the DEP!). But
to repeat, I think it's perfectly fine for teams/people that want to
use it because they have specialized needs or they prefer it for
whatever reason!
I also have a strong issue with the apparent effort to tilt the usage
numbers, and try to change all defaults, with phrasing such as
"not being modern" (?!), where I expect then the other namings and
workflows can then eventually be declared "old" or "wrong" and then
banned. Which does not seem very helpful, the consequence of which feels
like it will be to make people packaging more miserable. Instead of
proposing something and letting people adopt it if they think it's an
improvement over what they currently use. :/
Post by Otto KekäläinenThe DEP-14 has been around since November 2014 and one would think
that DDs would have adopted 'debian/latest' as the default branch and
git head now. Since 2020/2021 the whole 'master' was deprecated in
favor of 'main' by most git services and tools, yet 'master' is still
the most popular one in Debian.
Git is a great tool for collaboration. It is sad to see that in Debian
usage of git is stifled by simple things like people not agreeing to
use a common branch naming scheme despite there being a proposal for
10+ years now.
This has been pointed out else-thread, but just want to echo that the
way this is writing is rather misleading.
Thanks,
Guillem