By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,143 Members | 1,919 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,143 IT Pros & Developers. It's quick & easy.

How to stop library mde being reused

P: n/a
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an mde.

There are also a few other situations where I suspect the mde may be getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed over
the years and am using it more and more in systems developed for clients and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff

Dec 20 '05 #1
Share this Question
Share on Google+
44 Replies


P: n/a

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over the years and am using it more and more in systems developed for
clients and had not really worried about it being knocked off, so to
speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff

I have always found that by writing code of a sufficiently poor standard has
been enough to deter any would-be thief. This seems to be a technique
widely used in the Access community.
Dec 20 '05 #2

P: n/a
Interesting approach, but don't know that my clients would agree.

Jeff

"Anthony England" <ae******@oops.co.uk> wrote in message
news:do**********@nwrdmz01.dmz.ncs.ea.ibs-infra.bt.com...

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found out that another developer discovered it while doing some
maintenance work on an old database for the same customer and has copied
it to use with her databases. Naturally, I was not impressed and that
story continues. It was not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this
customer the database is supplied with all source code and not compiled
into an mde.

There are also a few other situations where I suspect the mde may be
getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over the years and am using it more and more in systems developed for
clients and had not really worried about it being knocked off, so to
speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff

I have always found that by writing code of a sufficiently poor standard
has been enough to deter any would-be thief. This seems to be a technique
widely used in the Access community.

Dec 20 '05 #3

P: n/a
I like to think that I write lots of creative, original code.

Sometimes I am angry because it seems that someone has taken my code.

But at night time I realize that it's my brothers' code, Dev's code,
Professor T M K Davidson's code, Terry's code, Getz's code, Dimitri's
code, Michka's code, David's code (even), Appleman's code, J A Green's
code, rkc's code, Danny's code and the code of a thousand others who
have challenged me, taught me, motivated me, shown me, stimulated me,
embarrassed me, attacked me and encouraged me.

And I realize that if they created it in me I cannot own it. I must let
it go.

But I can write better code, tomorrow. And this takes away my anger.
And I like to think it pleases them.


I have only one recourse; I create a better piece of code.

Dec 21 '05 #4

P: n/a
I hate Google after I find that what I wrote it not what my mind
thought!

Dec 21 '05 #5

P: n/a
On Wed, 21 Dec 2005 08:54:55 +1000, "Jeff"
<je************@asken.com.au> wrote:

Perhaps I would in each function check the name of the domain the code
is running on. If you only run this MDE in a few locations, that might
be all that's needed. Domain names don't change all that often, but
when they do, be ready for a support call and a free upgrade.

Although I like Lyle's sentiment of being challenged to write a better
function tomorrow, I wouldn't give my library away either.

-Tom.

Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an mde.

There are also a few other situations where I suspect the mde may be getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed over
the years and am using it more and more in systems developed for clients and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff


Dec 21 '05 #6

P: n/a
I am sure that things (my code) will always get better, as it always has,
and that I have a lot of people to thank for advice, including yourself. But
there are also many years of my own experience and effort in the mix. I just
wish the person ripping off my code would pay the same piper.

An artist probably has their upbringing, their parents, their life's
experiences and much more to thank for their creations. But they still
charge and have the right to protect their creations.

If she walked up and asked for the money I am about to feed my family with,
she would not get it. But that is what she is taking.

If I had spent countless hours, and invested a lot of cash in, building a
house I would not let her live in it free of charge. But that is what went
into the library and now she has it, free of charge, and is in part making a
living from it.

She is local and my competition.

I can be very philosophical about this but the reality is that I earn a
living doing this and she is cashing in on my efforts, not hers. And I
believe that my family and needs take priority over hers. And besides, I
don't want to be benelovant about this.

If someone asks for my help, and she has on many occasions, I will help, but
not at any cost. There is a limit to my charity. She has exceed the limit.
And I would prefer that no one else has the opportunity to do the same.

She has take my assistance over the years, all without charge, and done
quite well. I am just a little pis... about this, and don't really want to
make it that easy for anyone else.

Jeff

"Lyle Fairfield" <ly***********@aim.com> wrote in message
news:11**********************@f14g2000cwb.googlegr oups.com...
I like to think that I write lots of creative, original code.

Sometimes I am angry because it seems that someone has taken my code.

But at night time I realize that it's my brothers' code, Dev's code,
Professor T M K Davidson's code, Terry's code, Getz's code, Dimitri's
code, Michka's code, David's code (even), Appleman's code, J A Green's
code, rkc's code, Danny's code and the code of a thousand others who
have challenged me, taught me, motivated me, shown me, stimulated me,
embarrassed me, attacked me and encouraged me.

And I realize that if they created it in me I cannot own it. I must let
it go.

But I can write better code, tomorrow. And this takes away my anger.
And I like to think it pleases them.


I have only one recourse; I create a better piece of code.

Dec 21 '05 #7

P: n/a
"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.


Is one of them user-level security? Sure it can be broken, but that would
cost your rival money.

Keith.
www.keithwilby.com
Dec 21 '05 #8

P: n/a

"Jeff" <je************@asken.com.au> schreef in bericht news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an mde.

There are also a few other situations where I suspect the mde may be getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed over
the years and am using it more and more in systems developed for clients and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff


