[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [IMP-dev] One final attempt to stir discussion before I give up on IMP svn



Daniel,
I understand your points and indeed you are the main contributor to IMP and a very experience software engineer. Maybe your case should be an exception, but in general I completely agree with Ben's policy.
Ben's policy assures that IMP is basically working.
We can not trust changes made by anyone and even in big software companies ( such as google), every change should go through a code review process. IMP is being used by various people, some without formal CS background and some are more flexible and tolerant than others. If we do not want to loose those users and if we want to make IMP a reliable software - I believe that we should maintain the current policy. I guess that you might be a special case as you are the main contributor - but for others we should keep the current policy. Just an example, today Frido and I, for our 26S project, updated IMP and than it took us at least an hour to solve all of the broken interfaces. This happens a lot and some people might give up on IMP or just use an old version and never update ( Frank's MODELLER 3 in restrainer is an extreme case for that).

An alternative might be to manage nightly builds (for developers) as well as weekly/biweekly ones (for users). In the nightly builds IMP developers could submit their code and the weekly ones the users can rely on stable code. Code will move from the nightly to the weekly only after testcases have been written and passed a code review process.
what do you think?
also  - I attach a comic on code review ( dedicated to Minyi :) )

best,
Keren.

JPEG image



On Aug 20, 2008, at 7:15 PM, Daniel Russel wrote:

The current IMP rcs setup is completely idiotic. As a result, in order
to be able to actually track the changes I make to the IMP kernel I have to maintain my own fork and then move patches back to the main svn. I am
tired of doing this and am somewhat inclined just to maintain my own
(public) fork and forget about contributing back to the main IMP svn. As there are occasionally a few global changes, reconciling things will get
increasingly hard over time.


Restricting who can commit to svn offers no benefits over open submissions.
- code review as it now stands appears to simply consist of checking
formatting of the source files. Such can changes can be more easily done as a modification of already checked in code. That would have the added
advantage of not having svn report everything as a conflict (svn gets
confused by my changes being committed from another working copy).

- No one is counting on IMP svn being constantly in a working state.
People wait to check things out until they know they have some time to
clean things up. As a result, there the invariant that all versions of
the repository work doesn't buy us anything over ensuring that it works
almost all of the time. The latter would make it easier to submit
patches since you don't have to ensure all files are submitted at once
and you can more easily check that your patch is OK by checking IMP out and building it. Unless the automatic test scripts for IMP are a mess it should be easy enough to have them create a "last stable" branch in svn
upon successful completion of the tests.

- svn is a revision control system. It allows us to roll back changes we
don't like after they are committed. That is the point.

And the current system has many disadvantages:
- submitting patches takes a reasonable amount of effort. As a result
minor changes to documentation and things which result in IMP overall
being a nicer experience never get submitted. In addition, it makes
people wait longer to submit things making the eventually submission
that much more complicated and reviewing of changes that much more involved.

- since it can take days (sometimes weeks if Ben is away) to get even
the simplest patches committed, it takes a lot of work to make focused
patches. Our time is better spent elsewhere.

- IMP is supposed to be a collaborative effort. It is hard enough to get people to share their code without added hurdles. As it is, I seem to be
the only one inclined to go through the effort.

- we can't actually use svn as a revision control system. If everything
in in sync most of the time, then once can easily try speculative
changes and then revert them if they don't work. Since I can't do this,
I have to maintain my own svn repository with a copy of IMP.

- we don't have any easy record of who last changed each file without
reading the whole log making it harder to know who to ask about changes
and breakages.


Creating yet another project in IMP svn doesn't solve these problems and
results in another complication for people who want to use IMP since
they always have to think about which library to get it from/which
namespace to use.
_______________________________________________
IMP-dev mailing list

https://salilab.org/mailman/listinfo/imp-dev