Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Distributing programs programmed in QB64?
#1
So what are the licensing requirements to distribute a program written with QB64?   

I've been approached by a twitch streamer to rerelease a program I wrote 27 years ago and distributed on AOL of all places, apparently obscure retro-games are all the rage. I originally wrote it for 6800 Macs in C/C++ so the code would a total rewrite but not all that difficult. I confirmed I could do it again in a relatively short time for windows with QB64 but I was unclear what the licensing requirements/restrictions were for distribution. 

Any advice would be appreciated.
Reply
#2
All you have to worry about are Copy Right font, sound or image files you used to make the exe.
b = b + ...
Reply
#3
(07-07-2022, 07:31 AM)bplus Wrote: All you have to worry about are Copy Right font, sound or image files you used to make the exe.

All art and sound will be original. The font will be default or possibly a custom graphics font.
Reply
#4
(07-07-2022, 08:17 AM)RhoSigma Wrote: Simply have a look into the COPYING.TXT file in the qb64\licenses folder, it's all detailed there.

I read that and I'm a little confused because to me it reads like it's written for someone that wishes to copy and redistribute QB64 or a derived programming application and I'm not too sure how to properly cite licensing compliance for a something like a game or any other specific application as opposed to a development tool. If I have to include all the source code (for the game) it's not a biggie as anyone who frequents this forum can see I'm not very shy about sharing. 

I just want to get it right as I'm willing to let them setup redistribution but I don't want them or someone else to get zapped somewhere down the line.
Reply
#5
(07-07-2022, 12:50 PM)James D Jarvis Wrote: I read that and I'm a little confused because to me it reads like it's written for someone that wishes to copy and redistribute QB64 or a derived programming application and I'm not too sure how to properly cite licensing compliance for a something like a game or any other specific application as opposed to a development tool. If I have to include all the source code (for the game) it's not a biggie as anyone who frequents this forum can see I'm not very shy about sharing. 

I just want to get it right as I'm willing to let them setup redistribution but I don't want them or someone else to get zapped somewhere down the line.

I agree it is a little confusing, but basically there's two things that have to be considered: The license of the QB64 code (`libqb`) that is used in your compiled program, and the license of the various third-party libraries that we utilize to provide features such as images, sound, and other things.

The QB64 portion that is compiled into your program (`libqb`) is MIT licensed, so there's not really anything to worry about there beyond including the copyright notice in your distributed program.

QB64 is smart enough to avoid compiling in any third-party libraries that you don't actually use, and that's basically what the note at the top of `COPYING.txt` is about. Sound support is provided via an LGPL licensed library, so if your program uses sound then your code has meet the LGPL license requirements and you have to provide your source code when distributing the program (more or less). The other libraries have more permissive licenses, and thus mostly just require a copyright notice to be provided.

Also note that I'm pretty sure the information for `FreeGLUT` is wrong, I'll look into addressing that. Everything I can find indicates FreeGLUT is MIT licensed.
Reply
#6
So basically, slap the contents of the license folder in a folder along with my copyright and warranty info and I'm good to go. If there's sound include the source code for the whole code or just the module calling the sound? The more or less above has me asking that last question.

The source code could actually be a feature because the streamer dislikes some modern options like python as much as I do as a general programming language and does promote an otherwise very tech savvy audience to be more creative and learn to program as well. Being able to say.... look really... this is all this game actually takes to be playable, there's a lot of code...but it's all pretty darned simple is a plus to me.
Reply
#7
(07-07-2022, 05:22 PM)James D Jarvis Wrote: So basically, slap the contents of the license folder in a folder along with my copyright and warranty info and I'm good to go.  If there's sound include the source code for the whole code or just the module calling the sound?  The more or less above has me asking that last question.

The source code could actually be a feature because the streamer dislikes some modern options like python as much as I do as a general programming language and does promote an otherwise very tech savvy audience to be more creative and learn to program as well. Being able to say.... look really... this is all this game actually takes to be playable, there's a lot of code...but it's all pretty darned simple is a plus to me.

Yep, that's pretty much it, the safest move is to just take the entirety of the license folder and distribute it along with your program - it may include extra licenses for things your program didn't end up using, but there's no harm in that.

If you use sound then you need to distribute the entire source code for your program to meet the LGPL requirements, not just the modules using sound. And obviously, you're free to distribute your source even if you don't use sound Big Grin
Reply
#8
Thanks.
Reply
#9
just to continue the talking about distribuiting only program with no source code...
If I use also one instruction about sound my code becomes LGPL and I must share source code
if I use no instruction about sound my code is MIT license
....
if I use a different sound library my code is MIT license plus library's licence.
...
is it right?
Reply
#10
(07-17-2022, 01:00 PM)TempodiBasic Wrote: just to continue the talking about distribuiting only program with no source code...
If I use also one instruction about sound my code becomes LGPL  and I must share source code
if I use no instruction about sound my code is MIT license
....
if I use a different sound library my code is MIT license plus library's licence.
...
is it right?

I would make a few important distinctions:

One, code you've written can be licensed under whatever license you want, even multiple ones. This is because you own the copyright, and thus the ability to grant use of it via a license.

Two, QB64 itself does not place any requirements on what license you make your code available under, You can choose GPL, LGPL, MIT, Apache 2.0, etc. whatever you want. In particular MIT is not a requirement.

And three, regardless of the license you choose for code you personally wrote, you still have to meet the requirements of the licenses of other code used in your program:
  • For the MIT libraries, this means including a notice about the MIT license along with your distributed executable.
  • For the LGPL sound libraries, you have to meet the requirements of the LGPL, which functionally requires making the source code for the entire program (including your code) available.

In either situation, your underlying code does not have to be MIT or LGPL but just has to meet their requirements while using those libraries, and consequently be released under a compatible license. So if you write a program that uses sound and then stop using sound in the future, you would no longer have to meet the LGPL requirements and could stop publishing your source code (assuming you wrote all the code and no other libraries you're using are LGPL).

(Note that things get a bit more interesting if you're creating a library that gets linked into others, but QB64 can't currently produce libraries so it's not that important)
Reply




Users browsing this thread: 2 Guest(s)