Contrib
Mads Kiilerich
mads at kiilerich.com
Sat Feb 6 11:05:57 UTC 2010
Revisiting an old thread I haven't given up on ...
Was Re: [PATCH] mercurial.spec: Install mq.el, hgk requires tk,
uncompressed man pages
Matt Mackall wrote, On 01/06/2010 06:05 AM:
> On Wed, 2010-01-06 at 03:01 +0100, Mads Kiilerich wrote:
>
>> I don't understand what the contrib folder is for. Is it unsupported or
>> undocumented? Broken stuff? The place where all contributions go? Or
>> just a place where random things are dumped and forgotten? I don't think
>> anybody would benefit from just including the whole contrib folder as-is
>> in the installer/package.
>>
> It is unsupported and largely undocumented, and yes, some things in
> there are broken. But most of it is potentially useful.
I fail to understand how that situation can be appreciated.
Contrib contains stuff which is an essential part of Mercurials
offering, and people expect it to work. Installers and binary packages
have to include parts from contrib, but taking unsupported and largely
undocumented stuff and mixing it with the good stuff and pretend that
all of it is supported is not a good solution.
Much of the content in contrib do have a quality similar to the rest of
Mercurial - and if it is of lower quality then it is often because it
lives for itself and doesn't get the attention it deserves. It doesn't
pop up when searching or browsing the code, it isn't integrated in the
test suite (except for dumprevlog and simplemerge), and there is no
expectation that contrib is maintained like all the other code. The name
"contrib" hints that it is a "somebody else's problem field". It seems
like a mess where nobody has any obligation to clean up.
Years ago it kind of made sense to include incomplete or experimental
code temporarily in contrib, but now there are so many places small
projects can be hosted that that probably is a better solution in some
cases.
I suggest and ask that we make it a long-term goal to make contrib go
away, by making its parts either fully supported and documented (and
moved somewhere else) or removed.
I understand that something might be impossible to change because they
are widely used and relied on. That indicates that it to some extent is
supported, and also points out how important it is that these parts get
proper support and a good stable location.
A quick analysis of what currently can be found in contrib and what
could happen:
CONFIGURATION - installers can install to /etc/mercurial/hgrc.d/*.rc:
mergetools.hgrc # rename to .rc
sample.hgrc # rename to .rc
LIBEXEC - executables, but not necessarily in users PATH, move to bin or
libexec folder:
# usable user commands
hgdiff
simplemerge
convert-repo # usage? replaced by extension? remove it!
# server commands
hgwebdir.fcgi
hgwebdir.wsgi
hg-ssh
hgsh # still used and maintained? drop!
# advanced tools
dumprevlog # +x
undumprevlog # +x
rewrite-log
shrink-revlog.py # remove .py file extension
# extension helper
hgk # must be in path or referenced by hgk.path (but should probably be
deprecated now)
git-viz # dead? remove it!
tmplrewrite.py # usage? outdated! remove it!
EXTENSIONS - put them in hgext, perhaps give them a debug-prefix and
hide them from the extension list:
memory.py
perf.py
INTEGRATION - binary packages should include and install these when and
where appropriate:
bash_completion
tcsh_completion
tcsh_completion_build.sh
zsh_completion
mercurial.el
mq.el
vim # getting upstreamed
DOCS:
logo-droplets.svg # move to doc folder
python-hook-examples.py # move to wiki
xml.rnc # move to doc folder (or to mercurial/templates right next to
map-cmdline.xml and template-vars.txt)
INSTALLERS - meta content and scripts - move to installers or build folder:
buildrpm
mercurial.spec # -x
macosx/Readme.html
macosx/Welcome.html
macosx/macosx-build.txt
win32/ReadMe.html
win32/hg.bat
win32/mercurial.ico
win32/mercurial.ini
win32/mercurial.iss
win32/postinstall.txt
win32/win32-build.txt
/Mads
More information about the Mercurial-devel
mailing list