On 15/07/13 01:02, Lech Lorens wrote:
On 14-Jul-2013 Bram Moolenaar <[email protected]> wrote:
Ken Takata wrote:
When I run the test 98 with gvim, it stops at the last line of test98a.in.
call feedkeys(":setl scb\n\<C-w>\<C-w>", 't')
It seems that feedkeys() works different on CUI and GUI.
I don't know why the difference occurs, but using feedkeys()
is not necessary for this test. I think using "setl scb" and
"wincmd w" is enough.
Please check the attached patch.
Thanks. I also have no clue why feedkeys() was used here.
Ken: sorry for including you here, even thought only a tiny bit is
a reply for you.
I have been thinking about writing this email for at least a year now.
This patch is the straw that breaks the camel's back, so here it comes.
feedkeys() is essential there.
Try re-running the test without the fix that was introduced along with
the test. Magic: the test succeeds even without the fix!
It took 9 days for the fix to be accepted for inclusion because you,
Bram, asked for a working test (one that would fail without the fix).
Now it takes 40 minutes (!!!) to have a patch included that breaks the
test and makes all my effort (I wrote how I needed to use gdb to come up
with a method that would reproduce the problem in a script) go to
a waste.
I know, my bad for not putting in a comment, but the patches are
micromanaged to the point that the name of the file test96extra.in gets
renamed to test98a.in yet the very point of tests gets lost after only
4 days (!!!) since inclusion! That's less time than it took me to
prepare the bloody test!
Bram, don't get offended, I actually do hope that one day I will become as
competent a programmer as you are, but still I think Vim's development
process is severely broken:
- the single point of failure (Bram),
- how the decision what gets included is made with the community totally
oblivious,
- we don't have a development branch of Vim because we want stability.
Therefore the unaware users are without a single warning presented
with 7.3.970 which breaks half of syntax scripts, makes the rest 10
times slower, breaks regular expressions and introduces random
crashes. Only after a number of patches and becoming stable is the
only branch renamed to 7.4 alpha!
- we manage patches as files (as opposed to the distributed VCS way:
pull requests) because it allegedly "just works". Yet there was
a spell of a few weeks where every single week there was at least one
patch which was either applied twice, applied only partly or applied
to a wrong part of code. How can it "just work" if it so obviously
doesn't work?
All this means that a lot of effort of developers goes to a waste:
- because Bram can't (how could he possibly? He's a man: he needs to
eat, to sleep and to rest) evaluate all the possible patches and they
are added to the mythical todo.txt which means their changes of
getting included drop to almost 0,
- even though a patch got to todo.txt (and therefore will not be
included) people still work on it because they believe it will,
- people prepare a patch to fix something, a fix is published but the
solution has been totally rewritten; not a single word of explanation
is given,
- people prepare a patch, it gets included but for some reason the bug
doesn't go away. I recently had to re-debug Vim after my fix got
included only to discover that a line from my patch was not included.
The funny thing was that I did include a test and this single stable
branch of Vim was published with a failing test.
For some reason how people waste their time is OK because they volunteer
to waste their time, they are the guilty ones. But it also means that
Bram's time gets wasted:
- he needs to update todo.txt,
- he won't explain what was wrong with a patch so people will submit
those incorrect patches which Bram will have to rewrite,
- he needs to fix the problems with the mis-applied patches.
I used the pronoun "we" to mean "community" but the sorry state of Vim
development community is that IT DOES NOT EXIST. "Community" implies
a N-to-M relation between its members where N,M > 1. Here it's
a one-to-many relation between Bram and multiple patch submitters
because Bram has to evaluate every single patch. This means there's very
little incentive to examine each other's work (I will check your patch,
this way you will be more likely to check mine). That's why these
I-would-appreciate-it-if-some-people-tried-it-out emails from Bram get
so little response (and because people know that their work might go to
a waste). People work to scratch their own itches; there's no point in
scratching the itches of others.
I could write more but I think there's no point – this already got quite
long. I believe these things drive people away from Vim development or
make them one-time contributors. There used to be a nice small community
of contributors to vim-extended. We produced a number of stable, well
tested (we – as in more than an I – used them on daily basis!) features,
most of which got abandoned (because there was no change of them going
into mainline Vim. Instead the (still buggy) conceal feature got
included because someone convinced Bram it would be nice to be able turn
a text editor into e.g. a web browser. Some bugs simply got renamed as
features and everyone's happy.
I don't know why I'm writing this. I don't hope this email will change
anything. I *AM SORRY* and perhaps I believe that sharing will somehow
help me. I am a contributor of around 50-100 patches to Vim, I've been
here for 5 years and I don't feel I'm being taken seriously. I know
there are many others that will come and replace me, people whose work
could replace what I have done (I have seen one of the issues in
todo.txt solved 3 times before it got removed from todo.txt) but this
doesn't make it any less wrong. I don't deserve it. And I don't deserve
to have this email ignored.
Lech Lorens
I wouldn't say Vim development is utterly broken. Your rant above raises
some valid points, though others are exaggerated. The conceal feature
had been an unofficial patch since 6.2, maybe earlier, until finally
finally it got included in 7.3. Similarly the second half of the
floating point feature had been an unofficial patch, though not as long,
before it got included. In fact, Vim 7.3 was "enriched" with quite a
number of features which had existed for some time as "unofficial
patches", and been included /à la carte/ by a significant minority of
users. OTOH inclusion of the NFA engine, especially as "enabled by
default", seems to me to have been a hasty decision. This said, when you
say that "the development community does not exist", I think it is a
gross exaggeration. I see a lot more patches being proposed in vim_dev
nowadays than I used to see some ten years ago. Of course they aren't
all 100% perfect from day one, but that's the nature of bug fixing. And
yes, the bug fixing tends to be many-to-one rather than many-to-many but
sending bugs and proposed patches to the list (rather than by
confidential email) leaves the possibility open of having any patch
checked by someone other than Bram before it gets incorporated in the
code. Even so, the process is not strictly unicentric: Björn Winckler
(for the MacVim GUI) and Chip Campbell (for several runtime scripts) are
quite active (especially if you include vim_mac and vim_use in your
activity statistics) and there are "maintainers" for other parts of the
code (e.g. Nadim Shaikli for the Arabic module) who are less active
day-to-day but are still listed as maintainers.
Yes, I think Vim has grown, or will soon grow, to the point where at
least two pairs of eyes on every changes would be a useful development
feature: Here is what we have now (for C modules):
case 1:
- Someone reports a bug.
- Bram writes a patch.
- The patch gets included.
case 1a (variant of the above):
- Someone reports a bug.
- Bram adds it to the TODO list.
- A few years later, Bram writes a patch.
- The patch gets included.
case 2:
- Someone finds a bug, or decides to tackle a TODO list item, and writes
a patch, which he sends to vim_dev.
- Bram reviews the patch, possibly alters it a bit, but does not explain
what was wrong.
- The patch gets included.
The two-pairs-of eyes system has arguments for and against it. Here is a
possible procedure, as an alternative to the above. Vim "developers",
feel free to tear it to shreds:
1. Someone reports a bug and sends it to the vim_dev list.
-- Between steps 1 and 2 some time (years, even) may pass. I guess some
discussion might happen (is it a bug or a feature? Shall it go on the
TODO list? And how high on the list? Probably unclassified until a
consensus emerges.)
2. Someone (the same or another) writes a patch, and sends it to the
same thread of the list, asking (by name) someone known to be
knowledgeable about that part of the code to review it. (For code
written by someone else than Bram, the reviewer would most often be
Bram, but not necessarily. Code written by Bram would ideally still have
to be reviewed by someone else.)
3. The reviewer passes or fails the patch. An r- mark is always
accompanied by an explanation of what is wrong, an r+ may be accompanied
by a remark about something which should be corrected but doesn't need
re-review.
4. If r- the patch author makes the necessary changes (and fixes any
errors that he found himself by rereading or testing) and sends the
corrected patch back to the reviewer. Go to step 3. If r+ the patch
author fixes any remaining small nits and sends the patch to Bram (or to
someone with push permission on the master repo, but at the moment that
means Bram).
5. Bram has a right of "superreview". He doesn't have to spend time
checking every patch in full detail (he checks those where he's been
chosen as "reviewer", or as "additional reviewer" if the first reviewer
feels not fully competent, and any additional bugs which feels like
reviewing) but if he notices something wrong with a patch, it's back to
step 3, with explanations about what is wrong. Otherwise the patch gets
checked in.
This is only an outline. Some parts of the code (mostly in the runtime
files) already have "owners" (the so-called "maintainers"); similarly,
most of the C code is Bram's responsibility (but not all of it, see
above). It might be useful to find people whom Bram can trust (with
review) for some specific parts of the code; similarly, if some existing
maintainers find someone they can trust as "vice-maintainer" if
something happens to them, why not?
The advantage of this procedure is that several pairs of eyes are better
than one to catch bugs. But there are disadvantages:
a) It's slower than what we have now.
b) It floods the vim_dev list with discussions back and forth about each
and every bug, and that might be too much for which some users, even
some "technical" ones.
I think that (a) is inherent in any procedure where more than one pair
of eyes have to see every change; IMHO it's the flip side of trying to
catch more bugs before they get into the code.
About (b), I want to stress that the back-and-forth discussion is
necessary from a pedagogical point of view (people interested in fixing
bugs in some particular part of the code get to learn the ins and outs
of that part "at an elder's knee") and from a redundancy point of view
(everything is checked at least twice, and no change goes in
unreviewed); but I can imagine that it list flooding might become a
problem at some future point; we would then need a "real" bug tracker,
which doesn't send all bug-fixing discussions to the one list, but only
to the reviewer, the patch author (if any), and anyone having expressed
an interest (or been asked for advice) about the bug, or about the part
of the code the bug is in. Maybe (but it doesn't have to be implemented
immediately) something like Bugzilla, which is widely known and much
used (by 1268 companies as of 10 May 2012, according to
http://www.bugzilla.org/installation-list/ ). However I don't know how
heavy Bugzilla is in terms of infrastructure; but I think this is a
long-term evolution.
Best regards,
Tony.
--
If you've done six impossible things before breakfast, why not round it
off with dinner at Milliway's, the restaurant at the end of the universe?
-- Douglas Adams, "The Restaurant at the End of the Universe"
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.