Let your mainapp (or any app where you allow the use of this mde) create a file on startup and delete the file on close.
Let your library-code check for the existance of that file.
If the file does not exist ==>> do something really bad ... ;-)
Maybe the mainapp.ldb might even be a good choice. Access creates and deletes it for you automagically...

Let your mainapp (or any app ...) write to the registry. (Some setting whatever)
Let your library-code check for the existance of that setting.
If the setting does not exist ==>> do something really bad ... ;-)
On close of the mainapp delete the registrysetting.

Something like that will do I guess?

Arno R
Dec 21 '05 #9

P: n/a
That may work if they only had an MDE front-end. But a lot of clients have
the uncompiled MDB file for the front-end. That would of course have the
code to so this and therefore easily duplicated.

That is the main problem. With a MDB front-end anything I add to it is open
to the world.

Jeff

"Arno R" <ar***********@tiscali.nl> wrote in message
news:43***********************@text.nova.planet.nl ...

"Jeff" <je************@asken.com.au> schreef in bericht
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over
the years and am using it more and more in systems developed for clients
and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff


Let your mainapp (or any app where you allow the use of this mde) create a
file on startup and delete the file on close.
Let your library-code check for the existance of that file.
If the file does not exist ==>> do something really bad ... ;-)
Maybe the mainapp.ldb might even be a good choice. Access creates and
deletes it for you automagically...

Let your mainapp (or any app ...) write to the registry. (Some setting
whatever)
Let your library-code check for the existance of that setting.
If the setting does not exist ==>> do something really bad ... ;-)
On close of the mainapp delete the registrysetting.

Something like that will do I guess?

Arno R
Dec 21 '05 #10

P: n/a
How can you secure a library MDE with user level security? Especially when
some clients must be able to use the library with databases they create.

I thought of giving the client a code that the library checks for, but if
someone gets hold of their MDB front-end that uses the library then they can
find the code etc.

"Keith Wilby" <he**@there.com> wrote in message
news:43**********@glkas0286.greenlnk.net...
"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.


Is one of them user-level security? Sure it can be broken, but that would
cost your rival money.

Keith.
www.keithwilby.com

Dec 21 '05 #11

P: n/a
What do you mean domain? These are run in local networks.

"Tom van Stiphout" <no*************@cox.net> wrote in message
news:qe********************************@4ax.com...
On Wed, 21 Dec 2005 08:54:55 +1000, "Jeff"
<je************@asken.com.au> wrote:

Perhaps I would in each function check the name of the domain the code
is running on. If you only run this MDE in a few locations, that might
be all that's needed. Domain names don't change all that often, but
when they do, be ready for a support call and a free upgrade.

Although I like Lyle's sentiment of being challenged to write a better
function tomorrow, I wouldn't give my library away either.

-Tom.

Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over
the years and am using it more and more in systems developed for clients
and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff

Dec 21 '05 #12

P: n/a
On Wed, 21 Dec 2005 23:20:18 +1000, "Jeff"
<je************@asken.com.au> wrote:

Detect the domain or workgroup the computer is a member of.
-Tom.

What do you mean domain? These are run in local networks.

"Tom van Stiphout" <no*************@cox.net> wrote in message
news:qe********************************@4ax.com.. .
On Wed, 21 Dec 2005 08:54:55 +1000, "Jeff"
<je************@asken.com.au> wrote:

Perhaps I would in each function check the name of the domain the code
is running on. If you only run this MDE in a few locations, that might
be all that's needed. Domain names don't change all that often, but
when they do, be ready for a support call and a free upgrade.

Although I like Lyle's sentiment of being challenged to write a better
function tomorrow, I wouldn't give my library away either.

-Tom.

Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over
the years and am using it more and more in systems developed for clients
and
had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff


Dec 21 '05 #13

P: n/a
"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
How can you secure a library MDE with user level security? Especially when
some clients must be able to use the library with databases they create.

I thought of giving the client a code that the library checks for, but if
someone gets hold of their MDB front-end that uses the library then they
can find the code etc.

