Re: namespace protection compatible with the OSD?

2001-04-23 Thread phil hunt

On Fri, 20 Apr 2001, Brian Behlendorf wrote:
 On Thu, 19 Apr 2001, Rod Dixon, J.D., LL.M. wrote:
  I am sorry about joining the discussion late. This sounds interesting.
  Brian, do you mind clarifying your question without rehashing what has been
  discussed? I do not want to bore those who have followed the thread, but
  what do you mean by implement and what is the concern you are raising?
 
 I was wondering if there was a way, compatible with the Open
 Source Definition as well as acceptable to others in the community, to
 create a copyright license for an API specification that helps ensure
 compatibility of derivative works. 

If by ensure compatibility of derivative works you mean forbid thre
creation of incompatible derived works, then I think the answer is no.
From the OSD:

   3. Derived Works

   The license must allow modifications and derived works, and must
   allow them to be distributed under the same terms as the license of
   the original software.

However, since any derivative works of a strong copylefted license must
also be open source, it is difficult to impossible for an unscrupulous
person to use software under a strong copyleft license to do an
embrace, extend, and extinguish strategy.

I personally am not all that bothered about obfuscated interfaces,
*provided* that open source programmers are legally permitted to
reverse-engineer them. Unfortunately, due to iniquitous copyright and
patent laws, this is sometimes not the case.

So perhaps there should be an open source license, which says that if
a company uses software under that license, then they must allow people
to use all their proprietary interfaces. (Imagine if Amazon was forced
to either abandon their 1-click patent, or wipe all the open source
software off all their hard disks).

-- 
* Phil Hunt * 
An unforseen issue has arisen with your computer. Don't worry your silly 
little head about what has gone wrong; here's a pretty animation of a 
paperclip to look at instead.
 -- Windows2007 error message





Re: namespace protection compatible with the OSD?

2001-04-20 Thread Brian Behlendorf

On Thu, 19 Apr 2001, Rod Dixon, J.D., LL.M. wrote:
 I am sorry about joining the discussion late. This sounds interesting.
 Brian, do you mind clarifying your question without rehashing what has been
 discussed? I do not want to bore those who have followed the thread, but
 what do you mean by "implement" and what is the concern you are raising?

I was wondering if there was a way, compatible with the Open
Source Definition as well as acceptable to others in the community, to
create a copyright license for an API specification that helps ensure
compatibility of derivative works.  If the GPL's ethos is "access to
source code is paramount", this one's would be "compatibility between
implementations is paramount".  To try and recap the main argument
against, it was suggested trademarks could be used to enforce that API,
but I still suspect it is too blunt an instrument, since its
enforceability relies upon unwavering strictness on the part of the
trademark holder, and is on less tested ground legally.

Brian




Re: namespace protection compatible with the OSD?

2001-04-20 Thread Tom Hull

Brian Behlendorf wrote:
 
 On Thu, 19 Apr 2001, Rod Dixon, J.D., LL.M. wrote:
  I am sorry about joining the discussion late. This sounds interesting.
  Brian, do you mind clarifying your question without rehashing what has been
  discussed? I do not want to bore those who have followed the thread, but
  what do you mean by "implement" and what is the concern you are raising?
 
 I was wondering if there was a way, compatible with the Open
 Source Definition as well as acceptable to others in the community, to
 create a copyright license for an API specification that helps ensure
 compatibility of derivative works.

After watching this argument roll around and around, it's tempting to just
say "no". A "no" answer could be derived from any of the following:

 1) If the API is not copyrightable and enforceable.
 2) If the proposed copyright-based restrictions are contrary to the OSD.
 3) If the restrictions undermine its acceptance and usability.

The lawyers can debate #1, and #3 can be left to historians, but it's hard
to see any way to reconcile #2, except perhaps on the trivial case of what
one calls the API. Trademarks are a legally sanctioned, generally accepted
mechanism for clarifying the namespace. But anything more general mechanism
that threatens to prevent unauthorized derivations would certainly restrict
freedom -- regardless of its legal status.

 If the GPL's ethos is "access to source code is paramount",

The key point is not just access to the source code: it is the right to
modify the source code, to create something new from that, and the right
to make those modifications available to others. I think the right to
modify an API is implicit in GPL.

 this one's would be "compatibility between
 implementations is paramount".  To try and recap the main argument
 against, it was suggested trademarks could be used to enforce that API,
 but I still suspect it is too blunt an instrument, since its
 enforceability relies upon unwavering strictness on the part of the
 trademark holder, and is on less tested ground legally.

I'm not aware of any API-like copyrights having been successfully defended.
As I recall, the "look and feel" lawsuits brought by Apple and Lotus were
thrown out. Adobe claimed a copyright on the list of Postscript functions,
but then immediately granted a license to re-use that list, so they've never
had to sustain their claim in court. Is there anything else?

OTOH, I believe there are lots of trademark cases, partly because trademark
law requires vigilance, and partly because the namespace is much smaller
and therefore more contentious than the infinite range of expressions that
copyright covers.

 
 Brian

-- 
/*
 *  Tom Hull * thull at kscable.com * http://www.ocston.org/~thull/
 */



RE: namespace protection compatible with the OSD?

2001-04-19 Thread Dave J Woolley

 From: phil hunt [SMTP:[EMAIL PROTECTED]]
 
 
 I hope this is not the case. I wouldn't like Microsoft to have the ability
 to suppress WINE because it uses the Windows API.
 
[DJW:]  They are attempting to achieve something
similar for MS Office products.  The MSDN Library
licence forbids the use of the file format documentation
for Word, etc., for what I interpret to
be:
- software that does not run on Windows;
- software that attempts to compete with MS Office.

-- 
--- DISCLAIMER -
Any views expressed in this message are those of the individual sender,
except where the sender specifically states them to be the views of BTS.

  



Re: namespace protection compatible with the OSD?

2001-04-19 Thread phil hunt

On Wed, 18 Apr 2001, Brian Behlendorf wrote:
 On Wed, 18 Apr 2001, phil hunt wrote:
  I'm not familiar with Perl, so I'll attempt to translate this into C
  for clarification.
 
 OK.
 
  I create a library in C. The interface is defined in mylibrary.h.
  For someone to use my library, they must:
 
 #include "mylibrary.h"
 
  The license for mylibrary contains a clause "if you create a derivative
  work, you must rename mylibrary.h to something like yourlibrary.h".
 
  Is this this the gist of what you are saying wrt Perl?
 
 Not exactly.  I'm saying two things: if you create a derivative work from
 my code, then the license says if you change the behavior of the functions
 or macros, etc., defined in my .h, that you must call it something else.
 However, if you keep the same interface (keep the .h consistant, but
 change the .c, though it's more accurate to say "API" and
 "implementation") then you may continue to call it "mylibrary.h".

