Hi All,

I figure I will through in my 2 cents worth of interpretation for their 
License, Restrictions and my Conclusions in regards to UPX.
UPX and UCL are copyrighted software distributed under the terms
of the GNU General Public License (hereinafter the "GPL").
Good, the program and compression library are distributed under the GPL 
(version 2 or later).
The stub which is imbedded in each UPX compressed program is part
of UPX and UCL, and contains code that is under our copyright. 
Okay, the stub that gets embedded into the program being compressed is under 
the GPL. 
The terms of the GNU General Public License still apply as compressing
a program is a special form of linking with our stub.
Hmmm, whatever. They are just making up a definition for the interaction 
between the stub and the program that is 
being compressed. A little weird but that is fine. They can define things 
however they want as long as they are clear
about it. I could define the process used in my programs to perform buffered 
file I/O as pizza dough kneading. That 
would be fine as long as I am consistent. But it would not actually make it any 
sort of dough kneading. Only what I 
would be calling it in a license and documentation. So, they can call it a 
“special form of linking”. However, it does not 
make it any form of linking as understood by the rest of the world. 
  
As a special exception we grant the free usage of UPX for all
executables, including commercial programs.
See below for details and restrictions.

Yippie. You can use UPX with any program regardless of the license for that 
program. But, they are some
exceptions and restrictions.
The stub which is imbedded in each UPX compressed program is part
of UPX and UCL, and contains code that is under our copyright. The
terms of the GNU General Public License still apply as compressing
a program is a special form of linking with our stub.

Hereby Markus F.X.J. Oberhumer and Laszlo Molnar grant you special
permission to freely use and distribute all UPX compressed programs
(including commercial ones), subject to the following restrictions:
Okay, I think this “special form of linking” is to establish the fact that it 
is not “traditional linking” and your program 
and the stub used for decompression are two separate programs with two 
different licenses. You program can have 
whatever license you want. But, the little stub that is embed into your program 
is a separate entity and has its own 
license that is not changed by the license used by the program compressed.
1. You must compress your program with a completely unmodified UPX
version; either with our precompiled version, or (at your option)
with a self compiled version of the unmodified UPX sources as
distributed by us.
So, if you are using UPX to compress a program that is not open source, you 
cannot use a modified version of UPX. 
This implies that if your program is open source, you can change UPX however 
you want. 
2. This also implies that the UPX stub must be completely unmodfied, i.e.
the stub imbedded in your compressed program must be byte-identical
to the stub that is produced by the official unmodified UPX version.
Hmmm, this implies that programs which are not open source must use a version 
of the UPX stub that is identical to 
the officially released version.  Therefore, any changes or compile time 
options which may result in changes to the
binary code of the stub cannot be used with programs that are not open source.
3. The decompressor and any other code from the stub must exclusively get
used by the unmodified UPX stub for decompressing your program at
program startup. No portion of the stub may get read, copied,
called or otherwise get used or accessed by your program.
Alright, if your program is not open source, you can use the UPX stub. But, 
that’s it. 

Fine, nobody does anything with the stub directly anyway. Although this clause 
would
technically exclude any commercial operating system from executing a program 
that
had been compressed with UPX, that is not what is meant. There is what is known 
as 
“the letter of the law" and "the intent of the law.” Anyone reasonable would 
conclude, since
they provide versions of UPX for Windows, they do not intend it not to be 
usable on a 
commercial operating system. Furthermore, they would not be excluding “normal 
use” of
any program compressed with UPX.

The License is dated 2/25/2000 making it almost a 1/4 of a century since it was 
last modified. 

Now looking at the README.SRC file, we find some additional information…
The precompiled UPX versions are linked against the NRV compression
library instead of the UCL library. Using the same compression algorithms,
NRV achieves a better compression ratio. NRV is not publicly
available, though, and probably never will be.

While you may be disappointed that you don't have access to the
latest state-of-the-art compression technology this is actually
a safe guard for all of us. The UPX source code release makes
it very easy for any evil-minded person to do all sort of bad
things. By not providing the very best compression ratio it is much
more difficult to create fake or otherwise disguised UPX versions (or
similar trojans), as any end user will notice when the compression
has gotten worse with a new "version" or "product".

Finally please be aware that you now have your hands on the source
code of the most sophisticated executable packer ever.
Let's join our forces to make it even better :-)
Hmmm. So, the official UPX binaries are not linked to the UCL library which is 
GPL. The reason 
for using a different library is “security through obscurity” which does not 
work. However, this also 
means that the official build of UPX is not open source. It is freeware. 
However, this freeware 
version can be used to compress any program, regardless of the license for that 
program.

This also means that it is possible that the open source version of UPX using 
the UCL may not be
used to compress any program that is not open source. Because, the stub might 
not be byte identical 
to the stub created by the NRV library. If so, it would be in violation of the 
License agreement.

Obviously, I am not a lawyer. But, what I gather from all of this nonsense is 
the following…

For the FreeDOS distribution, it really does not matter if we use the official 
build of UPX with NRV 
or the strictly GPL version with UCL compression. Any of the programs we might 
compress will be 
open source and can use either version. 

For the end users of our release, it could matter. If those users decide to 
provide freeware or commercial
software compressed with UPX they must use the byte identical stub that is 
provided with the official
build of UPX. If the stub that is stapled into their executables is different 
with the UCL version, they
would be in violation of the UPX License. 

This is something to consider when determining which version of UPX is provided 
with the FreeDOS
distribution. 
 
:-)

Jerome


_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to