On Mar 7, 2006, at 7:46 AM, Hans Fugal wrote:

Here's a philosophical question for you to chew on today.

I need an OSC library for ruby. OSC is OpenSoundControl[1] and it's
basically a nifty little lightweight transport-independent protocol. The
spec[2] is also lightweight and a decent programmer could implement it
in a few hours time. But laziness trumps even a few hours so I looked
for an existing lib and found one[3].

The existing lib is good. It has the basic functionality. But I had a
different usage pattern in mind than what the author provides. To get
it to behave the way I want it to, I would have to basically refactor
much of the 375-line codebase.

So here's the two-part dilemna. First, his design will be harder to
wrangle for my needs than a fresh design would be. So I'm faced with the technical decision to rewrite and cannibalize, or refactor. Second, I'd
like to not fork but let this be a natural evolution of the code, but
how do you tactfully send a guy a total refactoring of his code?
Especially when his English and my Japanese aren't so good. OTOH
how do you tactfully fork?

I recall reading on David Heinmeier Hansson's blog about his thoughts on
rolling your own vs. adapting someone else's code. His feeling was very much
that by the time you have adjusted someone else's code to do what you
really wanted it to do, you would have been better off writing it all from scratch yourself. A case he brought up was the Salted Login Generator - which a lot of people have used in the past for Rails apps (myself included). My personal experience with the SLG was that by the time I understood all the zany things it did, and adjusted it to do what I really needed, I had spent about as much time as it would have taken me in the first place to roll my own. Additionally, using it forced me to make a few compromises with other parts of the app I was writing
in order to make the login generator work with minimal changes.

So, in short, I vote roll your own. Especially when it's only a few hundred lines of code.

-- Kimball



/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to