IMO it could be hard to define what is or isn't the same behaviour.

Example (1):

You write a library to access data from a disk file, like in
a DBM-style database. This includes the call (in your header file):

   DataHandle getData(FileHandle fh, Key k);

I now re-implement your library so that the getData() function exists as
before, but tries to cache in RAM rather than reading the field on disk
every time. 

Furthermore, I decide to include a getData_lowLevel() function that
does the same as your original getData() function, and which my getData()
function uses.

Example (2):

(This example makes more sense in a language that allows variables
to have any datatype, such as Python or Smalltalk (or C++)). You write a
library that performs math functions such as exp(), log(), sin(),
cos(), tan(), et, taking floating-point arguments. 

I write a library with a superset of your library's functions,
and in which all the functions can take complex-number arguments too.
This behaves differently to your library, because in your library,
using complex number arguments produces a return value signalling an
error (or an error exception, or suchlike).


It seems to me that the spirit of the Open Source Definition allows
me to do that, and allows users of your original library to be able to
use my library as a plug-in replacement to your library, if they wish
to do so. A plugin replacement might well imply things like having the
same filename(s), depending on the language in question.

 Secondarily, I'm saying even if you didn't implement my code, but followed
 the published document that describes the spec (which I also put under
 this license), you'd have to follow the same rules.

Clearly this has nothing to do with Open Source as such, and IMO
is morally dubious to say the least.
 
  I'm not sure what "incompatible" means here? What if my new improved
  version was intended as a replacement, but which added new features
  in a way that necessitated a degree of incompatibility?
 
 If you make a change that introduces any degree of incompatibility, even
 if it's "fixing a bug", then it would have to be renamed.  Hopefully I'm
 reasonable enough to change my API should I be notified of bugs in it, but
 if I'm not, fork.

But the requiremnt of changing filenames could prohibit forking, to 
some extent.

  I don't know. In some cases I could see (if I have understood you
  correctly), the restriction could be a way of preventing a fork of the
  code. IMO, the ability to fork is a necessary part of an open source
  license.
 
 It doesn't limit the right to fork at all, but it does somewhat carve out
 an API namespace;

So it limits the right to fork something that's plug-in compatible with
the original? Users would have to make an extra effort to use the forked
version.

-- 
* Phil Hunt * 
"An unforseen issue has arisen with your computer. Don't worry your silly 
little head about what has gone wrong; here's a pretty animation of a 
paperclip to look at instead."
 -- Windows2007 error message





RE: namespace protection compatible with the OSD?

2001-04-19 Thread Lawrence E. Rosen

On Tue, 17 Apr 2001, Brian Behlendorf wrote:

 There are IP lawyers I know who will argue up and down that software
 implemented to a specification is a derivative work of that spec, so that
 spec's copyright terms need to be obeyed (which is why I said both the
 spec and the code were under my "call it something else if you're not
 compatible" license) when creating derivative works.

And this IP lawyer will argue up and down that copyright law protects
expression and not the underlying ideas.  Implementing a specification
without copying code is creating neither a copy nor a derivative work of
that specification.

I can understand the desire of some companies to prevent forking by claiming
ownership of their published specifications.  But having a desire doesn't
mean you have a right to satisfy your desire by imposing your will on
unwilling participants.  Claiming a monopoly right under copyright where
that claim is not allowed is copyright misuse, subjecting the claimant to a
lawsuit for, at the least, injunctive relief.

I appreciate your informing me that this issue has fomented lots of
discussion in the past in the open source community.  "Stallman's rebuff to
Alladin [sic] Software" notwithstanding, the final decision may have to come
from a court of law.  I, for one, would almost welcome such litigation,
because I believe the open source community needs to take a stand against
companies that pay lip service to open source principles while preventing
open source development with closed specifications and standards.  This is
hypocrisy.  As the open source community has long since proven repeatedly,
particularly with its contributions to Internet-related software, the
enforcement of appropriate standards can be encouraged and achieved without
recourse to licenses that prevent effective open source development.

