Distribution of LISP applications …

Discussion of Common Lisp
omega66
Posts: 6
Joined: Fri Dec 18, 2009 1:14 am

Distribution of LISP applications …

Post by omega66 » Fri Dec 18, 2009 1:29 am

Dear LISP experts,

I’m new at LISP programming (actually, I’m new at any kind of programming … heh …), but somehow I managed to code a simple app that could turn out to be rather useful and in time maybe even profitable. Now, here’s where it gets interesting. What would be the easiest way to turn my LISP app into a 30 day trial version and how to make it a registered version after someone buys the damn thing?

I know it sounds lame, but hey, I’m just starting ;)

For your kind reply I thank you all in advance.

Best regards,

Andrew

nuntius
Posts: 538
Joined: Sat Aug 09, 2008 10:44 am
Location: Newton, MA

Re: Distribution of LISP applications …

Post by nuntius » Sun Dec 20, 2009 1:36 am

Ouch. If you're looking for a self-enforcing trialware, you may have some difficulty. One of the commercial vendors *may* have something to address this; but you'll have to ask around. Dan Weinreb's lisp survey has links.

On a meta note, you might try releasing your current (presumably simple and not very useful) version for free now; that should help you advertise, judge the market, etc.

ramarren
Posts: 613
Joined: Sun Jun 29, 2008 4:02 am
Location: Warsaw, Poland
Contact:

Re: Distribution of LISP applications …

Post by ramarren » Sun Dec 20, 2009 2:25 am

To elaborate, the difficulty is that most open source Common Lisp implementations do not really provide a facility to strip out the compiler or disable all the core entry points, which means that while probably the source itself cannot be retrieved from binary code, any limitation you put in place will be relatively easy to override. Commercial ones do, of course, because they are commercial.

If you do not expect any of your customers to be at all familiar with Common Lisp though, you could probably use the same techniques you would use in any other language. I do not know what they are, but you should probably look somewhere not-lisp specific, as this particular distribution mode is not that common in lisp world, I believe.

Also, probably for distributing small programs, of free implementations, ECL is best, since it does compile through C and can leverage most of the C runtime, which can be expected to be on any target machine, with only a small [1.5 MB] Lisp library, as compared to SBCL 40MB cores, or even CLISP 5.5MB images.

omega66
Posts: 6
Joined: Fri Dec 18, 2009 1:14 am

Re: Distribution of LISP applications …

Post by omega66 » Sun Dec 20, 2009 4:42 am

Thank you, Ramarren . But to be honest, I didn't understand a word you've said. It seams LISP doesn't offer proper tools to secure a LISP project. Right? How about if I was to use an instalation program, that would make a sertain note in the WIN registry at instalation time, which could casue the app to act as a trial? Can LIPS use the system registry in this way? Would this be doable?

Thank you in advance!

Andrew

omega66
Posts: 6
Joined: Fri Dec 18, 2009 1:14 am

Re: Distribution of LISP applications …

Post by omega66 » Sun Dec 20, 2009 4:50 am

Nuntius ...

Sorry, I didn't catch your reply. That would be great. To find a premade solution I mean. How do commercial solutions deal with this issue? Any suggestions?

Thanks guys …

Andrew

ramarren
Posts: 613
Joined: Sun Jun 29, 2008 4:02 am
Location: Warsaw, Poland
Contact:

Re: Distribution of LISP applications …

Post by ramarren » Sun Dec 20, 2009 5:04 am

omega66 wrote:It seams LISP doesn't offer proper tools to secure a LISP project.
Free/Open Software Lisp implementations do not offer tools to secure a project from the user because that is both hard and and goes against the philosophy of F/OSS. For commercial projects you should probably use commercial implementations, but they can be costly. In any case, in any Lisp you can do anything with registry that you could do in any other language, but this won't help if it can be easily overriden in the program itself. It is quite likely that, depending on your intended target, no one would try anyway, so it might not matter.

omega66
Posts: 6
Joined: Fri Dec 18, 2009 1:14 am

Re: Distribution of LISP applications …

Post by omega66 » Sun Dec 20, 2009 9:43 am

ok ... ok ... let's suppose it's a commercial project (I know it's far from it, but let me dream for a while). What's out there for me to use? I don't like dongles if that's what you're about to offer. This topic is really interesting. I know it's too easy for you, but to me it's ... well, important.

Thanks guys,

Andrew.

TheGZeus
Posts: 79
Joined: Mon Jun 30, 2008 10:46 am

Re: Distribution of LISP applications …

Post by TheGZeus » Sun Dec 20, 2009 11:17 am

Commerical lisp implementations are quite costly.

However Clozure Common Lisp might have a facility for this, as they were once a closed, commercial implementation.

Not sure if there's a Windows version of that, though.

That said, no matter what language you use, someone will hack it if it gets popular. I suggest what I call 'guilt-ware' where your splash-screen says "if you did not pay for this, you are stealing from me, and starving my pets" or something.
If they don't pay, they wouldn't have anyway, and if they do they're not tied into a time-lock, with the possible situation where they can't/don't purchase at that specific time, and replace your program with an alternative.

Incidentally, these are all issues that lead my to believe that selling software is dieing. Asking for donations seems to actually work.
Even a small project like StumpWM has gotten enough donations from users to pay for a year of wiki hosting.

Paul Donnelly
Posts: 148
Joined: Wed Jul 30, 2008 11:26 pm

Re: Distribution of LISP applications …

Post by Paul Donnelly » Sun Dec 20, 2009 12:42 pm

omega66 wrote:Thank you, Ramarren . But to be honest, I didn't understand a word you've said. It seams LISP doesn't offer proper tools to secure a LISP project. Right?
Trying to secure your program from user tampering is pretty hopeless. There was a discussion on c.l.l not long ago after someone cracked the trial limitations on a commercial Lisp itself. And that had nothing to do with the fact that it was a Lisp, and everything to do with the fact that making uncrackable software is all but impossible. Locks only keep out honest people, right?

Yet somehow people make money on software anyway, so don't worry about it too much. You might as well code your protection in the most naive way possible, because anything complicated is just a big waste of your time if anybody wants to break it.
omega66 wrote:How about if I was to use an instalation program, that would make a sertain note in the WIN registry at instalation time, which could casue the app to act as a trial? Can LIPS use the system registry in this way? Would this be doable?
I don't think Windows provides that feature. And editing the registry is trivial anyway.

nuntius
Posts: 538
Joined: Sat Aug 09, 2008 10:44 am
Location: Newton, MA

Re: Distribution of LISP applications …

Post by nuntius » Sun Dec 20, 2009 5:11 pm

Omega66, you might want to look at what Edi did for the Regex Coach.
http://weitz.de/regex-coach/

If you're not overly concerned about crack-proof trialware, the "registration key" shouldn't be too hard to implement. Distribute a compiled lisp image that autostarts a gui (so its hard to get to a raw REPL). Then if the user hasn't registered, pup up a "please register" screen and/or disable some functionality. To register, your program can grab some system-specific information (i.e. the serial number from "dir c:") and calculate a crypto hash based on it and a public encryption key. They send that to you with payment, and you reply with a "yes for machine X" that is encrypted by the matching private key. This gets dropped in a file or registry key somewhere so your program knows to load in full-functionality mode.

This should be adequate to keep honest people honest. Everyone else downloads the cracked version regardless of implementation language. Do note that some lisp implementations (e.g. clisp) and libraries prohibit distributing closed binaries like this (via the GPL).

Post Reply