Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Code License Ethics Q
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Code License Ethics Q

raindog308raindog308 Administrator, Veteran

I've written some software which interacts with a very old emulated OS running under the Hercules emulator and splits its print jobs into separate files. It's written in python.

There is another project which does the same thing, but outputs only pdfs. It's written in golang and is licensed under the GPL v3.

I prefer the BSD license, and when I don't, I prefer GPL v2 because v3 essentially gives all control to the FSF. But that's me.

I'm not borrowing a single line of code from the other project (obviously) and am not even using the same config file format. However, the author there did a lot of work to determine what control characters are sent, how to determine when a job is complete, etc. and I'll use some of that info. So I'm not borrowing a switch statement, for example, but my if/else cases will be the same because that's how the emulated OS works and he did the work to discover that.

I'm of course going to give full credit and thanks to that project but my question is...do you think

(1) I have an ethical obligation to license under the GPL because I'm borrowing constants and "how to" info from the other project's code and comments

or

(2) I not only have an ethical but also legal obligation (i.e., the GPL compels it)

or

(3) No obligation

Once I'm ready to release, I think I'll reach out to the other project and ask if they want to insist on GPL but I'm just curious what people think.

Comments

  • ErisaErisa Member

    I think I agree with (1), it would be the right ethical thing to do but you wouldn't necessarily have to if you didn't want to.

  • NixtrenNixtren Member
    edited April 2022

    As much as I want to say otherwise, I agree with (2)

    It's the same story of Minecraft open-source alternatives - you can't take a peek at Minecraft's source-code

    It's the same story with the development of Wine or ReactOS - you can't take a peek at Windows' source-code:
    https://wiki.winehq.org/Developer_FAQ#Who_can.27t_contribute_to_Wine.3F

    If you want to maintain licencing freedom, you need to consider other software as a black box

    In your case, any possible copyright violations would be minimal and therefore could be considered as "fair use" (if such thing exists). Without knowing for sure, I recommend you to reach out to the other project's author to seek permission, or consider it as a black box from now on

    Thanked by 3Erisa maverickp adly
  • devpdevp Member

    @raindog308

    Considering you are sending exactly same control characters in exactly same sequences and intervals based on work done by other author which is licensed by the author and released under a license agreement and that work is authors only contribution than you have to comply the authors license agreement first and then take decision to release your work under your specified license agreement that later users of your service have to comply.

    In case authors work is also derivative of other authors work than your work have to comply as per their license agreement.

  • Not_OlesNot_Oles Moderator, Patron Provider

    Here's my two cents. :)

    If I understand you correctly, the Operating System has an interface which everyone who interacts with it must use. There's no freedom to do anything different as far as the interface is concerned.

    Thus, it's hard to see how anyone could claim copyright violation on the part of the program which sends to the OS interface.

    How your program decides what to send might be subject to copyright, i.e., if you use the same algorithms in the same order with the same priorities.

    But not merely the simple use of the same interface to the emulated OS since you have no choice but to use that interface, exactly. If I understand your question.

    Consider that the interface to a spreadsheet is rows and columns. So, I heard that, in the famous Lotus v Borland case (which I have never read), the Supreme Court apparently decided the spreadsheet interface wasn't copyrightable.

    It seems your situation might be more strongly not subject to copyright than the spreadsheet situation. For example, the rows and columns could be wider or narrower, etc. But, in your case, you are forced to use the OS interface exactly.

    If you didn't get the OS interface from the other program you would have to get the same interface yourself. The other guy did work, not work that's "art" in a certain legal sense.


    Ethically might be a different bag than legally. Yeah, sure, talk to them. Also ask the FSF maybe? If both the other guys and also the FSF tell you that what you want to do is okay, then you're probably on pretty safe ground.

    And ask a copyright lawyer instead of us. :)

    Friendly greetings! 🙈🙉🙊

    Thanked by 1yoursunny
  • devpdevp Member
    edited April 2022

    @Not_Oles said: Thus, it's hard to see how anyone could claim copyright violation on the part of the program which sends to the OS interface.

    Thats reverse engineering and that is copyright infringement if product original license agreement states that product is proprietary.

    Here interfacing is done directly to the propriety product whose interface is reverse engineered by an independent author.

  • You can't claim rights over the "best way" or direct way to do X.
    If the other author does it one way and it's the most convenient/straight-forward, I'm sorry, it's not like it and every implementation has to be GPL'd

  • duckeeyuckduckeeyuck Member
    edited April 2022

    @devp said: Thats reverse engineering and that is copyright infringement if product original license agreement states that product is proprietary.

    Here interfacing is done directly to the propriety product whose interface is reverse engineered by an independent author.

    This all sounds extremely amateurish or something you'd just here from the average joe on the internet.
    That is not how "reverse engineering" clauses work.

  • jsgjsg Member, Resident Benchmarker

    3

    Simple reason: What you took is not defined - or owned - by the other project but by said OS, Emulator, etc. Looking at the other projects code basically just was a more comfortable/easier way to do the research than to analyze the (supposedly not well documented) API of the OS and/or emulator.

    Btw, you're highly likely also not eager to see your work being tainted/poisoned by GPL.

  • HomieHomie Member

    (3)

    A. When Microsoft released the .NET Framework under the Microsoft Reference Source License (i.e. you can look at the source code, but you can't copy anything from it) back in 2008, tons of open-source developers looked at it, got inspiration and ported ideas from it. Did that break the GPL status on their code due to linking or copying non-GPL code? No.

    B. See Oracle vs. Google Supreme Court API case.

    Thanked by 1TimboJones
  • devpdevp Member
    edited April 2022

    @duckeeyuck said:

    @devp said: Thats reverse engineering and that is copyright infringement if product original license agreement states that product is proprietary.

    Here interfacing is done directly to the propriety product whose interface is reverse engineered by an independent author.

    This all sounds extremely amateurish or something you'd just here from the average joe on the internet.
    That is not how "reverse engineering" clauses work.

    Reverse Engineering is Engineering and Research to know about how a thing actually is build and functions.

    To build a thing out of that work and release a product for enterprise usage do have to confirm certain things to customers of product by author of the work.

    Reference Reading:

  • rm_rm_ IPv6 Advocate, Veteran
    edited April 2022

    @raindog308 said: I prefer GPL v2 because v3 essentially gives all control to the FSF

    Maybe have a chat with the cockroaches in your head first, ask them how exactly so. :smile:

    If you mean licensing at "GPL v2 only" vs "v2 or later", you can do the same with "v3 only".

    Thanked by 1BlaZe
  • @devp said: Reverse Engineering is Engineering and Research to know about how a thing actually is build and functions.
    To build a thing out of that work and release a product for enterprise usage do have to confirm certain things to customers of product by author of the work.

    that's how you know how they work? ok

  • HomieHomie Member
    edited April 2022

    Also, as far as I can tell, you have no plans on selling or charging for this tool, so fair use absolutely applies.

    If you read a book that described these control characters, and then used that knowledge to write your program, would you have to pay royalties to the author of the book? Absolutely not. The only difference is that you are getting the knowledge from source code rather than a book. But legally, the situations are identical.

    Disclaimer: I am not a lawyer, this is not legal advice, I am not responsible if you get your ass sued off, yadda, yadda, yadda.

  • hwthwt Member

    As far as I know, there's no copyright for knowledge. What the original author did wasn't patented, so per se, you're not infringing on anything by using his method of interfacing with the emulated OS. You're not using what he produced "as-is* nor in your code, so I would argue that technically, you're not bounded by the licensing agreement of his code.

    1. No obligation. It will come under patent rights if there is one.
  • HxxxHxxx Member

    If you didn't copied lines of code and is not even the same language.
    3

    Thanked by 1TimboJones
  • ~~> @raindog308 said:

    (1) I have an ethical obligation to license under the GPL because I'm borrowing constants and "how to" info from the other project's code and comments
    (2) I not only have an ethical but also legal obligation (i.e., the GPL compels it)
    (3) No obligation

    Legally it is simple, as you describe you have no obligation at all because you have a clean-room implementation.

    I would say that morally you have no obligation either, assuming the information you have used is not covered by a licence that prohibits your use. They chose that licence, or the default in the relevant jurisdictions if they have not stated an explicit licence and if they wanted stronger control of it they would have chosen a different licence. Clean-room implementations are built this way all the time by & between commercial/OSS/PD/mixed concerns.

    While you are similarly not obliged to (unless the information is covered by licence that carries such obligation, of course, such as CC*) I would give visible credit for their information that you used, and link to their project as a related work others might be interested in, and it sounds like you intend to do that anyway.

  • raindog308raindog308 Administrator, Veteran

    @rm_ said: If you mean licensing at "GPL v2 only" vs "v2 or later", you can do the same with "v3 only".

    Sorry, I meant "v2 only" as the Linux kernel did years ago. However, I think if I'm bound by the GPL, I'm bound by the whole thing chosen by the original author.

    i.e., let's imagine I'm formally forking a different v3 project. I don't think I can say "my fork is v3 only" if the original was v3.

  • rm_rm_ IPv6 Advocate, Veteran

    @raindog308 said: i.e., let's imagine I'm formally forking a different v3 project. I don't think I can say "my fork is v3 only" if the original was v3.

    If the original one was "v3 or later", you can still go "v3 only" with regard to your additions and changes.

  • @rm_ said:

    @raindog308 said: i.e., let's imagine I'm formally forking a different v3 project. I don't think I can say "my fork is v3 only" if the original was v3.

    If the original one was "v3 or later", you can still go "v3 only" with regard to your additions and changes.

    That is my understanding to. If a v4 turns up and their code remained "v3 or later" you could still use the code under the terms of v3 and keep your overall project under v3, but would have the option of using v4 for your code that you are linking to other v3+ covered code. They'd have to explicitly state "the latest version at time of use" or similar for updates to GPL to retroactively apply to you. Even if a project relicenses to the as yet non-existant GPLv4, you could keep using the previous versions that have already been released under v3/v3+ under the terms of v3. This is why commercial buyers of the rights to OSS software can not retroactively un-open the source of current and past releases.

  • 3

    Where's the patent lawyers? You patent the method, not the algorithm, right?

  • Ask yourself this question: "Would anyone building the same program with the same functionalities must use the exact same way of doing things? i.e. same interaction with the emulated OS to determine same info?"

    If yes then you should be in the clear. The other guy basically saved you time in this case and probably deserves you getting him a beer.

  • Yes

Sign In or Register to comment.