As for a "call it something else" provision of a license, that relates to
trademark law and, as I said in a previous email to license-discuss, is
outside the scope of any specification.  You said that it's much more
efficient to
say "you can't use my code if you misuse my name" than "you can't use my
name because I own the trademark."  That misstates the legal significance of
the trademark.  I was trying to point out that you CAN'T ALLOW someone to
use your name -- e.g., ALL uses, even friendly ones, are misuses -- because
it is YOUR trademark and not theirs.  If you allow a third party who creates
a derivative work to market that derivative work under your trademark,
without exercising control over the quality of his derivative works, you
will lose your trademark.  It is okay for a third party to say his
derivative work is "compatible with" Apache, or "equivalent in functionality
to" Apache, or "meets the specifications of" Apache, or even that it is
"better than" Apache, but it is NOT okay for him to market his derivative
work "as" Apache.  Apache should not allow anyone else to adopt its
trademark for their software!  (The word "should" in that last sentence is
as close as I'm going to come to giving unsolicited legal advice to Apache.)

/Larry Rosen
650-216-1597
[EMAIL PROTECTED]
www.rosenlaw.com
www.opensource.org




RE: namespace protection compatible with the OSD?

2001-04-19 Thread Dave J Woolley

 From: Lawrence E. Rosen [SMTP:[EMAIL PROTECTED]]
 
 hypocrisy.  As the open source community has long since proven repeatedly,
 particularly with its contributions to Internet-related software, the
 enforcement of appropriate standards can be encouraged and achieved
 without
 recourse to licenses that prevent effective open source development.
 
[DJW:]  However, my impression is that that only holds
whilst the implementation is in the open source arena.
Closed source developers tend to be the ones that create
the greatest travesties of open standards, so it is possibly
not surprising that the same people are wary of creating
open standards - they may be judging other people by
their own standards.

-- 
--- DISCLAIMER -
Any views expressed in this message are those of the individual sender,
except where the sender specifically states them to be the views of BTS.
  



RE: namespace protection compatible with the OSD?

2001-04-19 Thread Eric Jacobs

"Lawrence E. Rosen" [EMAIL PROTECTED]

 I was trying to point out that you CAN'T ALLOW someone to use your name 
 -- e.g., ALL uses, even friendly ones, are misuses -- because it is YOUR 
 trademark and not theirs.  If you allow a third party who creates a 
 derivative work to market that derivative work under your trademark, 
 without exercising control over the quality of his derivative works, you
 will lose your trademark.  It is okay for a third party to say his
 derivative work is "compatible with" Apache, or "equivalent in 
 functionality to" Apache, or "meets the specifications of" Apache, or 
 even that it is "better than" Apache, but it is NOT okay for him to 
 market his derivative work "as" Apache.  Apache should not allow anyone 
 else to adopt its trademark for their software!  (The word "should" in 
 that last sentence is as close as I'm going to come to giving 
 unsolicited legal advice to Apache.)

"OSI Certified" is a certification mark, a kind of trademark. Yet open
source software authors can claim their software to be "OSI Certified",
not just "equivalent to OSI Certified". This doesn't constitute
abandonment of the trademark -- does it?


-- 




Re: namespace protection compatible with the OSD?

2001-04-19 Thread Brian Behlendorf

On Thu, 19 Apr 2001, Eric Jacobs wrote:
 Brian Behlendorf [EMAIL PROTECTED]

  I'm saying two things: if you create a derivative work
  from my code, then the license says if you change the behavior of the
  functions or macros, etc., defined in my .h, that you must call it
  something else. However, if you keep the same interface (keep the .h
  consistant, but change the .c, though it's more accurate to say "API"
  and "implementation") then you may continue to call it "mylibrary.h".

 I'm having trouble with the interface/implementation distinction here.
 Is "behavior" the same thing as "interface"?

"API"/"interface" is the set of commands/procedures/methods/macros/
whatever that I expose to people using my software, either at a user level
or a programmatic level.  The intended effect is that someone else who
writes code that exposes the same API can be a drop-in replacement for my
code.  "Implementation" is the code I wrote behind that API which actually
does the work, and can vary even if the API stays the same.

  Secondarily, I'm saying even if you didn't implement my code, but
  followed the published document that describes the spec (which I also
  put under this license), you'd have to follow the same rules.

 This cannot be accomplished with an open source copyright license. This
 sounds like a job for trademarks.

On what basis do you claim I can't do this with an open source copyright
license?  What OSD section does it violate?  That's what I want to
determine.  Think of me as playing devil's advocate on this, because one
side (perhaps the stronger side) of me does want to see this to *not* be
possible, and it might be yet another hole in the OSD - best to patch it
up now than wait for someone to abuse it.  However I want to find an
ironclad argument against it, and I haven't, other than "that would be a
bad thing - e.g., Win32 and Wine".

 All changes potentially introduce incompatibility, even bug-fixes, because
 old code can rely on the buggy behavior.

I would define in/compatibility as that defined by the spec, not the code.
If I expose through the API a routine that (the spec says) returns a float
that's the square root of a float, and it returns in rare circumstances an
incorrect value, fixing that bug is not changing the API as defined by the
spec.  I agree there are more subtle examples that would cause debates to
be had, and if escalated it would ultimately mean a judge being asked to
determine if a change broke compatibility, probably not a good thing.  =)

 Is your intent to prevent people from adding new features and calling it
 the same?

Primarily it's to prevent someone from intentionally removing/breaking
functionality but trying to claim they implement the same API, then adding
new functionality, trying to move people to that new API because it's the
only one that appears to "work".  For example, think Microsoft and Visual
J++ for example, where MS claimed to implement the java.* classes and be
compatible, yet they were broken in subtle ways (intentionally), and the
docs recommended developers use the com.microsoft classes instead.
Trademark in that situation was a weak instrument to try and use to
enforce conformance, for reasons you can read about in the history of the
MS/Sun Java case.  Developers who didn't particularly care about
compatibility and used VJ++ because it came free from MS weren't incented
to mandate compatibility from MS, so market pressure wasn't there.
Outside of the open source community, the drive to standards isn't nearly
as strong as we'd all like to think.

  It doesn't limit the right to fork at all, but it does somewhat carve
  out an API namespace; the example of MS using something like this to
  prevent Win32 reimplementation is probably a good example, where they'd
  put a license like this on their Win32 spec.

 This doesn't seem to be at all the same thing. Nobody has to execute
 a license of Microsoft's in order to implement the same API's as Windows,
 unless doing so involved creating a derivative work of some copyrighted
 material.

That's precisely what I'm saying.  What's the copyright on the
documentation for the Win32 API as provided by MS?

 What you're proposing sounds like it could be accomplished using
 trademark, and avoiding that whole sticky copyright-of-API's issue
 altogether.

Notice that what repels you about my proposal would still be possible in
that case, e.g., MS suing Wine developers for trademark violation.  At
least with the proposed copyright, your right to implement compatible
implementations would still survive.

Brian






Re: namespace protection compatible with the OSD?

2001-04-19 Thread Brian Behlendorf

On Thu, 19 Apr 2001, phil hunt wrote:
 IMO it could be hard to define what is or isn't the same behaviour.

Granted that "compatible" would need to be rigorously defined by the
license, and it would be up to the original copyright holder to ascertain
if a derivative work was non-compliant; and if the author of the
derivative work felt the original holder was unfairly labelling their work
incompatible, they'd take their debate to the court of public opinion, or
ultimately, a judge, who could rule in favor of the derivative author.

Note that this is the same situation as would be faced by a trademark
holder attempting to accomplish the same goal of API consistancy via
trademark law instead of copyright law - but in the case of trademark law,
if there were any examples of people who created even slightly
incompatible derivative works, my ability to enforce that trademark would
be seriously curtailed.  That would mean that I'd have to be much more of
an asshole to anyone creating derivative works - I'd have to go after the
independent developers just as much as the big guys.  Compared to
copyright, where I can selectively enforce without losing my ability
to enforce at all.  That's a pretty regressive situation, doncha think?

  Secondarily, I'm saying even if you didn't implement my code, but followed
  the published document that describes the spec (which I also put under
  this license), you'd have to follow the same rules.

 Clearly this has nothing to do with Open Source as such, and IMO
 is morally dubious to say the least.

It has everything to do with Open Source.  So far, most OS programs that
implement a published spec do so against specs with very liberal
copyrights - the IETF, the W3C, etc.  I'm worried about the more
"corporate" API's out there.  Wouldn't you be worried that MS might be
able to shut down WINE if they could claim the WINE developers got the
Win32 API docs under a copyright that said they couldn't reimplement it?
Someone already posted a link to the MSDN agreement that states that API's
you get through that service have this quality.  It's probably the main
reason we don't see big companies authoring Win32 alternatives anymore
(OS/2 was the last one, and yes I know that hidden function calls were the
bigger reason).  I would really like to find a good reason to shoot this
down on DFSG/OSD terms, and if I can't, then I'd suggest a patch to the
DFSG/OSD.   =)

  It doesn't limit the right to fork at all, but it does somewhat carve out
  an API namespace;

 So it limits the right to fork something that's plug-in compatible with
 the original? Users would have to make an extra effort to use the forked
 version.

