(very) Confused about PureBasic license

Everything else that doesn't fall into one of the other PB categories.
roblos
User
User
Posts: 20
Joined: Wed Apr 19, 2006 2:20 pm

(very) Confused about PureBasic license

Post by roblos »

Hi all,

this is my first post here and I would like some advice from someone about PureBasic license.

I have been in touch with Fred before posting my message here but something is still not clear to me so I would appreciate any help.

Well, let's start..I bought PureBasic a few days ago and what I do like, among the other things, is the support to a 3d engine included in the compiler.

My question is: Could I create a software like RPG Maker, The 3D GameCreator or FPS (by The Game Creators) with PureBasic? Would It be legal?

All I found is this:

"The PureBasic license explicitly forbids the creation of DLLs whose primary function is to serve as a 'wrapper' for PureBasic functions. "
from the manual

and the faq:

"Can I create commercial applications with PureBasic ?
Yes. Once you get PureBasic, you can do any kind of program (freeware, shareware and even commercial applications) without have to pay any extra costs to Fantaisie Software. An exception is made if you are using PureBasic libraries which requier a third party license (ie: MIDAS module library). Then you must probably pay licence fees to this third-party software publisher. "

"Is it allowed to use DLLs made with PureBasic in other projects ?
Generally yes. You can make DLLs including PureBasic commands for your own projects without any restrictions. But it's not allowed to release simple "wrapper" Dlls to include PureBasic commands in other programming languages."

so..in other words, according to you, what are the restrictions? I can do everything unless I create DLL using PB commands...am I right?

Thanks for your understanding and help,
Roberto
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Post by va!n »

hi and welcome to purebasic :)

as far as i understand it, you can do nearly everthing you want and what you are able to programm. the only restriction is, you are not allowed to use purebasic functions for your own and/or another programming language!? if you programm a complete owb sub routine for (les us say, drawing and scrollong all your objects on a screen) and call this as a dll, this should be allowed. Only wrapping PB functions for another programming languages are forbidden as i have understand it right.
va!n aka Thorsten

Intel i7-980X Extreme Edition, 12 GB DDR3, Radeon 5870 2GB, Windows7 x64,
gnozal
PureBasic Expert
PureBasic Expert
Posts: 4229
Joined: Sat Apr 26, 2003 8:27 am
Location: Strasbourg / France
Contact:

Post by gnozal »

Perhaps this helps : http://www.purebasic.fr/english/viewtop ... postdays=0
Fred wrote:The main point of the this part of the license was to not encourage the use of the PureBasic commandset freely in another language and keep the PureBasic features for PureBasic coders. I don't see an easy way to explain clearly the difference between a basic wrapper and a 'real' code, so I will probably remove any limitation about this subject.
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
thefool
Always Here
Always Here
Posts: 5875
Joined: Sat Aug 30, 2003 5:58 pm
Location: Denmark

Re: (very) Confused about PureBasic license

Post by thefool »

Hi and welcome :)
If the others didnt make it clear;
roblos wrote: My question is: Could I create a software like RPG Maker, The 3D GameCreator or FPS (by The Game Creators) with PureBasic? Would It be legal?
YES! Perfectly. You can even sell it :) (Of course if you use a 3rd party 3d engine you would have to follow that license!)
so..in other words, according to you, what are the restrictions? I can do everything unless I create DLL using PB commands...am I right?
Yes. You cant wrap the pb functions, but you can use them. If you for example write an encryption routine using purebasic functions and so on, you can do what you want with the dll! (you are, of course, allowed to wrap api commands and so on)
roblos
User
User
Posts: 20
Joined: Wed Apr 19, 2006 2:20 pm

Confused...

Post by roblos »

Hi and thanks for your replies:

from va!n: "Only wrapping PB functions for another programming languages are forbidden as i have understand it right."

sure, I agree 200% with that!

and from gnozal: "Perhaps this helps : http://www.purebasic.fr/english/viewtop ... postdays=0"

I had a look at the previous post and I have questions:

"All components, libraries, and binaries are copyrighted by Fantaisie Software and can't be used in any form (static libraries, DLL and more) in another programming langage, except for PureBasic owners. This includes the simple DLL or static library wrapping of PureBasic commandset. "

but in my PureBasic version (4 beta 10) I can't see the same exact words!
I wrote them in my message and I also reported the words from the faq section of PureBasic website.

also it looks like the limitation is for creating dlls only, but Fred explained me through email: "...you can't reuse the
PB routine in another program which is used to create another
standalone program.." which does not consider dlls, but standalone programs.

I begin to understand I cannot use ANY dll made with PB in other languages if I just use ONE PB library command

"You can not use any library commands (except string and math, as
they are very core one) if you want to distribute in another langage
or creation tool which will call it. For example OpenWindow() can't be used in a DLL."

