Jump to content
  • Advertisement
Sign in to follow this  
grill8

Questions about the HawkNL networking library and also the GNU license.

This topic is 3269 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, I have some questions about the HawkNL networking library and the GNU/LGPL license in general. Question 1) I stumbled across the HawkNL networking library and it seems a sufficient solution to a/my game engine needs. Does anyone have any advice about its sufficiency? Question 2) It is distributed with the following license: "HawkNL is a free, open source, game oriented network API released under the GNU Library General Public License (LGPL). " I do not know much about the LGPL license so am I right in assuming that it is ok to: A) Use it B) Modify it C) Distribute my modified version with my licensable game engine? Thank you for your help. Jeremy

Share this post


Link to post
Share on other sites
Advertisement
Right on A, B and C, but there is one more thing -- the end user has to be able to recompile your modified version and replace the binary that you shipped them, which means the LGPL component should be in a separate DLL to the rest of your code.
[edit]N.B. This only holds true for the LGPL, not the regular GPL. So if you come across any GPL libraries, they are much more restrictive than LGPL ones.

Share this post


Link to post
Share on other sites
I am confused ...

So I can use/modify/redistribute my modified interpretation with my licensable game engine. I simply do not understand what (if any) restrictions there are.

I do not understand why I would need a separate dll if the one I provide (with my modified version) would suffice just fine.

Thank you for your help.
Jeremy

Share this post


Link to post
Share on other sites
You don't really need a separate DLL. But you have to give the user the possibility to replace the version of the LGPLed library with a more recent one.

If you don't ship it as DLL, you'll be linking statically, which means that you'll have to either provide all object files, or the source code to your program. Otherwise, the user cannot update the library to a more recent version. That's usually not an option, which is the reason why the LGPL exists at all.

The GPL (no L) will - as pointed out by Hodgman - require you to open your sources in any case.

Share this post


Link to post
Share on other sites
I understand what you are saying ... that the end user would like to have the ability to acquire newer versions of the open source HawkNL networking library if desired. That makes a lot of sense.

What I would LIKE to do though is to modify the source code of the HawkNL networking library (it's open source) to suit/taylor to my app and then simply use the modified version in my own engine. In this case the end users would not need any newer version of HawkNL ever because it would be different (although some fundamentals would be the same). The networking would simply use the HawkNL library's source code as a basis for my own networking library which I would then ship as part of my engine.

I guess what I am needing to know is the following:

Does open source code in this scenario (LPGL etc.) give me the right to use some of its fundamental structure as a basis to construct my OWN (similiarly based but not verbatim) networking library which I could ship with my own licensable game engine?

Thank you for your help.
Jeremy

Share this post


Link to post
Share on other sites
Quote:
Original post by grill8
Question 1)
I stumbled across the HawkNL networking library and it seems a sufficient solution to a/my game engine needs. Does anyone have any advice about its sufficiency?


First of all, I feel that I ought to point out that HawkNL is an old library. Really old. It has been at version 1.6 for years now, and the documentation page contains a copyright notice for 2000-2002. In other words, don't expect any major updates. :)

Further, as far as I know, HawkNL is little more than a wrapper around the low-level socket API available on both Windows and POSIX-systems. For example, HawkNL will not give you reliable UDP or any high level features like that.

I personally think that you would be much better off with a library like ENet because it's actively maintained, provides reliable UDP but with very little bloat, and it has a ridiculously permissive license.


Quote:
Original post by grill8
What I would LIKE to do though is to modify the source code of the HawkNL networking library (it's open source) to suit/taylor to my app and then simply use the modified version in my own engine. In this case the end users would not need any newer version of HawkNL ever because it would be different (although some fundamentals would be the same). The networking would simply use the HawkNL library's source code as a basis for my own networking library which I would then ship as part of my engine.


There is absolutely nothing wrong with selling software that uses LGPL components internally. However, as previous posters have mentioned, you will need to bear the following in mind:

- Any modifications you make to the library itself must be made available as source code to your end users. Unlike the GNU/GPL this only applies to HawkNL, not any work derived from it (read: your engine).

- You should ideally distribute the HawkNL library as a DLL file rather than linking it statically, because you most likely don't want to have to give away object files or source code. If you change HawkNL and ship it with your game as a DLL, you only need to provide end users with the modified HawkNL code.

Quote:
Original post by grill8
Does open source code in this scenario (LPGL etc.) give me the right to use some of its fundamental structure as a basis to construct my OWN (similiarly based but not verbatim) networking library which I could ship with my own licensable game engine?


As far as I know there are no restrictions imposed on modeling your own proprietary software around an open source library such as HawkNL. You should, however, stay away from copy-pasting or just changing a few variable names here and there. If you really want do do this, model your own library around the HawkNL API, but only look at the internal source code when you need help solving a particular problem.

Share this post


Link to post
Share on other sites
I'm sorry, but this thread looks like it's trying to give advise about the intepretation of a legal document (the LGPL) in how it applies to a specific case (the poster's engine). We can't do any such thing, because we are not licensed lawyers in the poster's locale of business. Legal advise given by laymen is generally worse than worthless -- even if it turns out they're right. The reasons are annoying and complicated and have to do with the US legal system.

I will close this thread, not because it's bad to ask, but because it's bad to answer that particular question in this particular forum.

Share this post


Link to post
Share on other sites

This topic is 3269 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!