No, if it's really "plug-in compatible", you can use the same API name.
If you change it's behavior in a way that breaks "plug-in compatible", or
however "compatible" is defined, you change the name.  In either case, the
advantages to forking are preserved - you don't have to rewrite code that
already exists.

Brian







Re: namespace protection compatible with the OSD?

2001-04-19 Thread Frank LaMonica

Brian,
Just a real world example:

SGI owns the OpenGL trademark, and it cannot be used without the
appropriate licensing from SGI.  The OpenGL API is publicly available,
and Brian Paul created an open source project which he named "Mesa3D"
because he couldn't use the OpenGL trademarked name.  Mesa3D is a fully
open source, free implementation of the OpenGL API.  The Mesa3D team,
still headed up by Brian Paul, is committed to making sure the API
remains identical to the one published by the OpenGL Architectural
Review Board (ARB), the independent organization which was created to
maintain the OpenGL API as a vendor neutral API, but that is a purely
voluntary decision on the part of that team.  Since Mesa3D in NOT OpenGL
(the official sample implementation released by SGI), and is not called
OpenGL (the trademarked name owned by SGI), Mesa3D COULD fork its API if
it chose to do so.  If it did, then it would no longer be an open source
implementation of the OpenGL API, but it could still be a valid and
useful API.  I have no idea if SGI could successfully sue Mesa3D if it
chose to do so, but the question has been avoided by Mesa3D's voluntary
commitment to follow the OpenGL API as it evolves.

Regards,
Frank

Brian Behlendorf wrote:
 
 On Thu, 19 Apr 2001, Eric Jacobs wrote:
  Brian Behlendorf [EMAIL PROTECTED]
 
   I'm saying two things: if you create a derivative work
   from my code, then the license says if you change the behavior of the
   functions or macros, etc., defined in my .h, that you must call it
   something else. However, if you keep the same interface (keep the .h
   consistant, but change the .c, though it's more accurate to say "API"
   and "implementation") then you may continue to call it "mylibrary.h".
 
  I'm having trouble with the interface/implementation distinction here.
  Is "behavior" the same thing as "interface"?
 
 "API"/"interface" is the set of commands/procedures/methods/macros/
 whatever that I expose to people using my software, either at a user level
 or a programmatic level.  The intended effect is that someone else who
 writes code that exposes the same API can be a drop-in replacement for my
 code.  "Implementation" is the code I wrote behind that API which actually
 does the work, and can vary even if the API stays the same.
 
   Secondarily, I'm saying even if you didn't implement my code, but
   followed the published document that describes the spec (which I also
   put under this license), you'd have to follow the same rules.
 
  This cannot be accomplished with an open source copyright license. This
  sounds like a job for trademarks.
 
 On what basis do you claim I can't do this with an open source copyright
 license?  What OSD section does it violate?  That's what I want to
 determine.  Think of me as playing devil's advocate on this, because one
 side (perhaps the stronger side) of me does want to see this to *not* be
 possible, and it might be yet another hole in the OSD - best to patch it
 up now than wait for someone to abuse it.  However I want to find an
 ironclad argument against it, and I haven't, other than "that would be a
 bad thing - e.g., Win32 and Wine".
 
  All changes potentially introduce incompatibility, even bug-fixes, because
  old code can rely on the buggy behavior.
 
 I would define in/compatibility as that defined by the spec, not the code.
 If I expose through the API a routine that (the spec says) returns a float
 that's the square root of a float, and it returns in rare circumstances an
 incorrect value, fixing that bug is not changing the API as defined by the
 spec.  I agree there are more subtle examples that would cause debates to
 be had, and if escalated it would ultimately mean a judge being asked to
 determine if a change broke compatibility, probably not a good thing.  =)
 
  Is your intent to prevent people from adding new features and calling it
  the same?
 
 Primarily it's to prevent someone from intentionally removing/breaking
 functionality but trying to claim they implement the same API, then adding
 new functionality, trying to move people to that new API because it's the
 only one that appears to "work".  For example, think Microsoft and Visual
 J++ for example, where MS claimed to implement the java.* classes and be
 compatible, yet they were broken in subtle ways (intentionally), and the
 docs recommended developers use the com.microsoft classes instead.
 Trademark in that situation was a weak instrument to try and use to
 enforce conformance, for reasons you can read about in the history of the
 MS/Sun Java case.  Developers who didn't particularly care about
 compatibility and used VJ++ because it came free from MS weren't incented
 to mandate compatibility from MS, so market pressure wasn't there.
 Outside of the open source community, the drive to standards isn't nearly
 as strong as we'd all like to think.
 
   It doesn't limit the right to fork at all, but it does somewhat carve
   out an API namespace; 

RE: namespace protection compatible with the OSD?

2001-04-19 Thread Brian Behlendorf

On Thu, 19 Apr 2001, Lawrence E. Rosen wrote:
 And this IP lawyer will argue up and down that copyright law protects
 expression and not the underlying ideas.  Implementing a specification
 without copying code is creating neither a copy nor a derivative work of
 that specification.

Would you agree that if I took one of Shakespeare's plays and reworked it
into a screenplay, or novel, that my work would be a derivative work?
Throw in translating to Chinese for good measure.  Throw in adding some
extra scenes and characters to really flesh out my work, or to adapt it to
a new culture.  I think the idea of implementing an API is the same thing.
And I think this is a much closer analogy than using the tax advice given
by a tax book.

Certainly, if I wrote a novel that happened to coincidentally share plot
lines with a Shakespeare play, that's not something to worry about - only
patents and trademarks are so broad as to cover unintended parallels.

I think the issue is sufficiently grey that it's worth considering it a
threat to open source development, and I'd like to find an ironclad
argument against it, or fix the OSD/DFSG.

 I appreciate your informing me that this issue has fomented lots of
 discussion in the past in the open source community.  "Stallman's rebuff to
 Alladin [sic] Software" notwithstanding, the final decision may have to come
 from a court of law.  I, for one, would almost welcome such litigation,
 because I believe the open source community needs to take a stand against
 companies that pay lip service to open source principles while preventing
 open source development with closed specifications and standards.  This is
 hypocrisy.  As the open source community has long since proven repeatedly,
 particularly with its contributions to Internet-related software, the
 enforcement of appropriate standards can be encouraged and achieved without
 recourse to licenses that prevent effective open source development.