from Fred's email, thus according to me the restrictions are more than a simple wrapper, but in simple words, if I create a software called RPGMAKER.exe without any dll, where users create their own game with some scripting capabilities, and the game is not a standalone but a MYGAME.ZIP that uses RPGMAKERRUNTIME.exe (made with PB and distributed with RPGMAKER.exe)...am I allowed to do it?

Thanks again,
Roberto
Dare2
Moderator
Moderator
Posts: 3321
Joined: Sat Dec 27, 2003 3:55 am
Location: Great Southern Land

Post by Dare2 »

Hi roblos,

This is my take on it (and I do not represent Fantasie Software, so this is just opinion):

You should be safe with most things, just so long as you don't "steal" purebasic commands. For example, wrap them to enhance another language or create your own. I believe that the licence attempts to prevent that sort of thing from happening.

An example would be, say, providing the database library to enhance a fictional CrippledBasic. Creating a dll that just mimiced each PureBasic command, eg:

Code: Select all

ProcedureDLL.l OpenDB(id,dbName.s,user.s, pw.s)
  ProcedureReturn OpenDatabase(id, dbName, user, pw) 
EndProcedure
and then providing this as a library for CrippledBasic is a no-no, it steals from PureBasic to enhance a rival product.

I guess it is an ethics or morality question to oneself: "Would I like to see this happen if I was the author of PureBasic?". If no, don't do. "Would I feel wronged if this was done using my compiler?" If yes, don't do.


Anyhow, that is how I see it and apply it.


