[Insight-developers] One possible framework for Image
I/O...
Will Schroeder
will.schroeder@kitware.com
Mon, 18 Dec 2000 16:56:40 -0500
Hi Parag-
I'm confused on several counts.
1. We agreed early on that we would do minimal file I/O in Insight. This
was to be left to
other toolkits. Based on this discussion, it belongs in the interfaces
directory, not in
the toolkit proper, unless of course something has changed.
2. Now we have another object factory? I suggest that we use what we have,
or modify
what we have, to make it work.
3. Did you solve the problem of streaming? The last we heard this design
could not handle
streaming pieces of image, a real issue.
4. The .jpg image was probably not checked in "cvs add -kb" to indicate
that it is binary.
I can't read it on my PC.
I'm not trying to be harsh here, I am gratified that good work is being
checked in. But I would
suggest a several things based on my experience with vtk.
1. Major designs should be described and discussed prior to checking
anything in. The
talents of the community are very helpful in refining the design,
making sure the
existing code is compact, consistent, and uses what's already there,
as well as keeping
everyone up-to-date. Checking in major work without getting feedback
from the
community, or at least a portion of the community, is chaotic and bad
for the software.
2. The CVS repository cannot be treated as a soup pot, the law of entropy
will ensure that
the whole thing ends up as mush. It's really important to be zealous
about what goes in
and what doesn't or you end up with a confusing mess. Again,
communicate about the
appropriateness of a contribution.
3. A serious effort must be made to document and teach others. I like to
see a succinct description
of software functionality in the header files as well as on the list
somewhere. Please don't just point
to a paper, try to keep in mind there are people with little or no
background in what you are doing.
This will help the software become more approachable to our future
users. A few well chosen
paragraphs do wonders for people's patience and desire to work with
software. I realize this takes
a lot of work, but that's precisely the point: the creator should do
the work, not the user. Otherwise,
you end up with impenetrable software.
I think that because we are not co-located, these points are particularly
important. When we did vtk we
had the advantage that we could run down the hall and yell at someone, get
yelled at, or ask a question.
I think we're going to have to go the extra yard to communicate if we want
this to succeed.
I would suggest that in the future, major additions are added to CVS only
after:
0) Some words motivating the addition and describing its relationship to
segmentation/registration
are provided to the community.
1) A thorough description is posted on the list, with sample code.
2) Succinct documentation goes along with the posting. This should include
examples and/or tests.
3) The potential contribution is raised at the weekly telephone conference
and discussed, or
is presented at one of our meetings.
4) Somebody else (outside of your organization) in the consortium backs the
work.
5) The code meets the style guidelines and compiles on all platforms.
6) Then, and only then, should be the code checked into CVS.
I am sure that I am hurting someone's feelings here for which I am sorry.
But it's better now than
having a software disaster later.
I welcome comments.
Will