On Apr 13, 2009, at 5:31 PM, Chris Little wrote:

Jonathan Marsden wrote:
Matthew Talbert wrote:
I subscribe to sword-svn as an attempt to educate myself on the
library, and, of course, to keep track of current changes. It would be
a real help to me if the commit messages were longer and more
informative. As I am very new to a lot of the engine stuff, it is hard
to tell just by looking at the commits what problem they are
attempting to solve.
+1
I've not (yet?) subscribed to sword-svn, but I have grabbed the svn tree and looked through svn log to see what has been changing and why. Like you, I found the commit messages somewhat cryptic. Ideally, I think bugs and enhancements would appear and be described in a bug tracker, and then VCS commit msgs can include something like (Fixes: #12345) so that there is a pointer to more verbose info on the "why" of any given change. While I'd love to see something like that for SWORD, I don't know if that approach is reasonable/feasible for the SWORD developers, and it is their code, not mine -- at this point I am very much just a "lurker" when it comes to that code :)

This scheme would work fine if folks would use the bugtracker (i.e. not report bugs only to sword-devel or in the wiki). When I fix things in the library that I notice myself, I don't tend to file a bug report before fixing them--I just fix them--and I would expect others who work on the library to do likewise. I only open new bugs in the tracker for things that I don't intend to fix myself or that I don't intend to fix soon.

Not filing bug reports in the tracker is generally just a good way to have your bug be ignored because it will quickly be forgotten. The bugtracker provides nice persistence.

I've been lurking on lucene-dev for a while now and I like their model:
1) Discuss a bug or feature on lucene-dev first. This step is somewhat optional depending on what the issue is. Obvious bugs often skip this discussion. 2) Based on discussion (or lack thereof) open an issue in the bug tracker (they use Jira also). Often a link to the thread is put in there.
3) For each issue it is assigned a release and generally to a person.
4) All further discussion is done via Jira comments. All activity in Jira is redirected to the mailing list. 5) All patches, including new code is communicated via attachments in Jira. Patches will sit at least a day before being commited to give people time to respond. Seeing, "I'll commit this in a day or two" is a common last comment. 6) Robust test cases are provided for new code and modified code. If the modification was due to a bug, the existing test cases are modified to show it as a failure.

They have a well-documented backward compatibility requirement. This only pertains to the "public" API. They use @deprecated in the comment block to indicate what will be removed when backward compatibility is removed. Also, they will add comments to a method that is not private for mechanical reasons or is otherwise not guaranteed, e.g. "experts only" and "experimental" methods.

The robust test cases are the basis of ensuring backward compatibility. Lucene uses a 3 part release number (e.g. 2.4.3) Essentially backward compatibility may be broken only when the first number changes. When the first number does not change, the core library can be replaced without any code changes. The third number is a bug fix release. The second number is used for two purposes. The x.9 release is the last release of the series. The only difference between 1.9 and 2.0 is that deprecations are removed. Typically, an x.0 release is followed by a x.1 release containing stuff that couldn't be put in the prior series.

As an Apache project, they have a formal agreement on who gets to do commits and how they get that priv. While all committers are equal, some are more equal than others. The founder of the project, who provided the original code, has, out of respect, veto capability. But otherwise, he is essentially hands-off. People who have commit privs also follow this model.

Occasionally, backward compatibility is deliberately broken, and by general agreement by committers. Consensus is highly valued for these changes. Typically, this is because a bug that might be relied upon is fixed. These changes are well publicized.

The "CHANGES.txt" is created from JIRA.

I've started to follow this model for JSword, albeit slowly. I still have the habit of making a change directly, because I can, and then maybe putting an issue for it in JIRA. We've not used Jira for discussion. And we are just starting to use it for patches.

I'm hoping that it will make JSword more of a transparent, community effort.

In Him,
        DM



_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to