-
Notifications
You must be signed in to change notification settings - Fork 0
Components
Open Transactions is quickly turning into a family of components:
NAME: Xml-OTC……….— A file format…………….LICENSE: GNU Free Documentation License ? Unlicense? RFC?
NAME: Xml-OTX……….— A messaging protocol…LICENSE: GNU Free Documentation License ? Unlicense? RFC?
NAME: OTTP……………— A URI format……………LICENSE: GNU Free Documentation License ? Unlicense? RFC?
NAME: OTLib…………..— A class library…………..LICENSE: LAGPLv3
NAME: OT-API………….— A Client API…………….LICENSE: LAGPLv3
NAME: OT-Server……..— A Server Application……LICENSE: AGPLv3
NAME: testwallet……..— A command-line client….LICENSE: LAGPLv3
NAME: OT-TestGUI…..— A Java Client App……….LICENSE: GPLv3
— Xml-OTX, which describes the internal OTMessage format (a russian-doll metaphor of nested, signed contracts) and Xml-OTC, which describes the basic file format it is based on, will be fully illuminated in as-yet-unwritten RFCs (I guess.)
— OTLib is the core foundation library of OT’s C++ classes, and comprises the bulk of the code. (Though it doesn’t include any transport code, server code, or client code.) Classes such as OTToken, OTMint, OTCheque, OTMessage, OTIdentifier, etc can be found here.
— The OT-API implements the client side of the Xml-OTX protocol. The OT API is the high-level interface that most developers will actually use. OT also includes interfaces for Java, Ruby, Python, Php5, Perl5, LISP, C, C++, etc.
— The OTTP URI Format (incomplete) Would enable Open Transactions links to be added to HTML and other hyperlinked media. (Open Transactions requires client-side processing and storage, for verifying receipts, withdrawing cash, signing cheques, etc.) The use of OTTP URIs would allow web developers to link to OT resources, which could then be processed on the client side with the user’s approval (and via the user’s GUI.)
— The OT Server (transaction.exe) is a software implementation of the server side of the Xml-OTX protocol.
— The testwallet is a command-line test program — a software implementation of the client side of the Xml-OTX protocol.
— The TestGUI is a client GUI that operates via the OT-API (in Java).
Licenses
GPLv3: You are required to open-source your code if it links to this OT code, but only if you are distributing binaries of your own code. If you are instead running your code on your website only (so-called “software as a service”), and you are not distributing binaries, then you do not have to open-source your own code in order to link to this OT code.
LGPLv3: Whether you are distributing binaries, or “software as a service,” either way, you may use this library without having to open-source your code. However, if you are distributing binaries, and if you make any improvements to the OT library itself, then you must make those improvements publicly available (your own application code may remain private, but improvements to OT must be shared.)
AGPLv3: Even when you are not distributing binaries, but you are using this OT code in your site — “software as a service” — then your own code that links to it must be open-source as well. (Otherwise contact the developer for an alternate license.)
LAGPLv3: The LAGPL license is like AGPL enforcement but with LGPL permissions. Basically: whether you are distributing binaries, or you are using the OT-API in your website (“software as a service”) either way, your own code may remain private, but any improvements to the OT library or API code itself must be made publicly available. (Just as the LGPL is now written as a set of additional permissions on top of GPL, so is the LAGPL written as a set of additional permissions on top of AGPL.)
NOTES:
I didn’t understand the GNU license very well until I started researching the best license to use for this software. Now that I have researched the issue, I’m a big fan of Stallman and the whole Free Software Movement.
Here is the basic meaning of the GNU license that OT uses:
1) This software was written by me, and therefore I start out owning all the rights to it, in the eyes of all that is good and holy. (This first line is actually true for all licenses, and is presumed by law in cases where there is no license.)
2) I have released this creation as free software, so that YOU have freedom to also use it, and so that you and everyone else may benefit from all of the contributions of the entire community back into the code.
3) You can freely download Open Transactions, and read it, and run it, and modify it, and redistribute it, and have your own users, and even run your own commercial business based on it, and even make MONEY off of it — and even keep all the money to yourself!
4) …But only under the condition that the code YOU write, using Open Transactions, is ALSO free software!
5) In this way, others may benefit from your open source, just as you benefit from this open source.
6) The GNU license creates a protective, legal buffer zone so that a long-term community can build around the software, safely contributing to it, to the benefit of all, even amongst a large group of business competitors (see Linux, for example.) The license creates an incentive for separate entities to plow money into development of the software, without any fear that their competitors will simply copy the code without reciprocating.
7) This GNU license is also completely optional. If you don’t like it, you can always contact the developer and arrange for a different license. (In fact, this is true for ALL software licenses.)
8) The Open Transactions software is intended for an audience of users who may choose to run it in an anonymous and untraceable manner. Due to this, obviously, it won’t always be possible to enforce the license.
9) Also, if you develop software that uses Open Transactions, but does not directly link to it, then you are not bound by any of the license terms at all (only your users are.) For example, users of FireGPG must download GPG itself separately, and install that first, before they can download and install FireGPG. In this way, FireGPG is able to be offered under the Mozilla License, even though GPG itself is offered under the GNU license. This is because the FireGPG developer was not bound by the terms of the GPL, since users download the two separately, and the two programs do not actually link together.
Makes sense?
Everyone has their favorite license, just like everyone has their favorite language. I think GNU AGPL one is pretty fair and unrestrictive, and it’s supportive of any efforts to run OT servers. It also supports the free software movement, and protects the interests of a long-term community based around OT (just like the GNU license has done for Linux.) Proprietary, closed-source outfits also still have an option to arrange for a commercial license to the original OT code, for those who wish to put their resources towards maintaining their own fork of the code.
IMPORTANT SECURITY NOTE ON THE LICENSE: The GPL license is also an important security precaution, because it requires people to release their source code for any project that includes the Open Transactions library. Under other open-source licenses, anyone could download OT and incorporate it into closed-source projects, making it possible to skim or perform other skullduggery, on users’ computers where the open-source community could not audit and verify the quality of the code.
Imagine a fancy new anonymous p2p wallet and file-sharing software that you get for free, not realizing that it skims 1% of the resource allocation from your wallet and sends it back to the software developer. These things can happen when source is closed… And where OT is concerned, we’re talking about software that’s designed to transfer value securely and untraceably. People will have trouble trusting the name “Open Transactions” if they associate it with one scandal after another. The best solution is to force developers to open their code — just like GPG.