So far we have a couple data points - Apache, sendmail, bind - to suggest
that open source drives compatibility.  We have data points to the
contrary as well - glibc, html authoring tools, linux package formats.
We have lots of data points to suggest that the world outside of the
circle we know doesn't give a hoot about compatibility, they just "want to
get the job done" even if the long-term impacts are significant, because
those long-term impacts don't affect the developers in that situation.
I'm suggesting that taking an ostrich approach to those issues isn't good
for the open source community - either we find a way to accomodate these
issues within the open source milieu, or we figure out a way to mitigate
the need for them.

 You said that it's much more efficient to say "you can't use my code
 if you misuse my name" than "you can't use my name because I own the
 trademark."  That misstates the legal significance of the trademark.
 I was trying to point out that you CAN'T ALLOW someone to use your
 name -- e.g., ALL uses, even friendly ones, are misuses -- because it
 is YOUR trademark and not theirs.  If you allow a third party who
 creates a derivative work to market that derivative work under your
 trademark, without exercising control over the quality of his
 derivative works, you will lose your trademark.

OK, so that suggests that the ASF had better *not* go out and get a
trademark on "Apache", because we'll quickly lose it should we not become
Nazis about enforcing it.  This also suggests that anyone who has a
trademark on a name used by an open source package, under a license that
doesn't control how that name is used in a derivative work (a license like
the GPL, for example), has lost the ability to enforce that trademark.
That's absurd.  This is precisely why trademark is a poor instrument for
this purpose.  It also means there's no way we could advocate, say,
org.apache.soap to become an industry-wide API, outside of the ASF's
control.

 It is okay for a third party to say his derivative work is "compatible
 with" Apache, or "equivalent in functionality to" Apache, or "meets
 the specifications of" Apache, or even that it is "better than"
 Apache, but it is NOT okay for him to market his derivative work "as"
 Apache.  Apache should not allow anyone else to adopt its trademark
 for their software!  (The word "should" in that last sentence is as
 close as I'm going to come to giving unsolicited legal advice to
 Apache.)

OK, so when Debian creates an Apache deb package, and calls that package
apache-1.3.19.deb, and tells people "you can install apache by doing
apt-get install apache", are you saying the ASF should not allow
them to do that, without granting them specific approval to do so?  Note
that such an arrangement is not cool with Debian, as it would violate the
DFSG (and the OSD) by creating a second agreement limiting the right to
redistribute, as well as being specific to Debian.

I am not a lawyer, but I'm getting uncomfortably familiar with too many
things 

RE: namespace protection compatible with the OSD?

2001-04-19 Thread Dave Gilbert

Hi,
  I can see the need for namespace protection; but it is clear that to
remain in the spirit of an open-source system it would have to be done
very carefully.  I mean:

Its reasonable (from my point of view):
  1) To say that any extension to the API must use a particular form of
name - e.g. myapi_extendersname_. (where extenders name could be an
organisation for grouping extensions). And to define a group of names
which only the original authors may extend.

  2) To say that any implementation of the API should implement existing
named entry points in a manner compatible with the API definition.

It is unreasonable:
  1) To say that no one is able to write a function with a particular name
  2) That no one else is able to reimplement a function with a given name.

Dave

-- 
  Have a happy GNU millennium! --   
/ Dr. David Alan Gilbert  | Running GNU/Linux on Alpha, | Happy  \ 
\   gro.gilbert @ treblig.org | 68K,MIPS,x86,ARM and SPARC  | In Hex /
 \ ___|___ http://www.treblig.org   |___/





Re: namespace protection compatible with the OSD?

2001-04-19 Thread John Cowan

Eric Jacobs wrote:


 without exercising control over the quality of his derivative works

 "OSI Certified" is a certification mark, a kind of trademark. Yet open
 source software authors can claim their software to be "OSI Certified",
 not just "equivalent to OSI Certified". This doesn't constitute
 abandonment of the trademark -- does it?

Not at all.  Note the phrase with  marker above.

-- 
There is / one art || John Cowan [EMAIL PROTECTED]
no more / no less  || http://www.reutershealth.com
to do / all things || http://www.ccil.org/~cowan
with art- / lessness   \\ -- Piet Hein




Re: namespace protection compatible with the OSD?

2001-04-19 Thread John Cowan

Brian Behlendorf wrote:


 Secondarily, I'm saying even if you didn't implement my code, but
 followed the published document that describes the spec (which I also
 put under this license), you'd have to follow the same rules.
 
 This cannot be accomplished with an open source copyright license. This
 sounds like a job for trademarks.
 
 On what basis do you claim I can't do this with an open source copyright
 license?  What OSD section does it violate?

The problem is not with "open source" but with "copyright license".  The
right you mention is just not one of those that a copyright holder has.

If I bake a cake based on the recipe in your copyrighted book:

1) the cake is not a derivative work of the book, and

2) the cake is not a derivative work of some other cake that you baked.

 Developers who didn't particularly care about
 compatibility and used VJ++ because it came free from MS weren't incented
 to mandate compatibility from MS,

That only worked for MS because of their overwhelming market power.
Defying standards is (probably) a losing game for everyone else.

 This doesn't seem to be at all the same thing. Nobody has to execute
 a license of Microsoft's in order to implement the same API's as Windows,
 unless doing so involved creating a derivative work of some copyrighted
 material.
 
 That's precisely what I'm saying.  What's the copyright on the
 documentation for the Win32 API as provided by MS?

It doesn't matter what it is.  See the cake example. 

-- 
There is / one art || John Cowan [EMAIL PROTECTED]
no more / no less  || http://www.reutershealth.com
to do / all things || http://www.ccil.org/~cowan
with art- / lessness   \\ -- Piet Hein




Re: namespace protection compatible with the OSD?

2001-04-19 Thread John Cowan

Brian Behlendorf wrote:


 Would you agree that if I took one of Shakespeare's plays and reworked it
 into a screenplay, or novel, that my work would be a derivative work?
 Throw in translating to Chinese for good measure.  Throw in adding some
 extra scenes and characters to really flesh out my work, or to adapt it to
 a new culture.

All of those things are making a derivative work, clearly.

 I think the idea of implementing an API is the same thing.
 And I think this is a much closer analogy than using the tax advice given
 by a tax book.

The closest analogy is building a house from a blueprint.  The house
isn't a derivative work of the blueprint, or architects wouldn't need
to get paid for drawing them -- they could sue the contractor for
infringement.

 I am not a lawyer, but I'm getting uncomfortably familiar with too many
 things usually only lawyers have to worry about.

Tell it, brother!

-- 
There is / one art || John Cowan [EMAIL PROTECTED]
no more / no less  || http://www.reutershealth.com
to do / all things || http://www.ccil.org/~cowan
with art- / lessness   \\ -- Piet Hein




Re: namespace protection compatible with the OSD?

2001-04-19 Thread Chloe Hoffman