(Anything too restrictive makes PureBasic too "introverted" or insular and reduces it's usefulness. I do not believe that is the goal of Fantasie Software. However giving "CrippledBasic" a boost is probably not a goal either :))
@}--`--,-- A rose by any other name ..
thefool
Always Here
Always Here
Posts: 5875
Joined: Sat Aug 30, 2003 5:58 pm
Location: Denmark

Post by thefool »

roblos. You cant develop a prorgamming language that takes every windowopen() it finds in your script and performs OpenWindow().

you CAN use the api for that.



and i think its wrong you cant use openwindow() in a dll. If you create a special messagebox or requesters using openwindow and using that to show them, you CAN use them!


and of course listen to dare2 (even though he is a bit weird he sometimes says some good stuff :twisted: ) :P
roblos
User
User
Posts: 20
Joined: Wed Apr 19, 2006 2:20 pm

Less confused :)

Post by roblos »

Hi again and thanks for helping me clearing my doubts.

I am slowly understanding how it works, what I can do and what I must not.

Well thanks to last messages from Dare2 and thefool.

Let's say I don't want to develop a programming language, because it's not my target and let's forget to create dlls for other languages, because I know we're not allowed, but I want to ask something else, please.

What about if I create a level editor in PureBasic for other languages (ie: DB Pro or B3D). Let's suppose my level is saved in an .ini file.
I guess that's ok, the problem comes if I also want my other language to read that level with some PB functions through a PB dll. Well I guess I cannot unless I use api, even for these simple tasks...am I right?

And the same is valid for any other high level PB command...but, just for example, let's say I don't want to create a dll, but ehm ...something like a server program that receives requests from other languages (ie: create a window, read a file ini, ...) and communicate with those languages. Well it's not a dll, but it uses some PB functionalities...if I'm not allowed to do it, could you help me to understand where in the faq or in the PB license it's written I cannot?

Thanks again,
Roberto
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Post by dracflamloc »

Well reading an INI just uses some file and string commands, I highly doubt they'd throw a fuss about it. But who knows...

I think the main goal of that clause is to keep people from taking the complicated libs like sprite and such and making them available in one of PBs competitors.

That said you could make your own commands with the exact same layout and features and functionality of PB's libs and do whatever you want with them.

To be honest though this is the kidn of question best left to private messages with the pb team.

[edit] i see fred already answered
Last edited by dracflamloc on Wed Apr 19, 2006 8:44 pm, edited 2 times in total.
Fred
Administrator
Administrator
Posts: 18162
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Post by Fred »

I already answered you via several mail today, and the answer was 'no'. Why do you ask here again then ? You want to sell a program to create games easily by using the commandset of PureBasic, and it's not allowed. If you want to do it, use full API or raw DirectX and you're done.
Lyon
User
User
Posts: 59
Joined: Tue Mar 28, 2006 9:26 pm

Post by Lyon »

"The PureBasic license explicitly forbids the creation of DLLs whose primary function is to serve as a 'wrapper' for PureBasic functions. "
from the manual
Keep in mind that "software licenses" are usually illegal in most countries and are rarely upheld in court. They are generally provided post sale and often violate DMCA and other international copyright laws.

Legally, you can use PB to write whatever you want. PureBasic is a programming language. The syntax commands in PB are useless unless you write the code to make your program do what you want. Nobody can claim a copyright on the code you write.

To apply this twisted, draconian mentality,

1. Dark BASIC would be illegal because it was written in VC++ and it wraps DX.

2. Blitz3D would be illegal because it was written in VC++ and wraps DX.

3. PureBasic would be illegal because it was written in some variant of C++, plus it wraps DX, OpenGL and even wraps the Ogre3D engine.

4. Anything written using any programming language would be illegal because you are using the syntax commands provided by the language to create your program.

Not to mention most "commands/functions" in Pure Basic, Blitz Plus, IBasic are simply "wrappers" for Windows API or DX.

Any programming language or game creator has to be written in something and merely uses the syntax commands of the language it was written in.

People have used PB to write game makers, new programming languages and scriptable game engines.

If you are unhappy with PB, you can always contact your credit card company and request a charge back.

I suggest to put a smile on your face and be a happy PB user. It is the best language out there IMHO.
roblos
User
User
Posts: 20
Joined: Wed Apr 19, 2006 2:20 pm

...

Post by roblos »

Hi Fred, Lyon and all other users who replied me

well first of all I apologise if I wrote something that might have sound inappropriate to you or some other users of the forums.

I do appreciate (and I tell this in public) the fact you promptly replied all my emails.

I have some reasons why I started writing in this forum

1) I did not want to 'waste' your (Fred's) time by replying all my emails, because you must have noticed I really need things to be explained as you would explain them to a kid and that takes time :) I consider your work as lead programmer much more important than answering ALL my emails when I still could not understand.

2) Honestly, imho, I still could not understand it and I provided quoted text from several source.

3) I searched the forums and I found some links with examples how to create third party commands or userlibs with PureBasic for other languages and it looks to me it was not clear if PB dlls could be distributed to other users (while it is clear in PB license).


and while writing this message I saw Lyon saying: "People have used PB to write game makers, new programming languages and scriptable game engines", so I wonder..are those softwares illegal? breaking the PureBasic license?

Well I'm definitely a happy (I said HAPPY) PureBasic user and I would recommend to other people despite of having bought it just a couple of days ago and there is always a project I can do with it in my mind. I just wanted to be be clarified some points...is it my fault? If so..well beg your pardon :)

Thanks,
Roberto
Lyon
User
User
Posts: 59
Joined: Tue Mar 28, 2006 9:26 pm

Post by Lyon »

and while writing this message I saw Lyon saying: "People have used PB to write game makers, new programming languages and scriptable game engines", so I wonder..are those softwares illegal? breaking the PureBasic license?
No, they are not illegal or breaking the license.

Here is an example of what Fred does not want.

Blitz Plus, does not properly generate random numbers. Pure Basic does. I could write a simple DLL in PB that uses PB functions to generate random numbers. I could use this DLL in my Blitz Plus programs with no problem. Fred does not have a problem with that.

However, if I decided to make that DLL available to other Blitz Plus programmers so they could use it in their programs, that would be wrong and Fred would have a problem with that.

As Fred said long ago:
Fred wrote:
The main point of the this part of the license was to not encourage the use of the PureBasic commandset freely in another language and keep the PureBasic features for PureBasic coders. I don't see an easy way to explain clearly the difference between a basic wrapper and a 'real' code, so I will probably remove any limitation about this subject.
The license was modified a bit from what it used to be, but things do seem to get lost in the translation process.

I will post a more detailed example in another post.
roblos
User
User
Posts: 20
Joined: Wed Apr 19, 2006 2:20 pm

thanks Lyon

Post by roblos »

Hi Lyon,
thanks, because you are very clear in your last examples (also thanks to all).

I wrote:
"and while writing this message I saw Lyon saying: "People have used PB to write game makers, new programming languages and scriptable game engines", so I wonder..are those softwares illegal? breaking the PureBasic license?"

[quote="Lyon"

>No, they are not illegal or breaking the license.

[quote]

In his last email, Fred explained me:
"And the answer is definitely no, we own our code and you can't include some or any part of it in another product which will create new programs
(games or everything else)."

Am I missing something?

Thanks,
Roberto
thefool
Always Here
Always Here
Posts: 5875
Joined: Sat Aug 30, 2003 5:58 pm
Location: Denmark

Post by thefool »

now I'M beginning to get confused as well :?
i see NO reason why, if you f.ex wrote a game language that used things like string lib and so on if you just wrote the graphics part yourself.. as well as the linked list lib to keep track of elements as long as you dont wrap it..

i mean if you create a high level language, that has a command, for example "RemoveObject object" and that command resulted in removing a thing from a linked list, wich is drawn on screen using your own drawing routines, then why is that not legal??

of course you cant use controlling mouse options using pb's mouse lib (unless its for the gui of your interface of course) but then you can use api for that..
Locked