PipTigger has asked for the wisdom of the Perl Monks concerning the following question:

Hello Fellow PerlMonks. I have a huge problem and I know this description is going to be really long but I'd appreciate your time. Please help! What has happened is as follows:

Three weeks ago, I was hired to code an e-commerce site for a guy (who I'll call "BoB" since I like palindromes). BoB wanted to use an open source e-commerce program called OpenSales. OpenSales is also called OpenMerchant or OM for short. BoB already had a coder and an HTMLguy.

The first week, we needed a development server so I looked at VALinux, IBM, and Dell for a low-end nice server (since BoB is aiming for insane volume ... hehe). I gave recommendations and cost analysis with feature descriptions etc. BoB ignored my unpaid hours of research which he required of me before I could write any code to get payed. He talked to some guy in Anaheim who gave him a great deal on some P3 IDE box with an ISA modem and a translucent blue case with matching keyboard. I was miffed since this came with Lose98 and was far from the awesome GNU/Linux ready hardware I had spent hours pouring over. I recommended picking up a RedHat distro so that we could actually ummm like serve websites. I explained that we couldn't leave Microsoft on the computer if we wanted to use OpenSales. BoB reads a lot and he takes nobody's werd at face value. It must be printed somewhere to actually be true. After a little explorative work, he discovered that sure enough, RedHat is a stable operating system. He also found that FreeBSD is quite popular with many highly trafficked sites. I had never completely installed either before but I knew that O'Reilly has several GNU/Linux books and their Perl books have been indispensable in the past. After some convincing, we got RedHat 6.2. I installed it with all my O'Reilly books all sprawled out around me. I slapped my own Netgear card in and configured everything to run over BoB's Cox cable modem. Ftp and telnet werked fine through inetd but httpd wouldn't werk right. I tried all day changing httpd.conf and restarting it to try to get apache to serve a page. Finally, I thought to look for a helpful error message (duh) and found that the date in the BIOS was 1980 or some such which caused all kinds of negative file ages or something. I fixed that and proceeded to lern how to download and make and install all kinds of different things like MySQL and DBI and any CPAN module that looked useful. For the first time, CPAN was a candy store, and I was a kid. It's fun. I recommend it =). The relationship between BoB and the other coder was almost totally sour at this point as he was 2 weeks into the contract and hadn't accomplished anything so (since BoB trusted that I could actually get things done) this guy's contract was terminated because he didn't show anything even when he knew he'd be cut off if he didn't.

The second week (which was last week), I got OpenSales installed and configured with all the necessary httpd.conf / store.pm settings it requires. I got to test the sample store (presents.com) and play with it and see how it werks. I lerned more about OM while I wrote simple Perl to easily insert or replace records within MySQL and another script to passwerd protect the under construction development pages that the HTMLer was writing so that they would be hidden from prying eyes until the right time. Late last week, the HTMLer was fired. I also had a harddrive failure which left my 9GB SCSI estate ravaged and sadly unsalvagable.

Now, this is the third week and I'm getting werk done again. Of course there's a ton of stuff to do. I've been examining more of OpenMerchant's source and getting familiar with their MySQL table structures and their program flow. The more I look into it, the more it seems it would be faster to write it from scratch myself than to lern all of OM and then to enhance it to make it satisfy this contract. I'm not saying that OM sucks or that it's poorly designed or that I could necessarily write anything superior all by myself. What I am saying is that it's not yet complete and needs a lot of werk and it's already really complex. I thought I might be able to do it faster myself. I told BoB about this yesterday. We discussed it and he went off about how he's been reading about OpenMerchant's terrible SKU code scheme's limitations and how he envisions something far superior and he described several other trivial grievances with OM and wrapped it up with an advocacy of abandoning OM to do it the Right Way(tm) ourselves. I knew from the beginning that OpenMerchant is under the GPL and that if (in the unlikely event) I actually add something useful, it can and must be open as well and the contract I signed basically says that BoB owns all code I write unless it is free under some previously standing restrictive license. That's cool but starting over isn't necessarily so... I asked if we could open source it. BoB replied "No way! We could license it and make money." I explained how we're using and benefitting from exclusively open source softwares including RedHat, Perl, MySQL, OpenSales, etc. and then for us to turn around and horde code that is useful to a broad audience and built on top of most of those open components is silly. I related that the original impetus behind the entire project was his desire to sell physical products (as opposed to software) and I spoke of biting the hand that feeds etc. He proceeded to rebutt with a lengthy treatise espousing the uncharted treasures of capitalism and how greed makes the world go round and how I'm just an impressionable lad who's been brainwashed by the benevolent socialist charities who've taught me to find enjoyment and fulfillment in communism instead of being a good patriotic young man and laying hold of the materialism which is the true enlightenment of our day. My silence demonstrated my grief. I asked if we'd need to draw up a new contract and he threw me two bones: 1) He'll start a new company to sell the software and he'll give me 20% in it. 2) If I succeed in adding transactions (like he's asked) or rollbacks or other enhancements to MySQL, I can open those but not any of the e-commerce stuff.

I have to let him know by next week if we need to draw a new contract without OpenMerchant or if I'm gonna continue to use OM to complete the project. I need to get payed. I really don't want to be sued. I really don't want to write closed software (unless it's obviously useless... in which case, I don't want to write obviously useless software either). I'm 23. I'm an aspiring game coder who is tired of the closed source world. Here's my resume on Dice. I'm just trying to werk enough to pay rent and bills so that I can get t back to what I love: my girlfriend, fragging, and hacking.

Thank you so much for reading all of this. If you can, please lend me some advice. I would be most appreciative as I don't know how to best handle this situation. TTFN & Shalom.


  • Comment on Perl Werk Question. Please Help. Part 0.

Replies are listed 'Best First'.
Re: Perl Werk Question. Please Help. Part 0.
by turnstep (Parson) on May 19, 2000 at 23:23 UTC

    Whew! How about the powers that be (starts with a V!) cleaning that up into a single post. Two quick points:

    1. "BoB" sounds like a moron and if he thinks you and him are going to develop and sell the next best thing, he's living in a fantasy world.
    2. "If I succeed in adding transactions (like he's asked) or rollbacks or other enhancements to MySQL..."
      MySQL is working on these things - the main reason they are NOT there already is the high overhead they impose. A future version of mysql will have transactions, as a compile time option, IIRC.

    Might reply more later, but if not, I'm sure this will generate a few responses :)

RE: Perl Werk Question. Please Help. Part 0. (kudra: why use MySQL for transactions?)
by kudra (Vicar) on May 22, 2000 at 12:00 UTC
    I just have to ask why you are using MySQL if you want rollbacks, transactions, etc.

    MySQL is built for speed at the cost of features. I imagine someday they'll fit in these features if they can figure out a way to do it which won't interfer with their primary goal. MySQL is good if you want a fast database and don't care about things like transactions. That's not what I'd opt for with an e-commerce site (although I would use it for something like a discussion site). Given the fact that you're talking about transactions makes me think that it's not the best choice for your project.

    I would therefore suggest using Oracle, so that your boss has to pay and pay and pay like he deserves.

    You might also want to take a look at PostgreSQL. It's open-source and supports transactions. Version 7.0 was just released about a week ago. That way you'd have all the features and the only code he'd own would be whatever you wrote to interface with the database, which he wouldn't be able to sell.

    There was recently a discussion about MySQL, Postgres and ACID which you might find of interest, as you are bringing up some of the same issues.

RE: Perl Werk Question. Please Help. Part 0.
by cciulla (Friar) on May 19, 2000 at 23:33 UTC
    Up your cut to 50%.

    Another angle is to say, "Well, we CAN sell this for $X a seat, but if we open source it, we can CONSULT on this for $X/hour!"

OpenMerchant/Minivend vs. a custom solution
by markjugg (Curate) on Feb 20, 2001 at 19:29 UTC
    I just want to add that I went through a similiar process-- evaluating Minivend (similiar to OM). I was impressed by all the complex features, all the power and flexibility. What I found was that it was relatively easily to put up a new store, as long as it was almost identical to the demo. It was very hard to extend it though. It provided poor debugging feedback, and had a number of abstractions that I just didn't need. So I ended up spending a lot of time learning how to do things "The Minivend Way" that I already knew how to do efficiently with Perl and SQL.

    Finally, (this took a couple of years) my Perl and SQL skills improved, and we are migrating away from Minivend in favor of a light-weight custom toolkit that we wrote ourselves. This has been a great decision. It just supports Postgres and is lacking a lot of Minivend's features (and documentation :), but we only need one database to run our websites and we have the features the we need.

    I've been very happy with this decision. At least with my own Perl and SQL, I can give a reasonable estimate of how long something will take, and I know I can tweak it any which way it needs to go. With Minivend, I'd get on a debugging detour that could take 5 hours, mostly figuring out what when wrong. And yes, once this project gets cleaned up and refined, it's expected to be released as Open Source.

    Funny thing though, if you look for Perl-based E-commerce solutions available at the moment, there are a ton of them-- a lot of people are developing their own solutions for their niche instead of adoptiong a monster package. I think this makes some sense with e-commerce-- It's so complex that really makes sense to find a package that has just the complexity you need, rather than learning an overly complex package that you just use a subset of.

    -mark

      A note. OpenMerchant was owned by OpenSales, which changed its name to Zelerate, which got funding contingent on 40% staff cuts and changing to a business model involving selling their software for (IIRC) $100,000 a pop.

      They are also competing with an old fork of their software on Sourceforge.

      I wish them luck in the same way that you wish Wile E. Coyote luck in catching the Roadrunner...