In the U.S. at least, building a house from a blueprint is creating a copy of an architectural work - see the definition of an architectural work in s. 101 of the U.S. Copyright Act and other limitations in s. 120. If someone builds an unauthorized exact or substantially similar copy (i.e. a building according to the architectural work), it may be infringement (assuming access to the architectural work). The owner of an architectural work has the exclusive right to prepare derivative works (which of course can be licensed). As to the customs and conventions in the industry defining actual and implied licensing and ownershipthat's the story of extensive litigation (including numerous disputes between architects, home owners and builders).

From: John Cowan<[EMAIL PROTECTED]> 
To: Brian Behlendorf<[EMAIL PROTECTED]> 
CC: Lawrence E. Rosen<[EMAIL PROTECTED]> , [EMAIL PROTECTED] 
Subject: Re: namespace protection compatible with the OSD? 
Date: Thu, 19 Apr 2001 16:38:31 -0400 
 
Brian Behlendorf wrote: 
 
 
Would you agree that if I took one of Shakespeare's plays and 
reworked it 
into a screenplay, or novel, that my work would be a derivative 
work? 
Throw in translating to Chinese for good measure. Throw in adding 
some 
extra scenes and characters to really flesh out my work, or to 
adapt it to 
a new culture. 
 
All of those things are making a derivative work, clearly. 
 
I think the idea of implementing an API is the same thing. 
And I think this is a much closer analogy than using the tax advice 
given 
by a tax book. 
 
The closest analogy is building a house from a blueprint. The house 
isn't a derivative work of the blueprint, or architects wouldn't 
need 
to get paid for drawing them -- they could sue the contractor for 
infringement. 
 
I am not a lawyer, but I'm getting uncomfortably familiar with too 
many 
things usually only lawyers have to worry about. 
 
Tell it, brother! 
 
-- 
There is / one art || John Cowan 
<[EMAIL PROTECTED]> 
no more / no less || http://www.reutershealth.com 
to do / all things || http://www.ccil.org/~cowan 
with art- / lessness \\ -- Piet Hein 
 
Get your FREE download of MSN Explorer at http://explorer.msn.com


Re: namespace protection compatible with the OSD?

2001-04-19 Thread Brian Behlendorf


OK, so we have two new analogies to implementing an API, that of "baking a
cake from a recipe" and "that of building a house from blueprints".  I
still think the line between that and "write a novel based on a
Shakespeare play" is not defined.  What is the relevant case history,
especially in the field of software?  If we can find a precedent for or
against, we have an answer w/r/t the likely way a judge would rule.  And,
if it's true that a copyright on an API can't restrict the rights to
implement it, then my life becomes a lot easier.  =)

Brian




RE: namespace protection compatible with the OSD?

2001-04-19 Thread Lawrence E. Rosen

"OSI Certified" is a certification mark, a kind of trademark. Yet open
source software authors can claim their software to be "OSI Certified",
not just "equivalent to OSI Certified". This doesn't constitute
abandonment of the trademark -- does it?

"OSI Certified" is a certification mark, a special kind of trademark that
can ONLY be applied to third party software.  In fact, if OSI itself made
software it could NOT apply the certification mark to its own software.

The same general rules of trademark apply: OSI is responsible for ensuring
that third-party users of the OSI Certified certification mark meet certain
quality standards -- in this case, the requirement to distribute the
software under an OSI-approved license.

/Larry Rosen




Re: namespace protection compatible with the OSD?

2001-04-19 Thread John Cowan

Chloe Hoffman wrote:

 In the U.S. at least, building a house from a blueprint is creating a 
 copy of an architectural work

Oops, put my foot in it.  No dog biscuit!

 - see the definition of an "architectural 
 work" in s. 101 of the U.S. Copyright Act and other limitations in s. 
 120.

Well, at least it's a hack specific to architectural works.




Re: namespace protection compatible with the OSD?

2001-04-19 Thread Dave Gilbert

On Thu, 19 Apr 2001, Brian Behlendorf wrote:

 OK, so we have two new analogies to implementing an API, that of "baking a
 cake from a recipe" and "that of building a house from blueprints".  I
 still think the line between that and "write a novel based on a
 Shakespeare play" is not defined. 

Unfortunatly none of these analogies are correct; they all give a false
sense of apparent correctness which leads people to apply the wrong sort
of laws to them.

In terms of an API it is important to separate out the definition of the
API from its implementation and to realise that neither can be made from
the other directly without work and thought.

A skilled craftsman can, using his skill, knowledge and experience without
being inventive, build a house purely from the plans.  This is not
necessarily true of an API implementation; i.e. a skilled, but uninventive
programmer or system designer can NOT implement all APIs just from their
interface definition. Some APIs can be implemented purely from definition
without inventiveness, but there is almost always the opportunity for an
inventive implementer to entirely meet the API definition but produce a
different implementation from another implementer with possible benefits
such as speed, size etc.

Again, using an analogy which is probably a bad one I'd consider a car
wheel.  The API is the definition of what shape the axel/wheel/break disc
etc have to be for them to fit together.  A wheel maker may make a wheel
that 'implements the API' by ensuring that certain parts of it happen to
fit the car.  Similarly a car maker can use the API by making a car with
that shape fittings.

In an ideal world there is no requirement on either the car maker or the
wheel maker to use any particular technology in their products - they can
use wacky structural designs for better safety etc - without altering the
fact that they meet the API.

Given this API you can't design a car (hence its not like the house
blueprint analogy) and by looking at the wheel you can't design a car.

Now a car manufacturer might team up with a wheel manufacturer and decide
to change the interface between car and wheel - there are at least
two reasons he might want to do this:

  1) To generate an unfair monopoly so that no one else can sell cheaper
spare parts for the car.
  2) Becuase they have some improvement which provides some tangable
benefit to the consumer. This may involve some inventiveness e.g. some
clever mechanical arrangment between the two.

Taking case 1) it would seem that a third part wheel manufacturer could
buy a car and take one of the wheels off and look at the way it fixes to
the car and make another wheel that fits in the same place.  It would be
important that he only made something that fitted in the same way and
did not copy the actual wheel design.  Obviously the car manufacturer can
claim this is not an autharised part and may not meet various of its
specs.  Indeed it is the 3rd part wheel makers skill and inventiveness 
and trustworthy ness that people can use to guage whether it is a safe 
and good wheel and whether it has tangible benefits. What is the law in
this type of case?

Now what about number (2) - if they really do do something clever then
perhaps there is something patentable in there - but it would still be
monopalistic.

The real danger is people making small changes as in (1) which convey some
notional but misleading benefit and then claiming it is actually (2).
 
Dave

-- 
  Have a happy GNU millennium! --   
