This might motivate people to use FOSS libraries more if they knew. And they said that the GPL was a viral license... funny now that I think of it.Unfortunately not everything there is nice either. If you link dynamically against libstdc++ or libgcc and ship those DLLs you'll have to provide a package that includes the source code of libstdc++ (~50+ MB) and no you can't just simply point to GNU's FTP servers. (Source (http://gcc.gnu.org/ml/gcc/2004-06/threads.html#01123))
if you build your application and link it against a debug library, Microsoft prohibits distribution of your application itself, even if you send useless copies of it around that cannot be run by themselves.
Unfortunately not everything there is nice either. If you link dynamically against libstdc++ or libgcc and ship those DLLs you'll have to provide a package that includes the source code of libstdc++ (~50+ MB) and no you can't just simply point to GNU's FTP servers. (Source)fsf and microsoft keep achieving great breakthroughs in the field of limitless stupidity. fsf and stallman understandably more since they 'are not ruled by money' so they don't have to even listen to end users but microsoft isn't much better.
The debug libraries I can understand, but merely dynamically linking against the libraries, which means none of their code is really part of your program, allows them to dictate what you are allowed to to with your own code.That actually sounds exactly like GPL except ms tells you not to distribute it when GPL forces you to give it all up under GPL. ;D
The whole licensing stuff is really bad on both sides and I wish there was a TRULY free option. :-\osi lists licenses that provide real freedom(not freedom to get robbed by fatass stallman out of your (c)) of owning your own code, being credited for your work, etc. don't mind GPL being on the list too :P it's list of open source licenses, but the ones that are not copyleft aren't viral, like zlib(that is a bit too much freedom, being allowed to not give credit when not distributing sources), mit(my fav.), etc. LGPL is actually quite ok too, because it allows linking, and lzma sdk has a kind exception that static linking is allowed without infecting the code with (L)GPL when there are no changes from original code.
Also I still don't like that GPL can "inject" itself into your application and tries to turn anything it touches into GPL as well. (Not a legal expert, so I don't really understand how things work).libstdc++ is licensed under GPL with an exception so that GCC can produce proprietary applications that link to it. This essentially means that when statically linked, any GCC compiled application is free to be licensed under whatever terms you want and distributed under said terms as well. See this as a sort of GCC promotion.
The whole licensing stuff is really bad on both sides and I wish there was a TRULY free option. :-\There is a reason why the Free Software Foundation was named as such. They are probably not as free as e.g. zlib, however, they also care about protecting the freedom of others who are not immediately part of the development process. This comes at the cost of some freedom for a single individual, however the idea is that the freedom of the community should be protected above all.
Forcing you to license under GPL is still better than preventing you from distributing at all. And if that is what the library author wanted, then so be it. Even if you intended on releasing your code a la GPL, zlib or similar, Microsoft can still prevent you from distributing your executable this way.QuoteThe debug libraries I can understand, but merely dynamically linking against the libraries, which means none of their code is really part of your program, allows them to dictate what you are allowed to to with your own code.That actually sounds exactly like GPL except ms tells you not to distribute it when GPL forces you to give it all up under GPL. ;D
there is no real advantage to dynamically link libstdc++ on WindowsDo you have any idea how heaps work in dlls and exes? Do they are share same heap so there are no problems in new and delete across in both static and dynamic? I'm not being sarcastic, I really don't know. ;D
Any other library that is licensed under the GPL (not LGPL) or AGPL was probably done so on purpose, as Richard Stallman describes "as a matter of strategy". Basically, if you know for sure that your sort algorithm runs 100x faster than Microsoft's on all platforms and you want to give GPLed software and only GPLed software an advantage over software that have to use the slower proprietary library then you should license your algorithm under GPL as well. If you know that your sort algorithm is more or less just as fast, you can release it under LGPL as a GPL without the "viral" nature.Yes, I read that, it's basically: can you troll devs and make their jobs harder and force wheel reinvention if you make it GPL? If yes, go GPL. This is really bad, promotes reinventing the wheel and makes people cold towards anything that is os or free... Really, who is going to use that GPL algorithm? Would Laurent use it for SFML? Would anyone use it for their library, which they intend on making zlib, LGPL, mit or something licensed? Would some big company use it like for example apple uses libcurl? Would a game dev use it*?
Do you have any idea how heaps work in dlls and exes? Do they are share same heap so there are no problems in new and delete across in both static and dynamic? I'm not being sarcastic, I really don't know. ;DNo idea what you just said.
GPL is just too much, just too much, code that doesn't have anything to do with it but was compiled into single executable, and every single module of that code, even if you use GPL xml parser to parse settings for renderer that has 3205205 features, you must give up all the code for every feature and if you ever write a game using that renderer you must give it up too(maybe there is a way to make your code into zlib or mit libs that you link to exe to which you link GPL crap and then you could use your code in closed project in future if you didn't use GPL again then, but really, such brutal changes for just using a stupid shared lib because some fatass made up super viral license..). LGPL is first semi-acceptable thing.There is probably a non-GPL licensed library equivalent of most significant GPL licensed libraries out there at the moment. You don't have to use the GPL library if you don't want to. It will still run on Linux, Mac OS and Windows without any extra effort. If you do choose to use a GPL library, it doesn't mean you forfeit your rights of ownership to your code forever, you can still reuse your own code (since it is truly yours) in future non-GPL projects, providing the code you reuse does not make use of any GPL library features. If what you said was true, it would mean you wouldn't be allowed to change the license of your code after you released it under GPL for the first time, and this is obviously not the case.
Yes, I read that, it's basically: can you troll devs and make their jobs harder and force wheel reinvention if you make it GPL? If yes, go GPL. This is really bad, promotes reinventing the wheel and makes people cold towards anything that is os or free...GPL makes you reinvent the wheel... yeah if you insist. Instead of using other existing libraries that get the job done as well, you are forced to reimplement the GPL code in your own application just so you can benefit from what it's author deemed as an advantage they had over non-GPL implementations without respecting their choice of a licence. There is a word for this: piracy. If you ever do this, don't come running to me when FSF lawyers show up at your doorstep.
Really, who is going to use that GPL algorithm? Would Laurent use it for SFML? Would anyone use it for their library, which they intend on making zlib, LGPL, mit or something licensed? Would some big company use it like for example apple uses libcurl? Would a game dev use it*?The answer is simple: those who can afford to use it. And no, I don't mean afford in monetary terms, I mean afford in the context of wanting to release their code under GPL as well anyway.
NO.
Pretty much only academics(=morons) or other GPL programmers can use it. This is really bad, it's not freedom, it's basically cutting off the rest of the world.Yeah... I guess Alan Turing, Ken Perlin, Bjarne Stroustrup, Tim Berners Lee, Bob Kahn, Vint Cerf, Linus Torvalds, Edsger Dijkstra, Ron Rivest, Claude Shannon, Jack Bresenham, Edgar Codd and many many others were all morons. They were in fact so moronic, they didn't demand a single cent for all their work which makes it possible for you to type these words forsaking them. Be aware, a license like GPL is not required to publish academic papers since all of GPLs values are inherently present once a paper gets published (conveying modified versions, attribution etc.). If they had to pick a licence under which they would publish, it would be GPL since this is as close as it gets to the actual terms. And because of this, you are able to type what you just did disrespecting all of them, unaware that if they had not released their work for everybody to see, use and derive, we would not be in the information age now. Please, you can at least show some respect and not generalize like that.
...Yeah... I guess Alan Turing... and many many others were all morons... Please, you can at least show some respect and not generalize like that.
... academics(=morons)...
No idea what you just said.You can easily get yourself your own small dll and lib hell when you link few things together and link some things twice to dll and exe or lib and exe or something, I think you had similar problem with glew being statically linked in SFML.
Yeah... I guess Alan Turing, Ken Perlin, Bjarne Stroustrup, Tim Berners Lee, Bob Kahn, Vint Cerf, Linus Torvalds, Edsger Dijkstra, Ron Rivest, Claude Shannon, Jack Bresenham, Edgar Codd and many many others were all morons.Sorry you misunderstood that. I meant morons as in people who write useless code anyway so they don't care about licensing because it's hacked together for one purpose and is going to get thrown away soon.
You can easily get yourself your own small dll and lib hell when you link few things together and link some things twice to dll and exe or lib and exe or something, I think you had similar problem with glew being statically linked in SFML.The only reason why it is so complicated, is because Laurent chose to make it trivial for beginners to get SFML up and running, at the expense of a more standard linking procedure. If he didn't mess with the visibility options and let the end user link in GLEW by themselves, SFML and SFGUI wouldn't be more complicated to link properly than any other library.
There are apparently few heaps(?) so something like that:MyObj * obj=newObjInDll();might(?) crash. I'm really not sure, I had static Lua on windows crash when vm was allocated in dll and operated on in exe which both linked in same static lib. I'm fairly sure that was it because it was gone when I started to link dynamic Lua to both. I don't know if it was memory because Lua vms have pointer to memory managing function so it'd use same malloc and free in both but it was for sure a problem with static linking because dll instantly fixed it without changing the offending code in exe and my dll.
delete obj;
Sorry you misunderstood that. I meant morons as in people who write useless code anyway so they don't care about licensing because it's hacked together for one purpose and is going to get thrown away soon.From the many papers I have had the pleasure to read, most programming work done at universities consist of demonstrating the concept at hand. In the end, such code is never even released to public and as such does not have to have any open source licence. They don't have any rule that says, if we can't decide what to use we go GPL. They don't distribute.
... rest of wall of text ...As I've said already, if you want to make money off your code, don't use GPL, that was not its purpose. This does not mean you should antagonize people who do choose to release under GPL because you don't. It was their decision and does not harm you in any way whatsoever. This also does not mean they are all behind Mr. Stallman. Releasing under GPL is one thing, sharing his ideas (which are very radical sometimes) is another. I am a happy user of Windows and Linux, I use proprietary software as well as GPLed and other open source software. I also really don't care if someone goes ahead and runs my GPLed software on Windows. It's the text in the licence that counts for me. It gets what I want done and that is for my code to be used under the terms of the GPL. It saves me the hours of writing my own terms under which I want to release. That's all there is to it. We have the choice, and as long as that is the case, we shouldn't hate or love one choice over another as long as they don't impact us in any negative way.
The only reason why it is so complicated, is because Laurent chose to make it trivial for beginners to get SFML up and running, at the expense of a more standard linking procedure. If he didn't mess with the visibility options and let the end user link in GLEW by themselves, SFML and SFGUI wouldn't be more complicated to link properly than any other library.So does dynamic linking make sense after all or you mean link everything statically? Or do you mean that everything is made dynamic and if they(SFG,SFML) match they use same one and if not they have they own each? Windows makes this really confusing. On linux everything works out of the box as dynamic and I've yet to have linking problem. Can't the same be done for Windows?(everything dynamic so if few dlls use certain lib they each use same dll instead of each linking in own lib).
So does dynamic linking make sense after all or you mean link everything statically? Or do you mean that everything is made dynamic and if they(SFG,SFML) match they use same one and if not they have they own each?You can see the full discussion here (http://en.sfml-dev.org/forums/index.php?topic=9362.0). (and/or below or above)
Windows makes this really confusing. On linux everything works out of the box as dynamic and I've yet to have linking problem. Can't the same be done for Windows?(everything dynamic so if few dlls use certain lib they each use same dll instead of each linking in own lib).Yes you could, if you'd start a packaging service as for all the distros, but it probably would never resolve itself, because all the existing applications would have to start using your package service, otherwise they'll still just be shipping their own DLL version etc.
There should be a linking tutorial or something, this gets really hellish on windows. What if I have exe and my engine dll or lib which both use SFML, SFG and Lua? Do I link all dynamically or statically to both? Lua when it was linked statically before I moved to Linux to write was causing problems in visual so I guess dynamically?I usually go with the rule, either go static or dynamic. Starting to mix things is quite dangerous and with SFML even more, since this exactly where the issue comes into play. When linking statically you link the libraries all in the final application, so if library A is using SFML and exe B is using SFML, SFML will only be linked in exe B and library A will automatically be able to use it as well. What now SFML does when linking statically is, it includes GLEW into its static library, thus if you link against SFML and GLEW in your exe B, you'll end up with two different GLEW versions, which may or may not let the linker or compiler explode...
Yes you could, if you'd start a packaging service as for all the distros, but it probably would never resolve itself,I mean always dynamically, not make repos, since people are saying 'static linking makes no sense on windows' but there is LGPL and statically linking some things together explodes.
As I've said already, if you want to make money off your code, don't use GPL, that was not its purpose.They actually say they promote earning money from software, which doesn't make sense for the most part since anyone can get it for free because of GPL rules so you can't earn unless you're selling support, services or copyright something that makes app not work(like assets for a game) almost at all.