Assume you have an idea for a project. There are commercial solutions as well as open source solutions to the problem, but neither fully solve the problem with all of the features that you would write.

1. Do you implement a comercial solution and make requests to the developer for the additional features?
2. Do you implement the open source solution and make requests to the developer for additional features?
3. Do you use the open source as a template for what your *new* program will be, possibly loosing code-reuse?
4. Add suplemental code to the open source solution?
5. Say bleep it, and write an entirely new back end with the featurs you want (and take at about 40 hours(+) of straight coding to do it?)

In an ideal world, what do you choose and why?

Zak

Replies are listed 'Best First'.
Re: A Programmers Dilemma
by danger (Priest) on Mar 07, 2001 at 00:06 UTC

    You do 2 and 4. Implement the open-source solution, and converse with the developer about the new features -- he may already be adding them, or know someone who is, or he may be willing to accept a patch from you to add them to the project.

Re: A Programmers Dilemma
by gryng (Hermit) on Mar 07, 2001 at 00:18 UTC
    You (I) do number four. Or, I do number six (which is avoid the problem :) ). Here's why:

    Number one is unlikely to get you results, and Number two is more likely than one, but still not likely to get you anywhere.

    Number three should not be attempted until you have done Number four and found that developer won't accept your changes.

    Number five is only good for very small projects, or if you happened to not notice the prior art around you before you finished.

    So that leaves you with 4 or 6, and only 4 gets the job done :) .

    Ciao,
    Gryn

Re: A Programmers Dilemma
by enoch (Chaplain) on Mar 07, 2001 at 00:32 UTC
    I have run into many, many incidents like this. I have found that #3 and #4 can take as long as #5 depending on the system and proposed solution. It's is quite amazing at how undocumented some open source code really is.

    For example, at one point, I took over a person's project. The project was half done and he took off from the position. So, I was left with pages and pages of undocumented source code. I had, in my mind, my own solution to the problem; but I thought, "this guy has already put in all this time." "I might as well build on his stuff." Unfortunately, I spent many long hours and long days reviewing his code, tweaking his code, hating his code, and building upon his code. I finally got the project done, but it was not an optimal (really, not even a good) solution. So, I ended up starting over from the ground-up after having finished the first iteration.

    In the end, though, it really depends on the situation. A choice of using MySQL vs. MS-SQL vs. Oracle depends on a lot of things (money, do you need transactions, what will be connecting to the databases). Or, maybe it is groupware, do you go with Exchange or Novell or phpGroupWare? All that comes down to money. Sure, you could get phpGroupWare for free; but a lot of programming hours will have to go into it getting it to perform as well as having some specialists come out and set up Novell. Of course, if you want to do some customization of the system, phpGroupWare would be a good choice (maybe). But, if you want uber-customization, cooking your own would be good.

    The essence of TIMTOWTDI.

    Jeremy
      Thanks everybody. I think I will go in order for 3,4,5 for my project that I was thinking of doing. (A generic survey application with a strong statisticall back end.)
      Thanks
      Zak
Re: A Programmers Dilemma
by EvanK (Chaplain) on Mar 07, 2001 at 00:14 UTC
    I've run into the same problem more times than I'd have prefered it...And I always go with option 2, and if that doesnt work, either option 3 or 4.

    ______________________________________________
    When I get a little money, I buy books. If I have any left over, I buy food and clothes.
    -Erasmus

Re: A Programmers Dilemma
by Jouke (Curate) on Mar 07, 2001 at 13:32 UTC
    It depends entirely on the situation. If the commercial project almost solves all my problems, but just 1 or 2 mintor details wouldn't be solved, I'd take option 1.

    If the commercial solution misses too much of the problem, I'd go for the open source solution. If that solves most of the problems, and the development team of that solution is willing to add the features I'm missing on short term, I'd go for option 2.

    Dependent of the amount of features I was missing, if the open-source development team can't implement the features I want on short term, I'd go for option 4 (contribute to the open source solution), or if there are too many things that don't fit, I'd take option 3.

    Option 5 would only be my choice if nothing really solves the problem, and only a minor detail would be solved by either solution.

    just my $0.02

    Jouke Visser, Perl 'Adept'
Re: A Programmers Dilemma
by gopher (Monk) on Mar 07, 2001 at 07:56 UTC

    id say do numbers 3, then 4, then 5 as a last resort. dont re-invent the wheel, as ive heard it put over and over, if something useful is out there, use it, and add to it if nessecary.

    "Mr. Zoothornrollo, hit that long lunar note, and let it float."