Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Selling your Perl app

by whakka (Hermit)
on May 07, 2008 at 22:36 UTC ( #685341=perlmeditation: print w/replies, xml ) Need Help??

You have piggy-backed off the countless eons of work by others writing, developing and debugging Perl and various CPAN modules to produce a useful application for your job. You know it has commercial value because you have distributed it at work and people like it for reasons that can be generalized (i.e. these reasons are not specific to the task itself). You have also been asked many times by your employers not to disappear when you leave and take your Perl magic with you.

Have you been in a situation like this? What did you do? What should you do? Note that the sort of app I'm talking about is not when that would necessarily benefit the Perl community but rather its value is derived by its dependence on things done out in the world of business and academia. The actual number of people with Perl (or programming) abilities in its target audience is likely to be minuscule.

I'm not ashamed to say that my first thought was: can I profit? (Note that I have no agreement with my employer, a non-profit, that they own any part of my code.) If so how should I sell it? As shareware? Open source it and ask for donations? Directly sell to potential customers? The program itself is not terribly exciting and is rather niche. We're not talking anything earth-shattering here, just a nice Perl touch to a task that's usually done over and over again manually, making things easy and saving hours of work.

Aside from asking for good stories, obviously I'm also asking if there's earnings potential in writing useful code, and how you should go about achieving it. I know I'm jumping into a shark's tank here with a question like that but I believe people should be rewarded for their work if it has real value. I know there's an argument that you should open source everything and get a job based on your code's notoriety, but I'm not exactly in that position as I'm not a professional programmer, nor do I intend to become one. I thank everyone who shares their opinion.

Update:++ to all who answered, they provided exactly the discussion I was looking for. My attempt to summarize their advice is as follows:

  • I was wrong to gloss over the fact that I wrote it (partly) on-the-job. Always make sure you either have full rights to your code and/or have negotiated, in writing, with your employer pertaining to this issue. I think this should be Step #1. (thanks to ww and sundialsvc4)
  • "If you're going to sell a perl application, and said application includes CPAN modules not written by yourself, you *must* investigate the license(s) of those modules (and their dependents) and if there are restrictions, either architect around the restrictions or negotiate a different license with the author(s)." (thanks to derby, tirwhan, dragonchild)
  • Consulting with a third party to help set up your design and distribution is generally a good idea. (thanks to dragonchild)
  • Consider protecting your code with Acme::Bleach or hosting the application yourself. (thanks to Mutant and skx)
  • And last but not least, make sure you really want to go down this route: Your app may not hold the appeal you think it does. It adds stress to your life. You have an obligation to perform and maintain your code. You have to convince others of its value, and that's not always easy. That being said, success is possible if you follow these guidelines and your app is worthy of distribution.

And yet (and I didn't think this would happen), several people who emphasized the appeal of open source have convinced me, in this case. My app is too small to net any amount of serious \$\$ - at best it would provide me with "pocket change." As stated I am not a professional and there are likely to be bugs and shortcomings, and I and I alone would be under pressure to fix them. Marketing and distributing it and getting people to pay me would require a serious effort that probably isn't worth it in this case. And, above all else, there are two major benefits of open source:

  1. I get to consult with smarter people than I, making the end result that much better (that is a major goal for me - I want the software to be good).
  2. Freeing the code to spread is likely to result in a much wider distribution in this case, and if I achieve a small degree of notoriety with the program it could still help with non-programming job prospects because it demonstrates that I am a productive worker.
Again I thank everyone who answered, please feel free to correct me.

Replies are listed 'Best First'.
Re: Selling your Perl app
by dragonchild (Archbishop) on May 07, 2008 at 22:39 UTC
    Traditionally, most people go the way of BestPractical, Stonehenge, or ShadowCat and consult on the OSS software they've written. It's a good model.

    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Re: Selling your Perl app
by ww (Archbishop) on May 07, 2008 at 23:32 UTC
    Note that I have no agreement with my employer, a non-profit, that they own any part of my code.

    Agreement or not, if you developed the code on your employer's time you'll find that in many jurisdictions, that employer has some vested interest (aka ownership) in your code.

    Am I correct in inferring from comments re distributing to co-workers that you did at least some of the work on the non-profit's nickle?

    On the other hand, if you did it on your own time, and merely gifted fellow employees with something they like but that has not become, strictly speaking, an integral part of the business procedures of the non-profit, sell it, if you can. I'm far from a doctinaire advocate of the position that "software wants to be free." If you can sell it, and doing so passes your "smell test," go for it.

    But (!) that's going to be a real challenge and not likely to be putting you on easy street, unless you've written the next must-have, killer ap. However, good solid software, aimed at a market you can penetrate, providing unique capabilities or ease of use, may provide you with some pocket change (or better) via dragonchild's suggestions above.

Re: Selling your Perl app
by moritz (Cardinal) on May 08, 2008 at 09:31 UTC
    'm not ashamed to say that my first thought was: can I profit?

    And indeed, there is no shame. Nearly all software is written for profit in some sense. Sometimes it's monetary profit, sometimes the new software relieves you of tedious, boring work, sometimes the profit is fame (or XP on perlmonks ;-).

    As a hobbyist I mostly write programs because I want my job done (and because it's fun). I publish the more useful programs as open source because that usually implies getting feedback and helpful feature suggestions (I'm not creative enough to think of some of the really useful features myself). Plus open source projects really bring traffic to my websites ;-)

    One of the reasons not to sell my software is that it puts me under a kind of mental pressure: if one of my customers buys software from me it just has to work. IMHO. And I don't think I can guarantee that, so I feel like I'm cheating when I'm selling something that just might not work for the buyer.

    But I still profit from my software, mostly in terms of skills. And that pays when I do contract work.

    I hope that I'll never have to make money from selling software because I think it would kill the fun.

    (As a side note there are other, ethical reasons for me to publish my software as open source, but they don't belong here.)

Re: Selling your Perl app
by Herkum (Parson) on May 07, 2008 at 23:26 UTC

    Something to consider, how many people do I want to use my software? If you are writing a program that will be used by lots of people from a variety companies, locations then it is hard to be consultant for that sort of software. Better to either give it away, or use some sort of encryption to hide the source (for example Acme::Clean).

    Your other option is that you intend to sell your software to a few large clients. Generally you sell the software for large sums of money and you can protect your code with licensing agreements. That will keep the code from being installed on every Tom, Dick and Harry's business, but I don't think it will keep your customer from installing it a few times on their site. The other advantage of this arrangement is that customers are more likely to use you in a consulting gig, so that is another potential place for income.

    As for the question, 'Can you profit?' The Answer is yes, the question how can you profit becomes a bigger question. Finding a solution to a problem is one thing, it is another to convince people that your solution would solve their problem.

Re: Selling your Perl app
by Mutant (Priest) on May 08, 2008 at 08:20 UTC

    It depends a lot on the market. If it's likely to be used by a lot of medium to large organisations that are unlikely to pirate it (no matter how easy that might be), then you could sell it via a website, with a download, and charge a per-seat license. You'd probably want a 30 day trial type deal, but I wouldn't bother putting too much effort into making it uncrackable. You probably won't have to worry too much about advertising, so long as you come up in the relevant search listings - companies interested in adressing the particular problem you're solving are likely to put in the effort to research options.

    Otherwise, unless you have an app that has a really wide appeal (in which case, this should all be pretty easy), you're not likely to turn a lot of profit. You might make a bit of cash from the odd sale, but individuals and small companies don't tend to spend a lot on software, and are used to getting lots of stuff for free.

    As already mentioned above, the free (as in beer) route becomes an option. You can make money out of consultancy, support and advertising on your site. But possibly more valuable than all that is the prestige. This can work in a few ways, but apart from anything, it'll look really good on your resume. If you release source code and - for Perl - get stuff onto CPAN, that'll also get you some standing in the community.

    Good luck :)

Re: Selling your Perl app
by derby (Abbot) on May 08, 2008 at 12:03 UTC

    I'd have to agree with moritz, there should be no shame in profiting from your work. There's a lot of good responses above but the one thing I see missing is

    What are the licenses of the code you've built upon?

    I'm just assuming that what ever you've built, it has CPAN modules in it. You're really going to have to do your homework if you want to sell a product that's reliant on CPAN modules (ie, you may have to negotiate a separate license from the module creator - if you can find him/her). *Or* you would have to package your application in such a way that part of it is *free* and part of it is not.

    My advice, just give it away and profit in karma. I think there's very little profit potential in selling code at this level, the internet is haunted by the burned out skeletons cheap shareware (apologies to Bruce).

      I'm just assuming that what ever you've built, it has CPAN modules in it. You're really going to have to do your homework if you want to sell a product that's reliant on CPAN modules (ie, you may have to negotiate a separate license from the module creator - if you can find him/her). *Or* you would have to package your application in such a way that part of it is *free* and part of it is not.

      IANAL, but I think all CPAN modules that are distributed under the "same terms as perl itself" can be used without problem in closed source, commercial applications. Just the like the core modules that come with perl itself.

      This might not apply to GPL-only modules. If you use a module, one might argue that it's the same as with linking against a GPL'ed library, in which case the whole application must be GPL'ed.

        From the CPAN FAQ:

        How are Perl and the CPAN modules licensed?

        Most, though not all, modules on CPAN are licensed under the GNU Public License (GPL) or the Artistic license and should be stated in the documentation that accompanies the module itself. If the license is not specifically stated in the module, you can always write the author to clarify the issue for you. Also, the text of the Artistic license and the GNU Public License are included in the root directory of the source distribution. From the 'README' file that comes with Perl: ....

        So ... like I said, the OP needs to do his homework.

      You're really going to have to do your homework if you want to sell a product that's reliant on CPAN modules (ie, you may have to negotiate a separate license from the module creator - if you can find him/her). *Or* you would have to package your application in such a way that part of it is *free* and part of it is not.

      This is incorrect. The CPAN module license only comes into play if you want to redistribute said module. Anyone is perfectly free to write a Perl application using tons of CPAN modules and distribute this application under any license they choose (e.g. close-source and charge for it), as long as what they distribute is merely the application code itself. If they want to distribute the modules as well in a package, then you are correct, they would have to clarify that these modules are under the original license (GPL/Artistic/whatever). But merely distributing ones own code which relies on CPAN modules does not have any licensing implications for this code.IANAL etc.

      All dogma is stupid.

        Poor choice of words on my part. I did mean distribute/include CPAN modules in the code you sell -- that's why I mentioned packaging -- you can architect the app in such a way that any reliant CPAN modules are *outside* your app.

        However, I think you and moritz, while pointing out good issues, failed to grasp the most important point of my original post (but maybe that's because I didn't do a good job of writing it). My point is this:

        If you're going to sell a perl application, and said application depends on CPAN modules, you *must* investigate the license(s) of those modules and if there are restrictions, either architect around the restrictions or negotiate a different license with the author(s) ... just saying, "oh it's on CPAN, it's under the same license as perl" can get you into a lot of trouble.

Re: Selling your Perl app
by skx (Parson) on May 08, 2008 at 15:34 UTC

    I've regularly written and given away complete projects as genuine open-source projects; some of them have even been popular. (Where popular means from hundreds to thousands of users; though in all honesty most of them have less than that).

    But recently I came up with a good implementation of a spam-filtering solution; as you say piggy-backing on the work of others. (I did submit several trivial patches; but most of the code is both specific to me, and non-public).

    This is the only time I've explicitly been in the situation of writing code with the intention of charging people money for it. It just seemed obvious to me that I should be selling it, partly because it works, and partly because there is a potentially large market.

    Now you're not specific about your application, but your general question feels like a "how do I make money" question - and my only suggestion would be that you install it yourself, on machines you control, and then make it available as a "Web Application". i.e. You offer a service and not an application.

    By hosting the application yourself you don't need to run the risk of showing anybody the code. Although the downside is that you really do become a single point of failure (which speaking personally is stressful) but it can be a good tradeoff to make, depending on your niche, and the willingness of others to trust an outsourced service.

    (ObLink: Managed anti-spam solution - small because I'm giving info, not trying to pimp for customers. THough I wouldn't object ;)

Re: Selling your Perl app
by sundialsvc4 (Abbot) on May 08, 2008 at 16:42 UTC

    They paid you for it, didn't they, and to some degree or another directed you in the work. Therefore, in the eyes of copyright law it's “a work made for hire.” Now, I.N.A.L. but, that does mean that to some extent or another you're going to have to explicitly negotiate.

    But first, you need to very-seriously consider the actual commercial viability of the work, and whether-or-not you really want to be in the software business. (Let me preface this by saying that I have been in that business, concerning software that I wrote, for over 10 years now.) It's very tough work and not always as profitable as you think it should be.

    Sometimes the very best benefits are indirect ones. Put your name on it, negotiate with your employer to permit disclosure of the work, and let it be known that you'll support it. Reputation is a good thing. The “real value” may come from a block of software that is incontestable proof that you know how to devise and maintain something that has real business value to someone; something that “makes things easy and saves hours of work.”

    It is very important that you explicitly document that you have dealt forthrightly with your employer, that you have done so on particular established dates, and that you have done so in writing with signed copies of your letters-and-discussions kept by both parties. You don't need to be, nor to get, a lawyer:   you just need to “get it in writing.” May it never come to that but ... the one thing you see time and time again on those court programs is the judge exasperatedly saying, “Look, you say that you said this, and you say that you said that, and I've heard three different dates from the both of you by now, and t'hell with it.”

Re: Selling your Perl app
by samizdat (Vicar) on May 12, 2008 at 12:52 UTC
    I was looking for inspiration in one of my favorite places -- the CLEARANCE racks of a used bookstore -- yesterday, and came across some worthy advice in a book that cost me a buck: "The E-Myth Revisited", by Michael Gerber.

    He says (paraphrased from memory), make REALLY sure your business is going to solve a significant real problem for a lot of people, otherwise it isn't worth the pain/heartburn/stress/etc of making it fly.

    It doesn't sound like your app -- as described -- rises to that level of urgency. Having put myself into a flaming tailspin with businesses that didn't meet this criteria several times, I hope my repeating it for you all will pound it into my own brain so that the next time I walk away from a paycheck (yes, I feel it coming!) it flies high enough to get me over the pain mountains.

    I agree with the other responders, make it FOSS -- your employer might give you more time to work on it in this case as a joint effort -- and profit from the increased notoriety and potential support consulting. :D

    Don Wilde
    "There's more than one level to any answer."
Re: Selling your Perl app
by ikegami (Pope) on May 12, 2008 at 21:53 UTC

    Selling software is a bad business to be in.

    Prices of goods tend to drop to their marginal price. That would be zero for software, since it doesn't cost anything to distribute once it's made.

    Your better off getting your software in as many hands as possible and sell related scarce goods instead, such as your time and expertise (service contracts, books you wrote, software writing service).

    In other words, the software is a great promotional tool for other services and goods. Or even for yourself. Like you mentioned in your update, you could gain notoriety from it, which you can trade in for connections, a better job, etc.

    Seems like you already reached that conclusion. I really really skimmed the topic, but Techdirt has a lot to say on this subject if you want to read more.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://685341]
Approved by almut
Front-paged by Arunbear
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2018-05-27 20:10 GMT
Find Nodes?
    Voting Booth?