Selling REBOL scripts - Scott's Distributed Licence - tm
[1/6] from: rebolscott::yahoo at: 8-Jan-2002 8:26
> - license monitoring (eg. good for 5 license)
> - time bomb (eg. good for 30 days for evaluation)
> - time out (eg. expire on Feb 14 2002)
>
> Is it something that RT can addon easily ?
Hi first post, I am intrigued by the different flavor
of discussion one gets with a non open source
community.
Anyway there is an easier way to "sell" rebol software
while giving away source code.
Lets call this copyrighted method the
Scott's Distributed Licence
First with rebol being internet ready there is no need
for all of the code to be distributed to the user. All
of the software you sell can securely connect to your
site for key componets.
But what are the key componets that you want to host.
That compent would be the lincens audit feature.
Whenever someone runs the software they hit your
server so you know where it is being used. Any
particular user licences it for maximum number of
concurrent users. If they go above they have to pay
more.
But how do you stop a user from modify the code so
that it doesn't access your site at all. First there
has to be a minumum ammount of usage otherwise the
consumer has to pay a very large kill fee under the
assumeption that it has been hacked "you put this in
the contract"
Second you make the code self inspecting, so that
periodically the code will copy the version on your
customers machine to yours so you can do a audit of
the software.
So here is as way to keep source code open, and sell
it at the same time. Note, the customer should get the
right to inspect your code too. to make sure you are
not incorporating their code into your product either.
Basically its arms inspection.
Anyway that is/was my first post. I hope you guys find
some merit in my idea.
Scott
[2/6] from: sunandadh:aol at: 8-Jan-2002 12:53
Hi Scott,
Welcome to the list! Lots of of interesting discussions, loads of deep Rebol
wisdom, and some brilliant lateral thinkers. So do stick around.
> Hi first post, I am intrigued by the different flavor
> of discussion one gets with a non open source
> community.
There are some common issues too. I remember when PGP was floating around as
a source, a crucial question was "how do I know this source has NOT been
inappropriately modified?"
A couple of points responding to yours.
Self-inspecting code is a good technique. As I wrote earlier, I've been
experimenting with checksumming as a QA tools, example.
if (checksum read %myapp.r) <> 3574439 [print "Re-install, please" halt]
But, with the source available, this is so easy to bypass:
;if (checksum read %myapp.r) <> 3574439 [print "Re-install, please" halt]
I've also experimented with having an installation routine which sends me an
email. That makes copying at least evident. But because Rebol has such a
light touch
on a machine someone can install my application elsewhere
simply by copying the installed application files. Now, if (on windows) I
could write and check a Registry entry, my installation routine would be
harder to bypass (they'd have to find the bit that reads the registry and
comment that out).
I also--as you did--think about connecting to my server on a regular basis.
But I saw two problems here. First, the availability of my server becomes an
issue in someone else's downtime. That's far too centralised an approach for
me.
Second, I am working with many Not-for-Profits across the world. Some of them
have only intermittent or expensive ways of connecting to the Internet. And
some may be working a long way away from a phone. Enforcing them to make
regular phone calls is not an available option....It would goad them into
wielding a few semicolons on the code.
I have no problem in many cases for people to have a copy of my code. I just
want as many barriers between my application and their copy of the source
code as possible. With C source a user has got to be very determined to
change the source, recompile, relink, rebuild and perhaps reinstall before
their change takes place,
With Rebol as it stands now, a curious user can junk an entire application by
loading it into Word to take a look, and accidentally saving it back as
non-ASCII. I think applications that fragile are scary.
Sunanda.
[3/6] from: nitsch-lists::netcologne::de at: 8-Jan-2002 20:47
RE: [REBOL] Re: Selling REBOL scripts - Scott's Distributed Licence - tm
[SunandaDH--aol--com] wrote:
> Hi Scott,
<snip>
<<quoted lines omitted: 3>>
> change the source, recompile, relink, rebuild and perhaps reinstall before
> their change takes place,
if thats the problem, how about distributing your scripts compressed?
one has to use some tricks (select the compressed 64#{..} and store it
to a file using write %file.r #{..}).
thats similar effort as compiling?
> With Rebol as it stands now, a curious user can junk an entire application by
> loading it into Word to take a look, and accidentally saving it back as
> non-ASCII. I think applications that fragile are scary.
>
*grin*:
%start-script.r :
rebol[] do %application-script.exe
with normal rebol-code there.
word & co will not open.
windows will say its broken,
but you its a special kind which needs to be started
by the rebol-script.
usual users will handle it respectfully and more skilled are clever
enough not to edit code with word? *gg*
> Sunanda.
-Volker
[4/6] from: ryanc:iesco-dms at: 8-Jan-2002 13:42
Interesting idea Volker,
here is a little spin on it:
--- Batch file named test.bat ---
%rebol_home%\rebol test.bat
exit
rebol []
alert "test.bat executed!"
---------------------------------
You may not have a rebol home, in which case you can substitute it for the real
path.
Incidently in this case it is essentially the same as the following in unix type
systems:
--- file named test.bat on unix ---
#!/usr/bin/rebol
rebol []
alert "test.bat executed!"
-----------------------
You could also put your script in a file full of garbage (without any nulls before
the embed) and use rebol's embedding ability to hide your script. example:
--- Batch file named test.bat ---
%rebol_home%\rebol test.bat
exit
~C2Tq!r@mR 斯-H=ɶm'LJZP7mZ`H'Ѐ
[0)"鋢:SK=v@p
[rebol []do decompress
#{789C4BCC492D2A51504ACECF2D284A2D2E4E4D5128492D2ED14B4A2C5148AD48
4D2E2D494D5154020007D80D8F25000000}]~C2Tq!r@mR
斯-H=ɶm'LJZP7mZ`H'Ѐ
[0)"鋢:SK=v@p
---------------------------------
And if you go one step further, you could create a .com, .exe, or other executable
file format that works off the same principal. One potential show stopper here is
that rebol stops seaching for embedded scripts when it comes onto a null character.
--Ryan
[nitsch-lists--netcologne--de] wrote:
> RE: [REBOL] Re: Selling REBOL scripts - Scott's Distributed Licence - tm
> [SunandaDH--aol--com] wrote:
<<quoted lines omitted: 33>>
> [rebol-request--rebol--com] with "unsubscribe" in the
> subject, without the quotes.
--
Ryan Cole
Programmer Analyst
www.iesco-dms.com
707-468-5400
The contradiction so puzzling to the ordinary way
of thinking comes from the fact that we have to use
language to communicate our inner experience
which in its very nature transcends lingistics.
-D.T. Suzuki
[5/6] from: sunandadh:aol at: 8-Jan-2002 17:19
Hi Volker,
> if thats the problem, how about distributing your scripts compressed?
> one has to use some tricks (select the compressed 64#{..} and store it
> to a file using write %file.r #{..}).
> thats similar effort as compiling?
Yes indeed. I've experimented with that too. Here's the outline of code to
compress a script:
foreach script-name [Main utilities Recovery gui-tools]
[
Script-file: read/binary to-file join script-name [".r"]
;; Loads of embarrassing early code omitted (I was
;; learning the basics back then)
;; 1. remove all comments (I should have used 'mold)
;; 2. obsfucate and shorten variable names
;; 3. strip multiple spaces and all newlines
write/binary to-file join script-name [".rll"]
compress script-file
] ;for
where each script (main.r etc) is an object full of functions. Then to
execute the code (ie make the objects available for use):
if error? try [do decompress read/binary %main.rll]
[print "Corrupt script. re-install, or panic now" halt]
etc
the application I wrote the "compressor" is just over 211K of scripts
(including comments, loads of spaced out code). the "compiled" version is
just under 40K
I chose RLL as an homage to DLL
But this sort of "safe" distribution technology can easily be built into
Rebol. It'll be safer (my compressed files are easily uncompressed by anyone
with a modicum of Rebol). And it'll be standard and secure, and give us all
loads of additional advantages.
Sunanda.
[6/6] from: ryanc:iesco-dms at: 8-Jan-2002 18:08
Hey Guys,
I just wrote a tiny program that you guys might find somewhat useful. It is a
16bit windows exe that uses Sunanda's decompressed binary method. It executes a
one line shell statement that, to put in exacting terms, "do decompress
read/binary %main.rll". Does some minor error checking too.
http://www.sonic.net/~gaia/misc/stub.exe
Make sure your rebol_home environment variable is set, and then just put your
own main.rll in with stub.exe.
--Ryan
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted