DLL licence question

Everything else that doesn't fall into one of the other PB categories.
BalrogSoft
Enthusiast
Enthusiast
Posts: 203
Joined: Sat Apr 26, 2003 6:33 pm
Location: Spain
Contact:

DLL licence question

Post by BalrogSoft »

Hi...

I have a question related with dll creation, i made a dll to do motion detection with webcams, and i want to sell only for commercial use, but i have a question with this:

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.

Specially with "and can't be used in any form (static libraries, DLL and more) in another programming langage" and "This includes the simple DLL", i dont make any wrap of pb functions, are all my own functions, and i want to know if i can sell the library to people that dont use Pure Basic.

Bye...
Num3
PureBasic Expert
PureBasic Expert
Posts: 2812
Joined: Fri Apr 25, 2003 4:51 pm
Location: Portugal, Lisbon
Contact:

Post by Num3 »

If the DLL functions are your own then there is no problem with selling the DLL.

That part of the licence agreement is there to avoid making a wrapper dll for purebasic functions and sell it has your own work...

Example:

This you can't do:

Code: Select all

Proceduredll Windowopen(window,x,y,w,h,text,flags)
 procedurereturn openwindow(window,x,y,w,h,text,flags)
endprocedure

This you can (doesn't work, but gives the idea) :

Code: Select all

Proceduredll Windowopen(window,x,y,w,h,text,flags)
 procedurereturn CreateWindow_ (lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
endprocedure

Code: Select all

Proceduredll Windowbuttonopen(window)
  If OpenWindow(window,0,0,222,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ButtonGadgets") And CreateGadgetList(WindowID(0)) 
    ButtonGadget(0, 10, 10, 200, 20, "Standard Button") 
    ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left) 
    ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right) 
    ButtonGadget(3, 10,100, 200, 60, "Multiline Button  (longer text gets automatically wrapped)", #PB_Button_MultiLine) 
    ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle) 
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 

endprocedure
BalrogSoft
Enthusiast
Enthusiast
Posts: 203
Joined: Sat Apr 26, 2003 6:33 pm
Location: Spain
Contact:

Post by BalrogSoft »

Thanks Num3 for explain me this, but i have another question too related with this:

...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...

i want to know if dlls created with PB can be used on Visual Basic, C++, etc, i want to sell my library to anyone. It says cant be used in any form in another programming language, and this includes the simple dll..
Fred
Administrator
Administrator
Posts: 18162
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Post by Fred »

You can do it if it's not a basic wrapper of PureBasic commands.
Hi-Toro
Enthusiast
Enthusiast
Posts: 269
Joined: Sat Apr 26, 2003 3:23 pm

Post by Hi-Toro »

But what does that cover? Are you allowed to use any PB commands at all? I must admit that this part of the license disappointed me when I read it.
James Boyd
http://www.hi-toro.com/
Death to the Pixies!
Proteus
Enthusiast
Enthusiast
Posts: 113
Joined: Wed Sep 17, 2003 8:04 pm
Location: The Netherlands

Post by Proteus »

You can use PB commands, but not a library with commands like:

Code: Select all

ProcedureDLL.l WindowOpen(Window.l, x.l, y.l, width.l, height.l, Flags.l, title.s, ParentID.l)
  OpenWindow(Window, x, y, width, height, Flags, title, ParentID)
EndProcedure
P4 2.4GHz, 256 MB, WinXP Pro, onboard video&audio.
The Programmer's Drinking Song:
"99 little bugs in the code,
99 little bugs.
Fix one bug, recompile
100 little bugs in the code."
ricardo
Addict
Addict
Posts: 2438
Joined: Fri Apr 25, 2003 7:06 pm
Location: Argentina

Post by ricardo »

Hi-Toro wrote:But what does that cover? Are you allowed to use any PB commands at all? I must admit that this part of the license disappointed me when I read it.
What you CANT do is make functions that are NOTHING MORE than a wrap to a PureBasic command.

BUT if your functions use the PureBasic commands to do some job of your own its perfectly legal.
ARGENTINA WORLD CHAMPION
User avatar
Danilo
Addict
Addict
Posts: 3036
Joined: Sat Apr 26, 2003 8:26 am
Location: Planet Earth

Post by Danilo »

PureBasic Help wrote:can't be used in any form (static libraries, DLL and more)
in another programming langage, except for PureBasic owners.
The license says you are not allowed to use DLLs written with
PureBasic with other programming languages, except for PureBasic
owners.

If you write a program with C/C++, you can use the DLL you wrote
with PB in this (your own) project.

Its not allowed that somebody who does not own a PB license
uses a DLL written with PB.


Maybe Fred can change the license to make it more clear to
everybody. As long as the license isnt 100% clear at this point,
its an gray area.
If you release a DLL (free or sell it) that can be used with other
programming languages from people who dont have a PB license,
its possible you meet Fred in a court of justice.

I know the goal of the license and how it is meant, but if you
run a business you cant rely on the *meaning*, you have to
follow the written license exactly.

You cant make 100% clear what is allowed and what is not,
its always an gray area.
One person says this and that is allowed where another person
thinks its not allowed. Depends on your personal feeling what
is allowed and what not.

Small example:

Code: Select all

ProcedureDLL.l InitScreen(w,h,name$)
  If InitSprite() And InitSprite3D() And InitKeyboard()
    If OpenWindow(1,0,0,w,h,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,name$)
      If OpenWindowedScreen(WindowID(),0,0,w,h,0,0,0)
        result = #TRUE
      Else
        CloseWindow(1)
      EndIf
    EndIf
  EndIf
  ProcedureReturn result
EndProcedure
This procedure is written by me and it does not just export
1 command from PureBasic.
In my opinion its lame and just like a wrapper to export the
PB-commands. Other people can have another opinion about it.
That is what i meant with "gray area". Nobody can say for
sure what is right and what is not allowed.


Would be best to remove that part of the license or make it
more clear.
I´ve never seen another programming system where the license
said i can write DLLs only for my own use or i´m not allowed to
use internal commands of the programming system in DLLs.

There are always some lamers out there that simply export the
commands through a DLL because they cant program themself.
Its also possible that somebody takes the PB editor sources and
sells it with some little changes... without releasing the modified
sources like stated in the license.

We cant change that, but we shouldnt limit 999 users in what they
can do just because 1 person doesnt get the point...
cya,
...Danilo
...:-=< http://codedan.net/work >=-:...
-= FaceBook.com/DaniloKrahn =-
freak
PureBasic Team
PureBasic Team
Posts: 5940
Joined: Fri Apr 25, 2003 5:21 pm
Location: Germany

Post by freak »

This statement actually applys to the PureLibraries, not to the dll you
create. It is easier to understand that license statement, when you know
the whole story, so here it goes:

One day, there was a guy, who packed all good PB functions, that BlitzBasic
didn't have into a dll, and made it avaiable for download in the BB forum.

Now, some of the PB commands, especially, the most usefull ones required
lot's of hard coding work to create, and it is pretty much disappointing that
these guys just need to download that dll for free, and will never buy PB,
because they can simply use it's functions with BlitzBasic.

That's what this is all about. Nothing else. You can create any dll, also
use all PB commands in there as you want, and use that dll with any other
language, even sell it, there is no problem with that.
But that dll must contain something you created, some code that does
something, not just export the plain PB function.

Nobody want's to stop you from using what you create with PB in which
ever way you want, or benefit from it by selling it, this is just about
stopping people from sort of *stealing* fred's hard work, that's all.

So... to see, wether you dll does or does not apply to this license is IMHO
pretty simple. If the purpose of the dll is something like "hey, i make a
dll, that let's you use all those cool PB functions without buying it", then
it should be pretty obvious to anybody with some common sense, that
this is what is called here a *wrapper* dll.

Now, as i can read in the first post here: " i made a dll to do motion
detection with webcams, and i want to sell only for commercial use",
i think everybody agrees, that this is somewhat different from what i've
talked about above, so i don't see a problem with selling that at all.

[edit]
I agree with Danilo.
The statement as it is, actually forbids to use the dll with any other
language, which is not what it is intended to do.

So, a change is necessary there as danilo said.
[/edit]

Timo
quidquid Latine dictum sit altum videtur
Hi-Toro
Enthusiast
Enthusiast
Posts: 269
Joined: Sat Apr 26, 2003 3:23 pm

Post by Hi-Toro »

I can't think of any other language that restricts what you can do with programs you create with it.

The Blitz example could easily be turned around -- someone could write a Blitz shoot-em-up with built-in options to easily change all of the graphics and sounds (a mod-able shoot-em-up) and sell it as a shoot-em-up construction kit sort of program (giving their end users express permission to sell their version). There's nothing to stop anyone doing this with Blitz, despite the fact that it is essentially a wrapper for Blitz's built-in functions.

There will be 1 lamer in 1000 who creates such a wrapper, and who on Earth is going to buy it?

The current situation either means you can't create DLLs for others to use (defeating a large part of the point of DLLs) or you are tied to having to ask permission to release a DLL in case it doesn't comply with Fred's license restrictions. Pure Basic rules, and I love Fred's work, but this does kinda suck! It's one thing that's bothered me for quite a long time, but never really made a point of until now.

I think it'd be much better to assume that the vast majority of people aren't going to try and re-package Fred's work as their own.
James Boyd
http://www.hi-toro.com/
Death to the Pixies!
BalrogSoft
Enthusiast
Enthusiast
Posts: 203
Joined: Sat Apr 26, 2003 6:33 pm
Location: Spain
Contact:

Post by BalrogSoft »

On this moment, i dont know what to do, if remove my library dll from my web until Fred response to this or what..., because Danilo says one thing and Freak says the opposite... Anyone knows certainly if a PB DLL that not is a function wrapper, can be used with other languages?
Dare2
Moderator
Moderator
Posts: 3321
Joined: Sat Dec 27, 2003 3:55 am
Location: Great Southern Land

Post by Dare2 »

I think it means (or should mean) that as long as you're not merely supplying PB or a part thereof as a dll, go for it.

So if what you provide is not simply a part of the PB command/statement/etc set converted to a DLL, you are ok.
User avatar
Danilo
Addict
Addict
Posts: 3036
Joined: Sat Apr 26, 2003 8:26 am
Location: Planet Earth

Post by Danilo »

@BalrogSoft:
I think you can sell your DLL without getting any problems.

I only wanted to say that its really needed to make it more
clear what is allowed an what is not.
1 person has another opinion about a code than another
person.... 1 guy says its a wrapper, the other guy says its not.

If you run a commercial business you cant rely on what somebody
says somewhere or here in this forum :!:

The written license that comes with PB (in the help) is the only thing
that counts before a court.
And, like i said before, the PB license isnt 100% clear at this
point, so Fred should change it a bit.

If the PB license would be more clear, we wouldnt have such questions.
We had this question before (in german forum) and many peoples
are not 100% sure what they can do and what not.


BTW:
The PureBasic license should be shown at install time and not
only in the help file!
Like all other installers... you must be able to choose
"i agree to these terms and condition" or cancel the install/update
process.
From that point of view, there is no license for PureBasic that
counts before a court, because you are not forced to read the
whole help file and search for a license...
cya,
...Danilo
...:-=< http://codedan.net/work >=-:...
-= FaceBook.com/DaniloKrahn =-
Kanati
New User
New User
Posts: 9
Joined: Fri Jun 27, 2003 7:00 pm
Contact:

Post by Kanati »

Very simple...

Ask this question...

Does my DLL fuctions directly duplicate on a function by function basis, the commands in Purebasic by USING the correlating Purebasic commands?

If you answer YES to that question, then you cannot sell it/give it away.

For example. Purebasic has the OpenDatabase command. If your DLL is a collection of database commands and ALL IT DOES is wrap the purebasic functions... In this case, OpenDatabase, CloseDatabase, etc... Then you are not allowed to do it as all you are doing is making those commands available outside of the purebasic compiler.
Fred
Administrator
Administrator
Posts: 18162
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Post by Fred »

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.

Balrog: you can continue your work, don't worry.
Post Reply