Hi!

My previous/alt account is yetAnotherUser@feddit.de which will be abandoned soon.

  • 9 Posts
  • 1.61K Comments
Joined 2 years ago
cake
Cake day: June 1st, 2024

help-circle




  • It’s calling a function without a parameter.

    You know how in math you had something like:

    f(x) = x²

    Not all functions need parameters though. The function:

    f(x) = 2

    does not even use the provided x! So just leave it out:

    f() = 2

    Similarly, you could give a function two parameters:

    f(x, y) = x + y

    Programmers use functions to primarily organize their code. Otherwise it would get very unreadable very quickly. Those function are usually a bit more complicated than a single line, though.

    dog.walk() would call the walk() function of “dog”. Some valid code could be:

    dog.walk()
    wait(10)
    dog.stop()
    

    This code would make the dog walk for 10 seconds assuming every function used is actually defined somewhere.


  • Even though this isn’t C, but if we take from the C11 draft §6.8.5 point 6 (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf):

    An iteration statement whose controlling expression is not a constant expression, that performs no input/output operations, does not access volatile objects, and performs no synchronization or atomic operations in its body, controlling expression, or (in the case of a for statement) its expression-3, may be assumed by the implementation to terminate

    “new Random().nextInt()” might perform I/O though so it could still be defined behavior. Or the compiler does not assume this assumption.

    But an aggressive compiler could realize the loop would not terminate if x does not become 10 so x must be 10 because the loop can be assumed to terminate.








  • Oh, I didn’t consider the “any other” aspect.

    Welp, I can still register several distinct legal entities in different EU countries, can’t I? Maybe one could be a “Taking every EUPL work on the internet and relicensing it under LGPL as a service” company. That’s bound to make some money from SaaS companies if it would be this easy to purge the EUPL terms.

    Though the “ideology” quote is a bit awful, I’ll give you that. The matrix itself does look fairly neutral though, especially with this part under “Discussion of Linking”:

    We made the assumption that, by selecting a Gnu license, licensors follow the FSF position and want to consider that most cases of static linking create a derivative.

    I’d also argue the 27 legal systems might not be too relevant since copyright law is generally equal in the different member states. The remaining legal issues (e.g. warranty) are irrelevant for interoperabilith between licenses. Also, most importantly, there are only 24 languages in the EU.

    If the official guidelines are recognized by courts as legally binding then I think the EUPL is superior to even the AGPL. Sadly that remains to be seen due to the lack of EUPL projects out there (and the lack of corresponding lawsuits).




  • I am not an expert in copyright law, which is what these licenses are based upon and cannot analyze the text.

    Still, couldn’t you make it even more straightforward by forking twice yourself?

    1. Take the original EUPL code and fork it under the LGPL
    2. Take the LGPL code and fork it under the LGPL
    3. This second fork has all EUPL conditions removed

    I’d by surprised if the license authors did not consider this. Lawyers wrote this with consideration of EU law after all, not some laypeople.

    If I had to guess: Any inclusion of EUPL code in another project would have to be marked as being under the EUPL. This is solely to inform anyone who wants to fork this section and distribute the code in form of SaaS to abide by source code requests.

    It’s like an EU variant of the AGPL whose many conditions about linking apparently don’t hold up in EU court. The GPL’s are all primarily considering US copyright law after all.