Parameter names - bug 155628
Jouni Heikniemi
jouni at heikniemi.net
Sun Dec 19 08:08:21 UTC 2004
Shane H. W. Travis wrote:
> Dave asked that I solicit opinions from developers. I cc:'d a lot of people
> when I wrote up my intent to fix this bug, but this is probably a better way
> to get comments.
I wrote some of my comments to the bug, but I'll repost them here to
join your nasty little conversation :-)
--
Having given this some thought, it looks like params rewrite (bug 46296)
is going to remove the immediate user-wise effect the param names have.
However, it is also true that many of the params have a significant
effect in the code. Striving to clean that up is a worthy aim, and one
that cannot (or even should not) be easily done with the other patches.
However, changing the names is a considerable headache for customizers.
We should start this work at the beginning of a new version cycle (after
2.20 has branched) and try to finish it prior to 2.22 going to rc. That
said, a single patch would be totally hellish. Also, the changes we make
here should also be simultaneously used for cleaning up the semantics of
the parameter names - while some of the issues below may sound cosmetic,
I don't think we're going to have as good a chance for fixing up these
cosmetics as we're going to have now if we start adding underscores anyway.
About the variable names: There are multiple inconsistencies in the way
the params are named. I believe we should work towards unifying some of
the param naming concepts (and perhaps documenting them in the dev
guidelines as well)while we're at this. I'm referring to following kinds
of issues:
- param names should be in lowercase (LDAP_foo are the only exception)
- the feature-enabling booleans could be named more uniformly. Although
there is a semantic difference between "allow..." and "use...", in
practice these options often come very close to one another. Perhaps it
would be cleaner to have a simple naming scheme for these; I suggest
"enable_xxx". Things like support_watchers and musthavemilestoneonaceppt
also belong to this group.
- The "require"-params (such as commentonaccept, noresolveonopenblockers
and stuff) should have the "require_" prefix to make it clear what they
actually mean.
- Since we're not going to have the pref names user-visible for long, we
could just as well make them verbose enough to be clear in the code.
Stuff like "makeproductgroups" should be expanded to
"automatically_create_product_bug_groups" or whatever (that example
might've exaggerated things a bit, but I believe the idea gets through:
Some of the params have such esoteric names that even the developers
can't remember their semantics. Although names shouldn't contain
documentation, they should contain a really good indication of the
meaning. Another example of the need is "usemenuforusers"... eww.
- Some prefixing to group the properties together would be preferable.
For example, the authentication related params could be grouped under
the "auth_" prefix. We already have this for some of the params, but
LDAP stuff could be prefixed as well. Another candidate would be mail
related params (mail_ prefix), even though many of them (the template
related ones) are going away anyway.
All that said, I feel it would be appropriate to first give some thought
to the generic param naming guidelines, then make this a meta bug and
start renaming the params in some reasonably sized groups, each of this
work progressing in a separate bug. That way, if some discussion on a
certain param's new name rises, it will be contained in a reasonably
small bug (instead of this becoming a 200+ comment monster á la bug 84876).
--
An aliasing layer is of course a good idea, regardless of whether we
just go and throw in some underscores or go for a broader renaming session.
As a side note, it's again an interesting situation. There are two
fundamental mistakes that loom here: One (the one we make every now and
then) is requiring such perfection that nothing gets done; the other one
(not usually bothering Bugzilla) is allowing sub-standard solutions to
pass simply because that's everything offered at the moment. Striking
the balance between those two requires the ability and desire to
negotiate, from every person involved. Descending into a flame war
almost inevitably means ending up at either of the mistakes outlined above.
Jouni
More information about the developers
mailing list