Yes, fair point. I hadn't quite grasped the complexity of the situation
(and probably still haven't).
Dec 21 '05 #14

P: n/a
As far as the 'registration code'-type idea goes, you could use a code
that is generated by each machine the database runs on. Then, if you
are writing a database for CompanyX to use on internal domain yza, you
can have your program compute the code on startup and check to see if
it matches the 'permanent' code stored in a hidden table/registry
setting. The 'permanent' code would be set by you when the database is
set up on the client machine. Basically I'm talking about a different
application for the old password-hashing scheme, but using a
machine/domain-dependent algorithm instead of a user's password.

If the code generated on startup is different than the stored code, you
could then take action. A messagebox alerting the user of the problem,
or, perhaps more appropriate, a modal pop-up form with DoCmd.Exit in
its Close event.

The problem with this scheme, or any environment-dependent scheme, is
that if your rival is working on your clients' machines, she'll have
access to everything. All she'd have to do is copy 'n' paste to get
your code. Setting up a system like this, however, would make it more
difficult for her.

Dec 21 '05 #15

P: n/a

"Jeff" <je************@asken.com.au> schreef in bericht news:43***********************@per-qv1-newsreader-01.iinet.net.au...
That may work if they only had an MDE front-end. But a lot of clients have
the uncompiled MDB file for the front-end. That would of course have the
code to so this and therefore easily duplicated.

That is the main problem. With a MDB front-end anything I add to it is open
to the world.


Hmmm. ... true indeed...
Your mde-code needs to check for something that is *not* coded in the mdb, right?

So the suggestion of using the ldb-file could work or not??
Let all your mde-functions check the existence of a specific ldb-file...

Arno R
Dec 21 '05 #16

P: n/a
Simplest way is to use a key on each function call. Do something like use
guidgen to generate a GUID and then use it as a key when you call into the
function/procedure check the value of the key passed in the function if it
matches then carry on if it fails to match then kick out without any
processing.

It's not 100% secure but will probably stop 99.9% of people utilising your
library.

I'm taking it that your distributed apps are compiled to MDEs as well as
your library database

e,g,
In your app

Public const FUNCTION_KEY = "{E9159311-865A-47f0-8867-C483C366F4D2}"
Sub Somprocedure()
' Call intothe library

Call LibProc(FUNCTION_KEY, otherparam1, otherparam2)
End sub
Then in the library

Public const FUNCTION_KEY = "{E9159311-865A-47f0-8867-C483C366F4D2}"
Sub LibProc(key as string, Wrg1, Arg2)
If StrComp(key, FUNCTION_KEY, vbComparebinary) <> 0 then Exit Sub

' Existing code here
End sub

It's bit cludgy but it's simple.

--
Terry Kreft

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over the years and am using it more and more in systems developed for
clients and had not really worried about it being knocked off, so to
speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff



Dec 21 '05 #17

P: n/a
Ahh, from later posts I see you're not using mdes. So forget this.

--
Terry Kreft

"Terry Kreft" <te*********@mps.co.uk> wrote in message
news:OF********************@karoo.co.uk...
Simplest way is to use a key on each function call. Do something like use
guidgen to generate a GUID and then use it as a key when you call into the
function/procedure check the value of the key passed in the function if it
matches then carry on if it fails to match then kick out without any
processing.

It's not 100% secure but will probably stop 99.9% of people utilising your
library.

I'm taking it that your distributed apps are compiled to MDEs as well as
your library database

e,g,
In your app

Public const FUNCTION_KEY = "{E9159311-865A-47f0-8867-C483C366F4D2}"
Sub Somprocedure()
' Call intothe library

Call LibProc(FUNCTION_KEY, otherparam1, otherparam2)
End sub
Then in the library

Public const FUNCTION_KEY = "{E9159311-865A-47f0-8867-C483C366F4D2}"
Sub LibProc(key as string, Wrg1, Arg2)
If StrComp(key, FUNCTION_KEY, vbComparebinary) <> 0 then Exit Sub

' Existing code here
End sub

It's bit cludgy but it's simple.

--
Terry Kreft

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found
out that another developer discovered it while doing some maintenance
work
on an old database for the same customer and has copied it to use with
her
databases. Naturally, I was not impressed and that story continues. It
was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this
customer
the database is supplied with all source code and not compiled into an
mde.

There are also a few other situations where I suspect the mde may be
getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed
over the years and am using it more and more in systems developed for
clients and had not really worried about it being knocked off, so to
speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they
put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff



Dec 21 '05 #18

P: n/a
Create a list of all your applications in the library, then have an
initialization function check the database properties of your front end. It
would be hard for a 3rd party to know what your library is looking for. If
they figured it out they would have to duplicate your application name.

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I found
out that another developer discovered it while doing some maintenance work
on an old database for the same customer and has copied it to use with her
databases. Naturally, I was not impressed and that story continues. It was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this customer
the database is supplied with all source code and not compiled into an mde.
There are also a few other situations where I suspect the mde may be getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed over the years and am using it more and more in systems developed for clients and had not really worried about it being knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff


Dec 21 '05 #19

P: n/a
If you have to touch the library every time you create a new app that sort
of defeats the point of having a library.

--
Terry Kreft

"paii, Ron" <pa**@packairinc.com> wrote in message
news:3c******************************@athenet.net. ..
Create a list of all your applications in the library, then have an
initialization function check the database properties of your front end.
It
would be hard for a 3rd party to know what your library is looking for. If
they figured it out they would have to duplicate your application name.

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found
out that another developer discovered it while doing some maintenance
work
on an old database for the same customer and has copied it to use with
her
databases. Naturally, I was not impressed and that story continues. It
was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this
customer
the database is supplied with all source code and not compiled into an

mde.

There are also a few other situations where I suspect the mde may be

getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed

over
the years and am using it more and more in systems developed for clients

and
had not really worried about it being knocked off, so to speak, until
now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they

put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff



Dec 21 '05 #20

P: n/a
Include in the list future application ID information which could be
assigned to your applications as created. Combining this code with
information identifying your company name would make it difficult for some
3rd party to hide the fact they stole your library.

"Terry Kreft" <te*********@mps.co.uk> wrote in message
news:fG********************@karoo.co.uk...
If you have to touch the library every time you create a new app that sort
of defeats the point of having a library.

--
Terry Kreft

"paii, Ron" <pa**@packairinc.com> wrote in message
news:3c******************************@athenet.net. ..
Create a list of all your applications in the library, then have an
initialization function check the database properties of your front end.
It
would be hard for a 3rd party to know what your library is looking for. If they figured it out they would have to duplicate your application name.

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found
out that another developer discovered it while doing some maintenance
work
on an old database for the same customer and has copied it to use with
her
databases. Naturally, I was not impressed and that story continues. It
was
not the customers fault.

I assume she took a copy of the original code from the customers database and is working out how to use the library mde from that. For this
customer
the database is supplied with all source code and not compiled into an

mde.

There are also a few other situations where I suspect the mde may be

getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed

over
the years and am using it more and more in systems developed for clients
and
had not really worried about it being knocked off, so to speak, until
now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they

put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any

at this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff




Dec 21 '05 #21

P: n/a
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
Hi

I have a library mde that is used with some customer databases and
I found out that another developer discovered it while doing some
maintenance work on an old database for the same customer and has
copied it to use with her databases. Naturally, I was not
impressed and that story continues. It was not the customers
fault.

I assume she took a copy of the original code from the customers
database and is working out how to use the library mde from that.
For this customer the database is supplied with all source code
and not compiled into an mde.

There are also a few other situations where I suspect the mde may
be getting reused without my permission.

Basically, the mde contains a whole bunch of functions I have
developed over the years and am using it more and more in systems
developed for clients and had not really worried about it being
knocked off, so to speak, until now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases
they put together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with
any at this stage.

Any suggestions on a reasonably simple method of stopping, or at
least limiting, this from happening again would be appreciated.


Your contract with the client has to control it. After my signature,
I've appended the language I've used where I have exactly the
architecture you've described.

Assuming you have some kind of contract with your client that has
equivalent limitations in it, I believe it's the client's
responsibility to discipline its contractors to not violate the
agreements they've entered into.

If you lack such language in your contract, then it's up to you to
enforce it. Assuming you have already failed at having a reasonable
discussion with the developer who is using it without your
permission, I'd see a lawyer. Perhaps the mere threat of legal
action would get them to stop.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/

================================================== ===============

APPLICATION COMPONENTS

The completed application will consist of four component parts:

1. An Access2000 MDB file for storing the shared application data
(installed on file server)

2. An Access2000 MDE file for running the application and
viewing/manipulating data in the shared application data MDB
(installed on each client workstation)

3. An Access2000 MDB file including full source code for producing
the MDE file (for reference use and as the basis for future
development)

4. An Access2000 MDE function library (installed on each client
workstation)

Items 1-2 will be fully owned by [CLIENT], while item 4 will be
licensed from David W. Fenton for use by [CLIENT] employees and
affiliates. [CLIENT] will have rights to use and further develop
item 3 as outlined in the following section. During the development
process, the architecture may be simplified to make component
testing more efficient.

SOURCE CODE RIGHTS

[CLIENT] acquires the rights to use and distribute the finished
application as a whole to its employees and affiliates, without
limitation.

Further, [CLIENT] obtains ownership and rights to the source code
in the application MDB (see #3 under APPLICATION COMPONENTS, above)
to alter or enhance as [CLIENT] sees fit.

Also, [CLIENT] obtains a license from David W. Fenton to use the
supporting function library (APPLICATION COMPONENT #4) as part of
the application only, but acquires no rights to distribute, sell or
alter this library, or to utilize it in any other applications.

Neither [CLIENT] nor David W. Fenton may distribute or sell the
application as a whole, or anything derived from the source code MDB
(component #3), unless both parties agree to that distribution or
sale.
Dec 21 '05 #22

P: n/a
Tom van Stiphout <no*************@cox.net> wrote in
news:qe********************************@4ax.com:
Perhaps I would in each function check the name of the domain the
code is running on. If you only run this MDE in a few locations,
that might be all that's needed. Domain names don't change all
that often, but when they do, be ready for a support call and a
free upgrade.


Well, the horse is already out of the barn, no?

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 21 '05 #23

P: n/a
"Terry Kreft" <te*********@mps.co.uk> wrote in
news:OF********************@karoo.co.uk:
I'm taking it that your distributed apps are compiled to MDEs as
well as your library database


Yes, but he already said that the client has the source code MDB and
that the developer probably took a copy of that to figure out how to
use his library. Using a GUID or any other form of validation simply
won't work, as so soon as you can figure out what *does* work, you
can write something to pass something valid to the MDE.

I don't think there's any technical solution to this problem.

There are only ethical/legal solutions.

The client should fire the other developer if she won't stop
stealing from the client's other developers.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 21 '05 #24

P: n/a
"Lyle Fairfield" <ly***********@aim.com> wrote in
news:11**********************@f14g2000cwb.googlegr oups.com:
But at night time I realize that it's my brothers' code, Dev's
code, Professor T M K Davidson's code, Terry's code, Getz's code,
Dimitri's code, Michka's code, David's code (even), Appleman's
code, J A Green's code, rkc's code, Danny's code and the code of a
thousand others who have challenged me, taught me, motivated me,
shown me, stimulated me, embarrassed me, attacked me and
encouraged me.

And I realize that if they created it in me I cannot own it. I
must let it go.


This is precisely one of the best reasons for bundling an MDE
library, because you are borrowing code from a number of people
who've not necessarily explicitly granted you the right to
distribute their code.

With an MDE library, there's a constant friction between protecting
the actual source code and exposing the functionality. If the client
wants to take over development and continue to use your library
(which is reasonable, if you've licensed it that way), then you
really ought to be documenting the interfaces for the code in your
library so that anyone should be able to use them. But you'd want to
be sure your contract limits the use of the library to the
application it was sold with.

This is also why I never use a generic library -- instead, I create
a library of only the code that is used in that particular app.

In order to make this easier, during development, I segregate all
this code in a single module, or in modules using a naming
convention that identifies them as bound for a library database. And
with class modules, you have to save them out and alter them and
import them into the libary database in order to make them fully
usable, anyway.

But the result is a libary that includes only the code that is used
in that particular application. This means you don't have to
document everything, just the code that is used and that could
conceivably be needed by another developer working on the main body
of the app.

Of course, anyone could reverse engineer your code.

But the point is that they won't.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 21 '05 #25

P: n/a
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
That may work if they only had an MDE front-end. But a lot of
clients have the uncompiled MDB file for the front-end. That would
of course have the code to so this and therefore easily
duplicated.

That is the main problem. With a MDB front-end anything I add to
it is open to the world.


Well, the horse is also already out of the barn. It would work only
if she got hold of the new version of the library with these outside
dependencies.

You have to talk to her and ask her to do the right thing.

Failing that, talk to the client that employees both of you and ask
them to pressure her to do the right thing.

Failing that, see a lawyer and threaten her with legal action.

Failing that, take legal action. She can't possibly win, though she
may have nothing whatsoever to collect in damages.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 21 '05 #26

P: n/a
David W. Fenton wrote:
"Lyle Fairfield" <ly***********@aim.com> wrote in
news:11**********************@f14g2000cwb.googlegr oups.com:
But at night time I realize that it's my brothers' code, Dev's
code, Professor T M K Davidson's code, Terry's code, Getz's code,
Dimitri's code, Michka's code, David's code (even), Appleman's
code, J A Green's code, rkc's code, Danny's code and the code of a
thousand others who have challenged me, taught me, motivated me,
shown me, stimulated me, embarrassed me, attacked me and
encouraged me.

And I realize that if they created it in me I cannot own it. I
must let it go.


This is precisely one of the best reasons for bundling an MDE
library, because you are borrowing code from a number of people
who've not necessarily explicitly granted you the right to
distribute their code.


That is not what I said, nor was it what I intended to say.

Dec 21 '05 #27

P: n/a
Mmm...that may actually work is some situations. It would be a bit of a pain
but I could create a unique version of the library to suit a clients
workgroup. In that way they can create and work on databases as long as they
remain within that workgroup.

Thanks
Dec 21 '05 #28

P: n/a
It is for her, but as I mentioned in another post this may actually work for
some clients. Just means a uniquely compiled library for that customer,
expecting a specific workgroup.

Jeff

"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn**********************************@127.0.0. 1...
Tom van Stiphout <no*************@cox.net> wrote in
news:qe********************************@4ax.com:
Perhaps I would in each function check the name of the domain the
code is running on. If you only run this MDE in a few locations,
that might be all that's needed. Domain names don't change all
that often, but when they do, be ready for a support call and a
free upgrade.


Well, the horse is already out of the barn, no?

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/

Dec 21 '05 #29

P: n/a
Its just that legal action is so expensive, and I would doubt it was worth
it.

Talking to the client is reasonable, and I have done this, but have not
expressed a view that it is their responsibility. Don't think that would go
down well with one in particular.

Jeff

"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn**********************************@127.0.0. 1...
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
That may work if they only had an MDE front-end. But a lot of
clients have the uncompiled MDB file for the front-end. That would
of course have the code to so this and therefore easily
duplicated.

That is the main problem. With a MDB front-end anything I add to
it is open to the world.


Well, the horse is also already out of the barn. It would work only
if she got hold of the new version of the library with these outside
dependencies.

You have to talk to her and ask her to do the right thing.

Failing that, talk to the client that employees both of you and ask
them to pressure her to do the right thing.

Failing that, see a lawyer and threaten her with legal action.

Failing that, take legal action. She can't possibly win, though she
may have nothing whatsoever to collect in damages.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/

Dec 21 '05 #30

P: n/a

"Jeff" <je************@asken.com.au> schreef in bericht news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Mmm...that may actually work is some situations. It would be a bit of a pain
but I could create a unique version of the library to suit a clients
workgroup. In that way they can create and work on databases as long as they
remain within that workgroup.

Thanks


Just curious...
I wonder what might be wrong with my suggestion of checking the ldb-file?
Would this not work in your situation? Or am I just missing the obvious here??
It is very unlikely that another developer uses the *very same name* for an app, or ??
Also: My customers are *not* renaming the application.mdb; this would indeed be a problem though...

But this method (checking the existance of the ldb-file that Access 'always' creates) is very easy IMO.
I guess it is hard to be detected, and it is *not* to be detected by checking the code in the delivered mdb.

I was thinking of implementing this myself with a codelib.mde I delivered recently.
Just curious about any other drawbacks of protecting the code this way.

Arno R
Dec 21 '05 #31

P: n/a
I thought of having a system that creates a code from a few database
specific items, such as database filename, start-up form name, things that
are not computer specific. Then having the client tell me these so I could
generate a code to give them to include in their front-end as a constant.
The library would know how to decode this and check that the database had
those properties.

This would mean that each new database they created with the library meant
they would have to get a code from me, but only have to do it once. Not too
bad, and would mean that to steal the library and use it elsewhere would
mean having a front-end with all the same properties. If the filename was
specific this would at least seem a bit strange to clients. Especially if
the front-end was called 'ABCCompany.mdb' and the client was 'XYZCompany'.
Having the same start-up form in each would not be so strange though. So my
dilemma was coming up with enough database properties that really mattered.

Other than that I thought this may be a good solution. And I don't think it
unacceptable to have the client request a code for each new database
application the develop.

Jeff

"paii, Ron" <pa**@packairinc.com> wrote in message
news:3c******************************@athenet.net. ..
Create a list of all your applications in the library, then have an
initialization function check the database properties of your front end.
It
would be hard for a 3rd party to know what your library is looking for. If
they figured it out they would have to duplicate your application name.

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found
out that another developer discovered it while doing some maintenance
work
on an old database for the same customer and has copied it to use with
her
databases. Naturally, I was not impressed and that story continues. It
was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this
customer
the database is supplied with all source code and not compiled into an

mde.

There are also a few other situations where I suspect the mde may be

getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed

over
the years and am using it more and more in systems developed for clients

and
had not really worried about it being knocked off, so to speak, until
now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they

put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff



Dec 21 '05 #32

P: n/a
Arno

Check my response to Rom Paii. I had considered a method similar to this. In
my version I had a code included in the front-end as a constant that was
things that are database specific encoded in some way. It thought of using
the database filename, maybe start-up form name etc. The client would supply
me with these and I would encode it. They would then include that in their
front-end and the library would know how to decode it and check the file
properties.

The client would not know how it was encoded, neither would the person
ripping it off. They would have to use the same filename etc with all the
databases they created. If I insisted that the filename was specific to the
company, such as 'ABCComnpany.mdb' then reusing that for other clients would
surely make the client suspicious and ask questions.

Not foolproof, but maybe a good deterrent.

Jeff

"Arno R" <ar***********@tiscali.nl> wrote in message
news:43***********************@text.nova.planet.nl ...

"Jeff" <je************@asken.com.au> schreef in bericht
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Mmm...that may actually work is some situations. It would be a bit of a
pain
but I could create a unique version of the library to suit a clients
workgroup. In that way they can create and work on databases as long as
they
remain within that workgroup.

Thanks


Just curious...
I wonder what might be wrong with my suggestion of checking the ldb-file?
Would this not work in your situation? Or am I just missing the obvious
here??
It is very unlikely that another developer uses the *very same name* for an
app, or ??
Also: My customers are *not* renaming the application.mdb; this would indeed
be a problem though...

But this method (checking the existance of the ldb-file that Access 'always'
creates) is very easy IMO.
I guess it is hard to be detected, and it is *not* to be detected by
checking the code in the delivered mdb.

I was thinking of implementing this myself with a codelib.mde I delivered
recently.
Just curious about any other drawbacks of protecting the code this way.

Arno R
Dec 21 '05 #33

P: n/a
On Thu, 22 Dec 2005 08:42:21 +1000, "Jeff"
<je************@asken.com.au> wrote:

In the USA we have a "small claims" process that covers cases up to
US$5000 and can be handled without an attorney. Perhaps your country
has a similar process?

-Tom.

Its just that legal action is so expensive, and I would doubt it was worth
it.

Talking to the client is reasonable, and I have done this, but have not
expressed a view that it is their responsibility. Don't think that would go
down well with one in particular.

Jeff

"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn**********************************@127.0.0 .1...
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
That may work if they only had an MDE front-end. But a lot of
clients have the uncompiled MDB file for the front-end. That would
of course have the code to so this and therefore easily
duplicated.

That is the main problem. With a MDB front-end anything I add to
it is open to the world.


Well, the horse is also already out of the barn. It would work only
if she got hold of the new version of the library with these outside
dependencies.

You have to talk to her and ask her to do the right thing.

Failing that, talk to the client that employees both of you and ask
them to pressure her to do the right thing.

Failing that, see a lawyer and threaten her with legal action.

Failing that, take legal action. She can't possibly win, though she
may have nothing whatsoever to collect in damages.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/


Dec 22 '05 #34

P: n/a
On Thu, 22 Dec 2005 09:32:46 +1000, "Jeff"
<je************@asken.com.au> wrote:

I wasn't sure how far you wanted to take this, but yes, that's a good
solution which I have used several times.
You can use this same solution to provide a demo mode that expires
after n days, unless the user calls you and gets a code to either make
it legal, or extend the demo for another 30 days.

-Tom.

I thought of having a system that creates a code from a few database
specific items, such as database filename, start-up form name, things that
are not computer specific. Then having the client tell me these so I could
generate a code to give them to include in their front-end as a constant.
The library would know how to decode this and check that the database had
those properties.

This would mean that each new database they created with the library meant
they would have to get a code from me, but only have to do it once. Not too
bad, and would mean that to steal the library and use it elsewhere would
mean having a front-end with all the same properties. If the filename was
specific this would at least seem a bit strange to clients. Especially if
the front-end was called 'ABCCompany.mdb' and the client was 'XYZCompany'.
Having the same start-up form in each would not be so strange though. So my
dilemma was coming up with enough database properties that really mattered.

Other than that I thought this may be a good solution. And I don't think it
unacceptable to have the client request a code for each new database
application the develop.

Jeff

"paii, Ron" <pa**@packairinc.com> wrote in message
news:3c******************************@athenet.net ...
Create a list of all your applications in the library, then have an
initialization function check the database properties of your front end.
It
would be hard for a 3rd party to know what your library is looking for. If
they figured it out they would have to duplicate your application name.

"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
Hi

I have a library mde that is used with some customer databases and I
found
out that another developer discovered it while doing some maintenance
work
on an old database for the same customer and has copied it to use with
her
databases. Naturally, I was not impressed and that story continues. It
was
not the customers fault.

I assume she took a copy of the original code from the customers database
and is working out how to use the library mde from that. For this
customer
the database is supplied with all source code and not compiled into an

mde.

There are also a few other situations where I suspect the mde may be

getting
reused without my permission.

Basically, the mde contains a whole bunch of functions I have developed

over
the years and am using it more and more in systems developed for clients

and
had not really worried about it being knocked off, so to speak, until
now.

After this little incident I have given this some thought.

I want to allow some customers to reuse the library with databases they

put
together, but stop this rip off happening again.

I have considered a few options, but am not really that happy with any at
this stage.

Any suggestions on a reasonably simple method of stopping, or at least
limiting, this from happening again would be appreciated.

Jeff




Dec 22 '05 #35

P: n/a
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
Its just that legal action is so expensive, and I would doubt it
was worth it.


The threat of legal action may be sufficient, precisely because, as
you say "legal action is so expensive."

But you do have to be willing to follow through on it.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 22 '05 #36

P: n/a
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
Mmm...that may actually work is some situations. It would be a bit
of a pain but I could create a unique version of the library to
suit a clients workgroup. In that way they can create and work on
databases as long as they remain within that workgroup.


Anyone smart enough to steal the library is probably going to be
smart enough to steal the workgroup file.

Or spend the $150 it costs to break workgroup security.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 22 '05 #37

P: n/a
Is this kind of thing really worthwhile?

I find almost all people to be at least honest, and mostly helpful.

I have no code that I would not gladly share with anyone who politely
asked for it.

In all my life I can think of only two occasions when something has
been stolen from me. Neither was significant so far as my general
wealth was concerned.

I enjoy my work. I can think of only one time when it disappointed me,
and that, only slightly. I steered a new contract to a partner whom I
thought was a friend because I had too much other work at the time. Our
understanding, I thought, was that in a month or two, some of the work
would come back to me. None came. But I had other work and life went
on.

Perhaps I'm naive? Perhaps evil is waiting round the corner to destroy
me.

Let's think about the $5000 and small claims court. Would the process
require time and attention? Would it result in anguish and lost sleep?
Might one not do $5000 work with the equivalent time and attention, and
perhaps less anguish and more sleep?

Perhaps, someone is saying, "He doesn't understand." He/she is right.

Dec 22 '05 #38

P: n/a
I agree basically. Legal action is hardly worth it. And most people I have
met are honest.

Its a bit like why we put locks on our doors. Will they really stop those
professionals? No. But they will deter the opportunist, and that I believe
is mainly what I am trying to do here.

Jeff

"Lyle Fairfield" <ly***********@aim.com> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...
Is this kind of thing really worthwhile?

I find almost all people to be at least honest, and mostly helpful.

I have no code that I would not gladly share with anyone who politely
asked for it.

In all my life I can think of only two occasions when something has
been stolen from me. Neither was significant so far as my general
wealth was concerned.

I enjoy my work. I can think of only one time when it disappointed me,
and that, only slightly. I steered a new contract to a partner whom I
thought was a friend because I had too much other work at the time. Our
understanding, I thought, was that in a month or two, some of the work
would come back to me. None came. But I had other work and life went
on.

Perhaps I'm naive? Perhaps evil is waiting round the corner to destroy
me.

Let's think about the $5000 and small claims court. Would the process
require time and attention? Would it result in anguish and lost sleep?
Might one not do $5000 work with the equivalent time and attention, and
perhaps less anguish and more sleep?

Perhaps, someone is saying, "He doesn't understand." He/she is right.

Dec 22 '05 #39

P: n/a
I just wonder how the client will take having to get a code. Given that this
is fairly common to software today I suppose they will take it in their
stride.

Jeff

"Tom van Stiphout" <no*************@cox.net> wrote in message
news:na********************************@4ax.com...
On Thu, 22 Dec 2005 09:32:46 +1000, "Jeff"
<je************@asken.com.au> wrote:

I wasn't sure how far you wanted to take this, but yes, that's a good
solution which I have used several times.
You can use this same solution to provide a demo mode that expires
after n days, unless the user calls you and gets a code to either make
it legal, or extend the demo for another 30 days.

-Tom.

Dec 22 '05 #40

P: n/a
Sky
"Jeff" <je************@asken.com.au> wrote in message
news:43***********************@per-qv1-newsreader-01.iinet.net.au...
I just wonder how the client will take having to get a code. Given that this is fairly common to software today I suppose they will take it in their
stride.

Jeff


I assume you have a standard way of installing your applications, or even
installing your library for use in development. (If not, you probably should
have a self-contained installer, if only to reduce support for multiple
users. For example, I use InnoSetup to create a self-contained executable
install package.)

Your installation procedure could set an obscure registry value that is not
used at all in your front-end MDB application. When your front end calls the
library initialization function, the library could check for that obscure
registry value and stop if it is incorrect.

- Steve
Dec 22 '05 #41

P: n/a
"Jeff" <je************@asken.com.au> wrote in
news:43***********************@per-qv1-newsreader-01.iinet.net.au:
"Lyle Fairfield" <ly***********@aim.com> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com
[]
Let's think about the $5000 and small claims court. Would the
process require time and attention? Would it result in anguish
and lost sleep? Might one not do $5000 work with the equivalent
time and attention, and perhaps less anguish and more sleep?

Perhaps, someone is saying, "He doesn't understand." He/she is
right.


There's one aspect in which it may be important to file something
official: if you go to small claims court, and win a judgment
against this developer, whether or not you can ever collect on it,
you have at least put into the public record that the individual in
question is dishonest. That may be the best you can do, to damage
the public reputation of the thief.
I agree basically. Legal action is hardly worth it. And most
people I have met are honest.

Its a bit like why we put locks on our doors. Will they really
stop those professionals? No. But they will deter the opportunist,
and that I believe is mainly what I am trying to do here.


If you know someone stole from you, you still file a police report,
even if you know that the police can never actually catch and
prosecute the individual.

Of course, I'm not certain that a case like this can actually be
filed in small claims court. It's rather nebulous in terms of the
offense, and small claims court tends to be for pretty cut-and-dried
issues, almost all limited to "someone owes me money and hasn't
paid." Questions of infringement of intellectual property are
factually much more complex. Even though it's quite clear to us that
your rights have been infringed, from a legal standpoint, there
isn't necessarily any clearcut answer as to what damages flow from
that fact.

Talk to a lawyer.

But perhaps your best leverage is simply to make clear to your
client that this is unethical and shouldn't be happening, and that
you expect *them* to do something about it, or they will be seen by
you as condoning the theft. They didn't instigate it, nor would they
have approved it if asked by her (yes?), but they now know about it
and ought to do whatever they can to let her know that they don't
like contractors who behave dishonestly.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 22 '05 #42

P: n/a
"Sky" <sk*@NOSPAMstanleyassociates.com> wrote in
news:zSrqf.787$2B5.516@trnddc01:
I assume you have a standard way of installing your applications,
or even installing your library for use in development. (If not,
you probably should have a self-contained installer, if only to
reduce support for multiple users. For example, I use InnoSetup to
create a self-contained executable install package.)

Your installation procedure could set an obscure registry value
that is not used at all in your front-end MDB application. When
your front end calls the library initialization function, the
library could check for that obscure registry value and stop if it
is incorrect.


Does InnoSetup allow you to require an installation code of some
kind? That is, say it stores an MD5 encryption of some code, and the
user has to type that in to install the library? Otherwise, anyone
who can get his or her hands on the installer could use it.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/
Dec 22 '05 #43

P: n/a
Sky
"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn**********************************@127.0.0. 1...
"Sky" <sk*@NOSPAMstanleyassociates.com> wrote in
news:zSrqf.787$2B5.516@trnddc01:
I assume you have a standard way of installing your applications,
or even installing your library for use in development. (If not,
you probably should have a self-contained installer, if only to
reduce support for multiple users. For example, I use InnoSetup to
create a self-contained executable install package.)

Your installation procedure could set an obscure registry value
that is not used at all in your front-end MDB application. When
your front end calls the library initialization function, the
library could check for that obscure registry value and stop if it
is incorrect.


Does InnoSetup allow you to require an installation code of some
kind? That is, say it stores an MD5 encryption of some code, and the
user has to type that in to install the library? Otherwise, anyone
who can get his or her hands on the installer could use it.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/


Yes, InnoSetup does have that capability. It also permits customization by
code, or it can call your own application or DLL during setup, so you can do
basically anything if you are willing to code. Actually, most installers can
do that. (I like InnoSetup because it is powerful, simple to use, open
source, and actively maintained.)

As with all installers, you can easily embed a license that the customer
must agree to. This might help to formalize the entire process with the
customer.

But if your customer is passing out your installation package for use by
another developer, well that is a different situation and I was not trying
to address case that specifically.

- Steve
Dec 22 '05 #44

P: n/a
Hmm, yes, I spoted ion a later posting that mdb files are being distributed.
There probably isn't a lot to be done in stopping this happening in that
case, except making the library so specific to the application that it
ceases to be a generic library, rather as you suggest elsewhere in this
thread.
--
Terry Kreft

"David W. Fenton" <XX*******@dfenton.com.invalid> wrote in message
news:Xn*********************************@127.0.0.1 ...
"Terry Kreft" <te*********@mps.co.uk> wrote in
news:OF********************@karoo.co.uk:
I'm taking it that your distributed apps are compiled to MDEs as
well as your library database


Yes, but he already said that the client has the source code MDB and
that the developer probably took a copy of that to figure out how to
use his library. Using a GUID or any other form of validation simply
won't work, as so soon as you can figure out what *does* work, you
can write something to pass something valid to the MDE.

I don't think there's any technical solution to this problem.

There are only ethical/legal solutions.

The client should fire the other developer if she won't stop
stealing from the client's other developers.

--
David W. Fenton http://www.dfenton.com/
usenet at dfenton dot com http://www.dfenton.com/DFA/

Jan 3 '06 #45

This discussion thread is closed

Replies have been disabled for this discussion.