/ Dr. David Alan Gilbert  | Running GNU/Linux on Alpha, | Happy  \ 
\   gro.gilbert @ treblig.org | 68K,MIPS,x86,ARM and SPARC  | In Hex /
 \ ___|___ http://www.treblig.org   |___/




RE: namespace protection compatible with the OSD?

2001-04-19 Thread Rod Dixon, J.D., LL.M.

I am sorry about joining the discussion late. This sounds interesting.
Brian, do you mind clarifying your question without rehashing what has been
discussed? I do not want to bore those who have followed the thread, but
what do you mean by "implement" and what is the concern you are raising?

Rod

 -Original Message-
 From: Brian Behlendorf [mailto:[EMAIL PROTECTED]]
 Sent: Thursday, April 19, 2001 5:34 PM
 To: John Cowan
 Cc: [EMAIL PROTECTED]
 Subject: Re: namespace protection compatible with the OSD?



 OK, so we have two new analogies to implementing an API, that of "baking a
 cake from a recipe" and "that of building a house from blueprints".  I
 still think the line between that and "write a novel based on a
 Shakespeare play" is not defined.  What is the relevant case history,
 especially in the field of software?  If we can find a precedent for or
 against, we have an answer w/r/t the likely way a judge would rule.  And,
 if it's true that a copyright on an API can't restrict the rights to
 implement it, then my life becomes a lot easier.  =)

   Brian






Re: namespace protection compatible with the OSD?

2001-04-18 Thread phil hunt

On Tue, 17 Apr 2001, Brian Behlendorf wrote:
 
 Let's say I created a specification for an interface in Perl; call it
 Foo::Bar.  Let's further say I published the specification, and a
 collection of code that implemented it, under a BSD-style license, with
 the sole added clause that any derivative work that changed the
 implementation in a way incompatible with the specification for that
 interface, needed to call its interface something else; it couldn't be
 Foo::Bar, but it could be Foo::Baz, or whatever.

I'm not familiar with Perl, so I'll attempt to translate this into C
for clarification.

I create a library in C. The interface is defined in mylibrary.h.
For someone to use my library, they must:

   #include "mylibrary.h"
 
The license for mylibrary contains a clause "if you create a derivative
work, you must rename mylibrary.h to something like yourlibrary.h". 

Is this this the gist of what you are saying wrt Perl?

The point of this is that any derivative work cannot be a plug-in
compatible, because users must change #include "mylibrary.h" to
something else.

 Why do this?  Because I wanted to make sure someone didn't take my code,
 slightly modify it in an incompatible way, and try to confuse the public
 about what the API Foo::Bar was supposed to do, whether intentional or
 unintentional.

I'm not sure what "incompatible" means here? What if my new improved
version was intended as a replacement, but which added new features
in a way that necessitated a degree of incompatibility?

 I suspect this would pass the OSD tests, but I wanted some validation of
 that.  I see it as a cross between the trademark-related covenants of the
 Apache license and the interface-changing clauses of the SISSL.

I don't know. In some cases I could see (if I have understood you
correctly), the restriction could be a way of preventing a fork of the
code. IMO, the ability to fork is a necessary part of an open source
license. 

-- 
* Phil Hunt * 
"An unforseen issue has arisen with your computer. Don't worry your silly 
little head about what has gone wrong; here's a pretty animation of a 
paperclip to look at instead."
 -- Windows2007 error message





Re: namespace protection compatible with the OSD?

2001-04-18 Thread Eric Jacobs

Brian Behlendorf [EMAIL PROTECTED]

 I'm saying two things: if you create a derivative work 
 from my code, then the license says if you change the behavior of the 
 functions or macros, etc., defined in my .h, that you must call it 
 something else. However, if you keep the same interface (keep the .h 
 consistant, but change the .c, though it's more accurate to say "API" 
 and "implementation") then you may continue to call it "mylibrary.h".

I'm having trouble with the interface/implementation distinction here.
Is "behavior" the same thing as "interface"?

 Secondarily, I'm saying even if you didn't implement my code, but 
 followed the published document that describes the spec (which I also 
 put under
 this license), you'd have to follow the same rules.

This cannot be accomplished with an open source copyright license. This
sounds like a job for trademarks.

Perhaps a better way to think about this whole issue is something like
this: "Permission is hereby granted to use the trademark 'mylibrary'
in connection with a computer program, provided the following conditions
are met: 1. The program include a file named 'mylibrary.h' which is
syntactically equivalent to the file 'mylibrary.h' of the reference
implementation available from somewhere"... (be more specific about
the meaning of "syntactically", mention standards, etc.)

  I'm not sure what "incompatible" means here? What if my new improved 
  version was intended as a replacement, but which added new features in 
  a way that necessitated a degree of incompatibility?
 
 If you make a change that introduces any degree of incompatibility, even 
 if it's "fixing a bug", then it would have to be renamed.  Hopefully I'm 
 reasonable enough to change my API should I be notified of bugs in it, 
 but
 if I'm not, fork.

All changes potentially introduce incompatibility, even bug-fixes, because
old code can rely on the buggy behavior. Is your intent to prevent people
from adding new features and calling it the same?

  I don't know. In some cases I could see (if I have understood you 
  correctly), the restriction could be a way of preventing a fork of the
  code. IMO, the ability to fork is a necessary part of an open source
  license.
  
 It doesn't limit the right to fork at all, but it does somewhat carve 
 out an API namespace; the example of MS using something like this to 
 prevent Win32 reimplementation is probably a good example, where they'd 
 put a license like this on their Win32 spec.

This doesn't seem to be at all the same thing. Nobody has to execute
a license of Microsoft's in order to implement the same API's as Windows,
unless doing so involved creating a derivative work of some copyrighted
material.

What you're proposing sounds like it could be accomplished using
trademark, and avoiding that whole sticky copyright-of-API's issue
altogether.

  I'd be surprised if they 
 don't already have some sort of anti-reimplementation or 
 anti-reverse-engineering clauses in their click-through or shrink-wrap
 licenses, though.

They can have all kinds of clauses; that doesn't mean anything if nobody
executes the licenses. You can get people to execute the license by
granting them a right that they would not otherwise have: an exclusive
right under copyright, or the right to use a trademark. Because your
objectives seem to be aligned with the intentions of trademark law
(preventing consumer confusion from dilution of the name), it seems
that trademark would be a better fit.
-- 




RE: namespace protection compatible with the OSD?

