Programming Memes Thread
-
@dkf That scales up to "why would you use FOSS libraries", which is "because they're pretty goddamn abundant".
-
@pie_flavor said in Programming Memes Thread:
That scales up to "why would you use FOSS libraries", which is "because they're pretty goddamn abundant".
No, that doesn't. There's tools for doing the license audits; there's no excuse for screwing that sort of thing up.
-
@dkf what? I'm not saying you mistakenly use one, I'm saying you intentionally use one and have your program download it on first load. Thats what Minecraft does, for example.
-
-
@pie_flavor you seem unaware that there are other open source licenses besides GPL. Also, you seem unaware that aside writing your own classloader, you also have the option using wrapper script that sets up the right $CLASSPATH variable. Still awful, but a bit less awful.
-
@Gąska And now you have broken "write once, run everywhere". Or, alternatively, you have a separate launcher process which configures the main one as well as doing the downloading the libraries step. Still bonus deployment complication which doesn't need to exist. As for licensing, LGPL is the one that will give you the most grief here and coincidentally it's one of the most common ones.
-
@pie_flavor said in Programming Memes Thread:
Or, alternatively, you have a separate launcher process which configures the main one as well as doing the downloading the libraries step.
I haven't played Minecraft in a while but I thought this was exactly what it did.
-
@hungrier Well, that's for a separate reason (with even worse code involved).
-
-
@pie_flavor said in Programming Memes Thread:
@Gąska And now you have broken "write once, run everywhere".
Am I really breaking it if it never worked to start with?
-
@Gąska said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@Gąska And now you have broken "write once, run everywhere".
Am I really breaking it if it never worked to start with?
WOMM.
-
@pie_flavor said in Programming Memes Thread:
@Gąska said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@Gąska And now you have broken "write once, run everywhere".
Am I really breaking it if it never worked to start with?
WOMM.
Looks like you don't actually care about running everywhere.
-
@Gąska Write Once, Mumble Mumble
-
-
@pie_flavor said in Programming Memes Thread:
libraries are LGPL and need to be downloaded on-site and dynamically linked
Why would you have to download a library on demand just to dynamically link it?
As long as it's LGPL and not GPL, just throw them in there and be done.
-
@dkf ClassLoaders aren't that scary. And sometimes you have to touch them at least a little, anything sane that instantiates classes by name should also be accepting a classloader.
-
@pie_flavor said in Programming Memes Thread:
@dkf what? I'm not saying you mistakenly use one, I'm saying you intentionally use one and have your program download it on first load. Thats what Minecraft does, for example.
Huh, that's considered legally different at all? Seems the law sure is retarded on this point.
-
@topspin said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
libraries are LGPL and need to be downloaded on-site and dynamically linked
Why would you have to download a library on demand just to dynamically link it?
As long as it's LGPL and not GPL, just throw them in there and be done.Aren't there rules about distribution? Or was that how you'd deal with the full GPL? I don't remember my licenses like I used to.
-
@Gribnit said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@dkf what? I'm not saying you mistakenly use one, I'm saying you intentionally use one and have your program download it on first load. Thats what Minecraft does, for example.
Huh, that's considered legally different at all? Seems the law sure is retarded on this point.
No it's not. Copyright is about distribution. If your program downloads the library when the user runs it, then the user is downloading the library and the library writer is distributing it.
-
@pie_flavor Yon code would not work without the copyrighted work, though. The dependency remains just as present whether fulfilled at runtime or compile-time.
-
@pie_flavor said in Programming Memes Thread:
several different identical versions of a library can be loaded at once
What's a different identical version?
-
@The_Quiet_One said in Programming Memes Thread:
To those s I'd retort that node_modules billions of microlibraries interact with eachother on a quantum level which gives it such high density properties. I mean, any physicist would agree with me. just don't ask them for real
That density is simply inherited from the authors.
I seem to have lost that joke about how node's event horizon is its own loop. Call me back when you find it.
-
@Gribnit said in Programming Memes Thread:
ClassLoaders aren't that scary.
They are when there is a complex classloader forest about, and for some reason, just about everyone who does anything with them beyond the most absolutely basic “get the current one and ask it a few questions” ends up making a horror.
-
@LaoC said in Programming Memes Thread:
What's a different identical version?
Same code. Different origin on the filesystem (so far as the security code can tell; it doesn't bother with resolving whether hard links are really pointing to the same thing, and I'm OK With That). That's a recipe for deep !!fun!! with any module system in any language, unless that module system has other arguably-worse problems with cross-pollution of naming spaces.
Part of the problem is that it is extremely difficult to prove whether two pieces of code are the same, and the likelihood of it being a sensible test is low enough in practice that it isn't worth it, and the cheap-but-conservative option of using resolved origin paths works perfectly when dealing with actually-sane code.
-
@pie_flavor said in Programming Memes Thread:
@topspin said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
libraries are LGPL and need to be downloaded on-site and dynamically linked
Why would you have to download a library on demand just to dynamically link it?
As long as it's LGPL and not GPL, just throw them in there and be done.Aren't there rules about distribution? Or was that how you'd deal with the full GPL? I don't remember my licenses like I used to.
GPL means if you distribute you have to distribute your soruce code too. LGPL means you only have to distribute any changes you've made to the library (if any) as long as you link dynamically. Rationale being that with dynamic linking the user can replace the library with his own changed version, while he can't do that with static linking.
Regarding GPL, there was this age old discussion where RMS deemed even doing this (not bundling but letting the user download and link) to be in violation of the GPL, see here. In my personal non-lawyer opinion he's dead wrong about that, because your code only includes the API (cf. Google v Oracle) and could use a completely different implementation than the GPL'd one, but they thought different.
-
@dkf said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
ClassLoaders aren't that scary.
They are when there is a complex classloader forest about, and for some reason, just about everyone who does anything with them beyond the most absolutely basic “get the current one and ask it a few questions” ends up making a horror.
If the forest is the OSGi forest, they're still not that scary. If it's any other forest, sure, yes, run screaming.
-
Y'all should consider a new topic loader.
-
@Gribnit said in Programming Memes Thread:
If the forest is the OSGi forest, they're still not that scary. If it's any other forest, sure, yes, run screaming.
I used to maintain code that used a module loading system written in Java by someone who literally saw OSGi and thought “I can do that, but with more Maven and more runtime downloading!” It was truly nasty because it had a number of totally fatal flaws, the worst of which was that it always used exact version number binding of everything: if one was to update any component at all, either first-party or third-party, then every single downstream component would need its version number bumped in order to pick that up. And we had a big GUI application with very large numbers of JARs including lots of third-party ones and lots of security-sensitive code.
For bonus WTFs, it also had no tool capable of traversing the graph of components to tell you what needed to have its version bumped or what needed to be packaged for distribution. Yes. Users were supposed to be online at all times so it could download something it needed whenever it felt like it.
The last 18 months I was working on it, we were busy ripping that shit out and replacing it with real OSGi. Which was a lot of work (because of all the antipatterns that had to be squelched) but resulted in code that actually worked reliably. (Then I was moved to a different project.)
-
@Gribnit said in Programming Memes Thread:
@pie_flavor Yon code would not work without the copyrighted work, though. The dependency remains just as present whether fulfilled at runtime or compile-time.
But the dependency isn't part of copyright. You're not making sense (what's new?). The only exception is when the GPL license explicitly says you can't dynamically link it (although I've posted before how to circumvent that).
-
@pie_flavor said in Programming Memes Thread:
although I've posted before how to circumvent that
That's easy, you just don't read the license
-
@kazitor If bad code contributes to the stress-energy tensor, that gives an entirely new meaning to the technological singularity.
-
@pie_flavor said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
@pie_flavor Yon code would not work without the copyrighted work, though. The dependency remains just as present whether fulfilled at runtime or compile-time.
But the dependency isn't part of copyright. You're not making sense (what's new?). The only exception is when the GPL license explicitly says you can't dynamically link it (although I've posted before how to circumvent that).
Here's what I've said: That's legal? Not that it wasn't. And that it was retarded that it's legal, because they're dep'ing copyrighted work via a workaround, and the user's agency is a fiction. Think that pretty much makes sense. Reestablishing the legality and how the workaround works, does not make it not a workaround, nor make the dep less of a dep.
Did you know that you can make a pirate symbol out of your leftover Thanksgiving bones? Really you just need two femurs and a skull. If your turkey did not include a head, you can use a little RMS cutout head for a head.
-
@Gribnit said in Programming Memes Thread:
Here's what I've said: That's legal? Not that it wasn't. And that it was retarded that it's legal, because they're dep'ing copyrighted work via a workaround,
You do not depend on the software being written how it is; you depend on functionality. Copyright does not govern functionality. Patent does. You are inventing legal concepts out of thin air.
and the user's agency is a fiction.
If I point a drill at the wall and pull the trigger, it's not the drill manufacturer who's liable for the resulting hole.
-
@pie_flavor So the installer, it knows what library to get and where to get it and it gets it. The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
Again, what I'm doing is discussing whether the concept seems valid. Ought to be legal vs is legal. Also have you made your little pirate flag yet?
-
@Gribnit said in Programming Memes Thread:
The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
-
@pie_flavor that's... not the right fallacy.
-
@pie_flavor said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
How? Either the user has the agency to install the dependency or the installer has the agency to install the dependency.
-
@djls45 said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
How? Either the user has the agency to install the dependency or the installer has the agency to install the dependency.
The installer is a tool. Legally, it's under the same standards as a Rube Goldberg machine. Some people seem to have the curious notion that copyright affects anything other than what you actually received (the downloaded binaries for the installer).
-
@pie_flavor said in Programming Memes Thread:
@djls45 said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
How? Either the user has the agency to install the dependency or the installer has the agency to install the dependency.
The installer is a tool. Legally, it's under the same standards as a Rube Goldberg machine. Some people seem to have the curious notion that copyright affects anything other than what you actually received (the downloaded binaries for the installer).
So the user is the agent responsible for creating a copy of the copyrighted data by initiating the program which then initiates a download (a.k.a. copy) of the copyrighted library binary(-ies), which creation is a violation of the copyright if the use of those libraries is not licensed.
However, if the program the user downloaded directly depends on the copyrighted library(-ies), then the user may have a case for pushing the liability onto the program's author
- for not indicating that the program will include that (those) binary(-ies) (despite the fact that the downloaded program file(s) itself (themselves) don't include it – it will be downloaded for the program to function)
or - for not providing instructions for using an alternative and simply defaulting to the copyrighted one(s).
Is that what you're saying?
- for not indicating that the program will include that (those) binary(-ies) (despite the fact that the downloaded program file(s) itself (themselves) don't include it – it will be downloaded for the program to function)
-
@djls45 said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@djls45 said in Programming Memes Thread:
@pie_flavor said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
The user, do they choose to install the dep? Or does the installer just use their agency as a convenient fiction?
How? Either the user has the agency to install the dependency or the installer has the agency to install the dependency.
The installer is a tool. Legally, it's under the same standards as a Rube Goldberg machine. Some people seem to have the curious notion that copyright affects anything other than what you actually received (the downloaded binaries for the installer).
So the user is the agent responsible for creating a copy of the copyrighted data by initiating the program which then initiates a download (a.k.a. copy) of the copyrighted library binary(-ies), which creation is a violation of the copyright if the use of those libraries is not licensed.
However, if the program the user downloaded directly depends on the copyrighted library(-ies), then the user may have a case for pushing the liability onto the program's author
- for not indicating that the program will include that (those) binary(-ies) (despite the fact that the downloaded program file(s) itself (themselves) don't include it – it will be downloaded for the program to function)
or - for not providing instructions for using an alternative and simply defaulting to the copyrighted one(s).
Is that what you're saying?
Yes, I suppose so. Keep in mind, though, an actual instance of infringement must have been committed from the user's standpoint. If nothing the installer did would have been illegal for the user to do, then there is no liability. If the installer did anything that the user couldn't do, then the company could be held accountable for it.
- for not indicating that the program will include that (those) binary(-ies) (despite the fact that the downloaded program file(s) itself (themselves) don't include it – it will be downloaded for the program to function)
-
@Gribnit said in Programming Memes Thread:
Here's what I've said: That's legal? Not that it wasn't. And that it was retarded that it's legal, because they're dep'ing copyrighted work via a workaround, and the user's agency is a fiction. Think that pretty much makes sense. Reestablishing the legality and how the workaround works, does not make it not a workaround, nor make the dep less of a dep.
I'm confused what exactly you think the "breach of license" is that would be circumvented. There's an open source library that is free to download and use. A company wrote a program that uses that library, and their installer downloads the library as permitted by the license.
How the library is obtained in the user's machine is irrelevant. There are a number of reasons why a company might want to have the installer download dependencies instead of packaging them, but none of them are related to copyright or licensing.
-
@pie_flavor said in Programming Memes Thread:
. If the installer did anything that the user couldn't do,
Like, supplying a packaged library with the download of the dependent program?
-
@Tsaukpaetra what?
-
@dkf said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
If the forest is the OSGi forest, they're still not that scary. If it's any other forest, sure, yes, run screaming.
I used to maintain code that used a module loading system written in Java by someone who literally saw OSGi and thought “I can do that, but with more Maven and more runtime downloading!” It was truly nasty because it had a number of totally fatal flaws, the worst of which was that it always used exact version number binding of everything: if one was to update any component at all, either first-party or third-party, then every single downstream component would need its version number bumped in order to pick that up. And we had a big GUI application with very large numbers of JARs including lots of third-party ones and lots of security-sensitive code.
For bonus WTFs, it also had no tool capable of traversing the graph of components to tell you what needed to have its version bumped or what needed to be packaged for distribution. Yes. Users were supposed to be online at all times so it could download something it needed whenever it felt like it.
The last 18 months I was working on it, we were busy ripping that shit out and replacing it with real OSGi. Which was a lot of work (because of all the antipatterns that had to be squelched) but resulted in code that actually worked reliably. (Then I was moved to a different project.)
I'm honestly not sure whether you should be give an award or be sectioned.
I've being bitten by class loaders in Eclipse RCP before mostly because other people wouldn't leave well enough alone. Ended up junking the code after getting close to throwing a temper tantrum.
-
@Kian said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
Here's what I've said: That's legal? Not that it wasn't. And that it was retarded that it's legal, because they're dep'ing copyrighted work via a workaround, and the user's agency is a fiction. Think that pretty much makes sense. Reestablishing the legality and how the workaround works, does not make it not a workaround, nor make the dep less of a dep.
I'm confused what exactly you think the "breach of license" is that would be circumvented. There's an open source library that is free to download and use. A company wrote a program that uses that library, and their installer downloads the library as permitted by the license.
How the library is obtained in the user's machine is irrelevant. There are a number of reasons why a company might want to have the installer download dependencies instead of packaging them, but none of them are related to copyright or licensing.
I think the issue was if the license for the program and the license for the library were incompatible with each other, and the attempted workaround was to have the program download the library so the library wouldn't be "packaged" with the program and the user supposedly wouldn't be responsible for acquiring the library and its license either.
-
@dkf said in Programming Memes Thread:
@Gribnit said in Programming Memes Thread:
ClassLoaders aren't that scary.
They are when there is a complex classloader forest about, and for some reason, just about everyone who does anything with them beyond the most absolutely basic “get the current one and ask it a few questions” ends up making a horror.
I think my company's program uses a classloader (at least what it does sounds somewhat similar to the quick search and skim I did for "Java classloader"), and I like how we use it. The program is broken up into various modules that do different things, and the code for each module can be customized for each client's particular needs. The Java code is saved to the database (separate instance for each client), and when that module is needed, the system pulls the code from the DB, compiles it on the fly, and uses that for the implementation. If there is no custom code for a given module, the system does have default code that it will use instead. It also maintains a cache of the compiled code so that it doesn't have to recompile it on every use.
That makes it really easy to reconfigure the system for protocol updates and implement new protocols for new or existing clients.
-
@DogsB said in Programming Memes Thread:
I'm honestly not sure whether you should be give an award or be sectioned.
The author of that system ought to have been sectioned. (It was only part of the overall application suite; more sensible programmers wrote most of the rest.)
-
@djls45 said in Programming Memes Thread:
The Java code is saved to the database (separate instance for each client), and when that module is needed, the system pulls the code from the DB, compiles it on the fly, and uses that for the implementation.
Apart from the unusual origin of the code, that doesn't too weird. I know of someone who used runtime code weaving where the database held pieces of methods, not whole classes. But at least he admitted what he was doing was completely crazy, and he was using a more dynamic language than Java. (He was simulating mixing in classes to handle objects that could radically change their behaviour over time; it fitted his problem domain, and modelling that sort of thing in Java would be an over-engineered CatastropheStrategyBuilderFactory.)
-
-