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