2001-04-17 Thread home

 -Original Message-
 From: Brian Behlendorf [mailto:[EMAIL PROTECTED]]
 Sent: Tuesday, April 17, 2001 4:39 PM
 To: [EMAIL PROTECTED]
 Subject: namespace protection compatible with the OSD?
 
 Let's say I created a specification for an interface in Perl; call it
 Foo::Bar.  Let's further say I published the specification, and a
 collection of code that implemented it, under a BSD-style license, with
 the sole added clause that any derivative work that changed the
 implementation in a way incompatible with the specification for that
 interface, needed to call its interface something else; it couldn't be
 Foo::Bar, but it could be Foo::Baz, or whatever.

Trademarks and copyrights, as I'm sure you know, are two entirely different
types of intellectual property.

If a license agreement either requires or permits a licensee to use the
licensor's trademark on the licensee's derivative work, the licensor may
thereby lose his own rights to the trademark altogether.  So be very careful
of your trademarks!  The derivative work MUST be distributed under its own
trademark (except in the unusual situation where there is a separate
trademark license and the licensor remains responsible for the quality of
the licensee's derivative work).

NEVER allow a third party to use YOUR trademark on HIS software.  No open
source software license should be read as permitting the use of the
licensor's trademarks on derivative works unless the license explicitly --
and foolishly -- says such use is permitted.

This may create confusion in certain open source licenses which purport to
allow anyone to make derivative works and distribute them.  The license
should clearly state that derivative works MUST NOT be distributed under the
licensor's trademarks, even if that means that the licensee is REQUIRED to
change the source code to modify documentation, HELP ABOUT screens, or the
like.

 Why do this?  Because I wanted to make sure someone didn't take my code,
 slightly modify it in an incompatible way, and try to confuse the public
 about what the API Foo::Bar was supposed to do, whether intentional or
 unintentional.

The goal of the trademark law is specifically to prevent such confusion in
the consuming public.  That is why the use of the licensor's trademarks by
third parties cannot be permitted, and why trademarks can be lost if the
trademark owner allows such confusion to persist without objection.

 I suspect this would pass the OSD tests, but I wanted some validation of
 that.  I see it as a cross between the trademark-related covenants of the
 Apache license and the interface-changing clauses of the SISSL.

The "interface-changing" clauses of the SISSL create an entirely different
problem.  A published specification can be USED by anyone who reads the
specification to design and implement software.  The publisher of a
specification cannot prevent that USE by those who obtain legitimate copies
of the specification.  (The owner of the specification can prevent the
COPYING of the specification under standard copyright provisions.)  A timely
example I like to cite is the case of a book that teaches you how to
calculate your income tax; you may be prevented from copying the book, but
if you buy a legitimate copy you can't be prevented from using the
techniques it teaches to calculate your taxes, or to implement software to
do so.

To the extent that the SISSL prevents the unauthorized copying of code, this
is a legitimate form of intellectual property (e.g., copyright) protection.
However, I believe it is a misreading of the SISSL to claim that it prevents
someone from creating, independently and without copying the source code, a
new work that implements the standard in a non-derivative (and even in a
non-compliant) way.

There is a possible further complication with "standards" used for software.
If the publisher of a standard allows the use of a certification mark -- a
form of trademark -- on works that are fully compliant with the standard,
then the certification mark can be limited to such fully compliant
derivative (or entirely new) works.  I also believe it would be improper for
the certification mark owner to REFUSE to certify software that meets the
published standard, even if the software creator didn't obtain permission in
advance from the certification mark owner to implement to that standard.

Confusion about these topics in the open source (and the entire) software
community, reflected in the poor enforcement of trademarks, and in the
overreaching by certain licensors to prevent things they may not like, is
not uncommon.

Does this help answer your questions, Brian?

/Larry Rosen
650-216-1597
[EMAIL PROTECTED]
www.rosenlaw.com
www.opensource.org





RE: namespace protection compatible with the OSD?

2001-04-17 Thread Brian Behlendorf

On Tue, 17 Apr 2001 [EMAIL PROTECTED] wrote:
 Trademarks and copyrights, as I'm sure you know, are two entirely different
 types of intellectual property.

Well, sure, but using copyright law to protect naming has served Apache
well, at least.  There is still a substantial reason to not want to try
and fight name-related battles on trademark terms, because they are much
more slippery and consume more legal bills.  It's much more efficient to
say "you can't use my code if you misuse my name" than "you can't use my
name because I own the trademark".

However, my query isn't really about trademarks, it's about APIs.  Sure,
the trademark "Apache" could be embodied in the package name (e.g.
Apache::foo) but let's say I actually do want to incent derivative
implementations in the name of promoting an industry-wide standards; that
would be yet another reason *not* to punt this issue to trademark law, for
the reasons you cited.

 The "interface-changing" clauses of the SISSL create an entirely different
 problem.  A published specification can be USED by anyone who reads the
 specification to design and implement software.  The publisher of a
 specification cannot prevent that USE by those who obtain legitimate copies
 of the specification.  (The owner of the specification can prevent the
 COPYING of the specification under standard copyright provisions.)

There are IP lawyers I know who will argue up and down that software
implemented to a specification is a derivative work of that spec, so that
spec's copyright terms need to be obeyed (which is why I said both the
spec and the code were under my "call it something else if you're not
compatible" license) when creating derivative works.  I don't know that I
like that aspect, but I sure would not want to try and argue against them
in a court of law, because I can't find fault with that logic.

 A timely example I like to cite is the case of a book that teaches you
 how to calculate your income tax; you may be prevented from copying
 the book, but if you buy a legitimate copy you can't be prevented from
 using the techniques it teaches to calculate your taxes, or to
 implement software to do so.

It has been argued, though, that an API is copyrightable; look at
Stallman's rebuff to Alladin Software over implementing a shim for some
GNU library; by implementing the same API, Stallman argued it was a
derivative work, and Alladin's use constituted a GPL violation.  Not that
Stallman's opinion is all that matters, but it's telling that both he and
the hardcore IP lawyers I refer to above agree on this.

 There is a possible further complication with "standards" used for software.
 If the publisher of a standard allows the use of a certification mark -- a
 form of trademark -- on works that are fully compliant with the standard,
 then the certification mark can be limited to such fully compliant
 derivative (or entirely new) works.  I also believe it would be improper for
 the certification mark owner to REFUSE to certify software that meets the
 published standard, even if the software creator didn't obtain permission in
 advance from the certification mark owner to implement to that standard.

That actually sounds like the one positive argument in favor of using
trademark law for this - it helps prevent the spec publisher from
exercising unfair treatment on those who wish to implement an open spec.

 Confusion about these topics in the open source (and the entire) software
 community, reflected in the poor enforcement of trademarks, and in the
 overreaching by certain licensors to prevent things they may not like, is
 not uncommon.

 Does this help answer your questions, Brian?

It's been good feedback, yes.  Thanks!

Brian