• 0 Posts
  • 11 Comments
Joined 2 years ago
cake
Cake day: June 13th, 2023

help-circle


  • One other thing you may have to do if you have contributors who have also committed code is to get their permission to change the license as well, as the code they committed may still be under their copyright and not yours, and they can choose to allow their code to be relicensed or not. Some projects use a contributor release to reassign copyright for contributions for reasons like this, for instance. This is partly the reason why the Linux kernel has never changed to GPLv3 and still uses GPLv2 (and also because Linus just doesn’t like some provisions of the GPLv3) — it would be pretty much impossible to get everyone who contributed code to a project as large as the kernel to agree to a license change. Any code that couldn’t be changed would need to be extracted and rewritten, and that’s not going to happen given the sheer size of the code base.

    If you don’t have other contributors then you’re home free. You can’t retroactively change licenses to existing copies of the code that have been distributed, but you can change it going forward.






  • The code in the image is C or C++ or similar. In those languages and languages derived from them, curly braces are optional but the parentheses are required. It should be the other way around to avoid logic errors like this:

    if (some expression)
      doSomething()
    else if (some other expression)
      printf(“some debugging code that’s only here temporarily”);
      doSomethingElse();
    

    Based on the indentation you’d think that doSomethingElse was only meant to run if the else if condition was true, but because of the lack of braces and the printf it actually happens regardless of either of the if conditions. This can sometimes lead to logic errors and it doesn’t hold up to a principle of durability under edit — that is, inserting some code into the if statement changes the outcome entirely because it changes the code path entirely, so the code is in a sense fragile to edits. If the curly braces were required instead of optional, this wouldn’t happen.

    I have all of my linters set up to flag a lack of curly braces in these languages as an error because of this. It’s a topic that sometimes causes some debate, ‘cause some people will vociferously defend their right to not have the braces there for one liners and more compact code, but I have found that in general having them be required consistently has led to fewer issues than having arguments about their absence, but to each their own. I know many big projects that have the opposite stance or have other guidelines, but I just make ‘em required on my own projects or projects that I’m in charge of and be done with it.



  • Linus wrote git to be used via email as part of its core design, so that was just the way he rolled back then. GitHub and Gitlab and all the cloud platforms and tooling came afterwards and it took time to reach a critical mass, and even then, some folks stick to what they’re used to.

    Looking at Linus’ GitHub profile, looks like not much has changed — 100% commits, 0% everything else.