On Wed, May 25, 2011 at 6:19 AM, Nirmal Fernando <nirmal070...@gmail.com> wrote:
> Hi Jean,
>
> Please see my comments in line.
>
>>
>> Another way to ask the question is: What if you spend time to master
>> Graphviz (1.6Mb) and Batik (1657 classes, 8Mb) and build something
>> nice with them, and then somebody else just tries without these big
>> dependencies, at the expense of some hard (but interesting) work to
>> craft and tune the necessary algorithms, and produces a similar result
>> with a few pages of lightweight code? Which one will be more
>> successful?
>
> Reusing is good other than building one from scratch not knowing what will
> be the outcome, don't you think?

Sorry for the delay, I've been really busy recently. In a way it's
good that I didn't reply too quickly as that allowed you to figure
part of the answer yourself :) and I see that you've given up on
Graphviz after running into some limitations.

I think my main observation is reusing software requires to evaluate:
a) the useful function provided by that software that'll help you;
b) its baggage, limitations, bugs, operational constraints that'll get
in your way;
c) the effort to understand how to use it to your advantage;
d) the effort to adapt and glue it to the pile of other software
you've decided to reuse.

... and put that in balance with:
e) not reusing that useful function;
f) but spend the effort you'd had spent to (b), (c) and (d) on writing
the exact function you need.

Often people only look at (a) and then struggle with (b), (c), (d). I
think this is a problem in particular on the Java platform, where the
development community is very quick to reuse giant piles of code just
because they're available, without measuring all the implications (as
opposed to C or C++ where developers tend to think more before making
a move, or Python for example where libraries are typically smaller or
much easier to re-implement).

I looked at the code you've started to commit in the collaboration
area. Looks like a good start to (f) -- spend quality time to
implement the algorithm you need :). I have a few review comments:

- it's good that you have Apache license headers in some files, would
be even better to have them in all the files;

- a few more comments in the code will help others in the community
review and understand your code, and perhaps even come and help you;

- a Maven build and automated JUnit test cases will help you and
others exercise your code and verify that it works.

-- 
Jean-Sebastien

Reply via email to