9 ms·
Source code is not enough
- cxr 4y agoSee also other posts in this genre: Open source is not enough: <http://web.archive.org/web/20150828195814/http://adamspitz.com/avocado/2011/05/05/open-source-is-not-enough/ http://web.archive.org/web/20150828195814/http://adamspitz.c...> Free software is not enough: <https://jfred.dreamwidth.org/479.html https://jfred.dreamwidth.org/479.html> A related comment (2020 December 17; 19 points): <https://news.ycombinator.com/item?id=25458080 https://news.ycombinator.com/item?id=25458080>
- projektfu 4y agoInteresting, how image-based development can make a big difference in comprehensibility at the expense of more complicated sharing. One thing I like about Smalltalk is I don't have to wonder what the process is to get to a certain place in the code very often. There's a lot less scaffolding and construction code than with a typical start-from-main program. Little pieces can be tested directly to see how they work.
- fragmede 4y agoWith that license, does Aseprite qualify as capital-o Open Source software, or is it merely source available?
- rpdillon 4y agoIt is not OSI open source, since it doesn't allow unfettered distribution of original or modified sources.
- jraph 4y agoThe question for me is probably "not enough for what"? My requirement is user-respecting. Software should respect users, be useful to society, and should not (be designed to) cause harm (environmentally, psychologically, should respect user's privacy - and why this is important is its whole own discussion). Free software is (arguably) a requirement for being user-respecting. A necessary condition. Because it is theoretically necessary for users (or someone they ask - most people don't have the required time / knowledge) to be able to adapt or maintain pieces of software they rely on, if its original builders ever disappear, want to take another path or simply won't fulfills the user's need. Because the users should be able to inspect their software. But indeed not sufficient. You may need guidance to understand the code and build it (documentation) [1]. You need reproducible builds (so someone can check that the shipped version does what the code says, so users don't need to build the program themselves each time to be sure). And other requirements too: like the software should not manipulate the users to make them do things that they would not have done and cause harm, or skew society in some undesirable direction. Which can be subjective. For instance, Chromium is free software, probably documented quite well, but still serves a monopoly from an ad-supported company, which is arguably "not sufficiently" user-respecting and helps it to push the entire world to an economical model that relies on user-privacy issues, manipulation caused by ads, and control from a company bigger than countries and yet not democratic at all (assuming democracy is desirable). Software should be free. And more. How exactly? I don't really know. [1] Note that I also think we can't require documentation or any extra work from people contributing free software neither. They already make a gift to the world by releasing their free software, especially if they do it in their spare time.
- scarface74 4y agoI would think Chromium is just the opposite. If you have the resources and the knowledge, you can fork it and make it your own. I doubt Microsoft’s version has any Google dependencies. Also, if I recall correctly, MS has been able to get changes pushed upstream.
- zen21 4y agoIf you “have the resources and the knowledge” then you don’t even need the source code. You can build your own browser from scratch.
- scarface74 4y agoSo you think it takes the same amount of resources and knowledge to build a browser from scratch as it does to make modifications to an existing one?
- zen21 4y agoNo, that’s not what I said.
- scarface74 4y ago> If you “have the resources and the knowledge” then you don’t even need the source code Are you not equating the resources needed to create a browser with the resources required to modify one?
- zen21 4y agoNo. I didn’t equate those things. Edit: It’s not clear why you think I did.
- PeterisP 4y agoNot the parent poster, but likely because "If you “have the resources and the knowledge” then you don’t even need the source code. You can build your own browser from scratch." is true if and only if the resources required to modify the browser are equivalent to the resources required to build it from scratch - otherwise obviously most people who can do the former do not have the ability for the latter.
- robust-cactus 4y agoSo on one side we have folks saying we expect too much from OSS devs and we're burning them out. And then on the flip side in this post were saying they need to support a variety of compilers and endless hardware configurations. Personally, for OSS I subscribe to "no one owes me anything, I can always fork or submit a patch or use something else".
- ozim 4y agoMahmoud author of the blog post wanted to play around with a tool and found that he has to pay for something. Then he follows with a list of why compilation is not free and that is his argument why someone should do this for him for free instead of charging him $20. He also continues with some far fetched arguments that serve as support for his claim that someone should do what he wants.
- deleted 4y ago[deleted]
- doix 4y agoI have re-read the post many times and I don't quite get the point. The first example is not FOSS because of its license. There are loads of examples like that. I don't see how it relates to the complexity of build systems or how it affects freedoms. The obfuscation point is kind of interesting. I'm guessing a minified JavaScript file does not count as open source even if it is distributed with the correct license because it's been transformed by a machine. If you hand wrote some obfuscated JavaScript I'm guessing it's fine. You could argue the end result is the same, or how can you tell it's not hand written, and you'd be right. Then it goes on to talk about upstream and what not, but I don't get what the point is. Then the last paragraph talks about forcing software to be audited and enforcing regulation. To me, this is the epitome of anti-free software. Now you can no longer run whatever program you want and instead only what <someone>(your OS vendor? The government?) wants you to run.
- not2b 4y agoMinified JavaScript is OK if recipients can also receive the original JavaScript, just like it's ok to distribute executables if recipients can get the source code (this is for GPLed works).
- scarface74 4y agoI worked on a company sponsored open source project for a couple of years. We were a small team from different departments who kept it going as both a labor of love and because we used it for customer projects. I could make necessary changes for a customer, fork it, generalize it and then after discussions with the rest of the team, I could get my changes merged after the team came to a consensus. It was a relatively painless process. We could release any time we wanted to. Then as the project became more popular, 5 years into its life (about a year after I got involved), it became more official and transferred to another team. Then any change had to go through “the process” and any proposed change had to go through levels of approval. I still had commit rights and they didn’t take away my access. I found myself in the same position as the Haskell developers. Either I had to hard fork the code and have a customer specific implementation or go through “the process”. It wasn’t a fun skunkworks project anymore. Luckily, one of my last changes before the project got transitioned to another team was an officially supported extension framework where I could customize functionality without changing the base code - much like the VSCode example.
- acedTrex 4y agoI absolutely despise this post. As an open source dev, politely fuck off with your expectations of me. The source code is right there, MIT licensed, go do the work on your own to work with it. Its not obfuscated, it's the same stuff I work on every day. I'm not required to accommodate or cater to other people wanting to develop it.
- zen21 4y agoI don’t understand why people are reading some requirement for them to accommodate something into this post. He’s simply making the case that as things stand, open source doesn’t enable people to do much with the code if they aren’t part of the project itself. For the most part that seems true. Why is it such a problem for him to say it?
- Supermancho 4y ago> people are reading some requirement for them to accommodate something into this post. There is no other interpretation. "not enough" implies there should be MORE, which is a requirement. The requirement is never elucidated. This is a Mazouz gripe post for OSS issues that are not unknown, and provides no insight. > open source doesn’t enable people to do much with the code if they aren’t part of the project itself All code requires effort to utilize. Proposing that OSS should have some additional (hand-wave whatever you imagine) requirement lowers the effort to utilize it in some way and that result differs for each program. Imaging OSS code that simply does not compile. What more can you ask? Homogenization of code is a Sisyphean endeavor. The best we have to a uniform interface is source-code text.
- zen21 4y ago> There is no other interpretation. "not enough" implies there should be MORE, which is a requirement. The requirement is never elucidated. Yes it is. At the top of the article he says: > People will often claim that since X is Free and Open Source Software, every user of X is enabled to hack on it and bend it to their will. Which is basically the same goal as Alan Kay had for smalltalk systems. Why is it so controversial to say we haven’t reached this goal?
- kwhitefoot 4y agoI get the point, but credibility is dented a bit by making it about FOSS and then using an example that isn't FOSS licensed together with Arthur Whitney's b which doesn't even have a license.
- ghuntley 4y agoSee also https://ghuntley.com/fracture https://ghuntley.com/fracture which details how the source code of Visual Studio is available but it’s fundamentally useless by design as what people call Visual Studio (the product experience of the standard desktop edition) isn’t possible if you compile your own version. Yes, this includes VSCodium and the gap is getting worse as time goes on with the rollout of things such as GitHub copilot. Microsoft is locking down access to Top 6 LSP servers…
- cxr 4y agoVisual Studio is still closed source. VS Code is open source.
- ghuntley 4y agoBut it really isn’t. Sure the lower primitives are opensource but the value of what people call VSCode // the language servers and the market place. Yeah, they aren’t and you can’t use it if you compile from source. I detail this in the link above.
- JonChesterfield 4y agoBuilding software is often a massive pain in the ass. I don't think that's essential but it usually seems to be true. Occasionally a program is wholly in some interpreted language in which case it might run or you might have the same experience with dependencies. I believe guix and nix have largely solved that by writing build scripts for everything they're willing to bring into scope. Debian seems to be a mix of patching upstream source and build script changes. A few projects compile to C and ship that one program.c file - sqlite comes to mind - but editing that one source file may not be easy if it was built by a build system that did lots of surprising things. I'm mostly interested in llvm and we try to make it easy to build on a variety of systems, so it could totally be worse, but it's not easy either. And that's partly by DIY'ing a bunch of stuff that could be library dependencies. I've no idea what to do about this. It feels like a lot of engineering effort is lost to chasing build weirdness. Open to suggestions! p.s. I blame cmake for a lot of build complexity in the C++ world, and npm for whatever the hell is going on over in JavaScript. Random node projects from GitHub never run for me.
- Gigachad 4y agoThe root of most of these issues is the fact C/C++ has no package manager and central repo. If you want to build a fully Rust program, its trivial. As soon as it requires something C based you now have to track down the things it needs. And the build tools don't even know what is required. They just attempt to build and spit out some unintelligible error you have to search to find the stack overflow post telling you what package is needed and the 10 different names it has on different OSs. Thankfully the problem is getting better. Most languages now have a central package repo as well as killing off dynamic linking so the distro maintainers don't attempt packaging libraries.
- haburka 4y agoThis has a really terrible take where the author compares javascript obfuscation to source code complexity, suggesting that source code that’s as hard to read as obfuscated JS is unfree. This is a pretty flimsy point - so much that I doubt this article was written in good faith. Firstly obfuscated javascript is intentionally modified by a program. Secondly, does this mean that any source code that’s too complicated for the author is suddenly no longer FOSS? Code is often very complex for good and bad reasons but very rarely is it done just to prevent comprehension. If it’s not being done intentionally then I’m sure that as long as you’re skilled and taking the time, you can understand the code.
- deleted 4y ago[deleted]
- pessimizer 4y ago> If it’s not being done intentionally then I’m sure that as long as you’re skilled and taking the time, you can understand the code. This is true whether or not it has been done intentionally. Which is why it's not a "terrible take" but a completely trivial and obvious comparison. It can also take an enormous amount of skill and time to understand some code, and far less skill and time to understand other code, and this range is only partially related to what the code is trying to accomplish. You can even make an argument that intentionally obfuscated code can be Free (I would make that argument.) The OP is making a different argument that whatever you think of them, both intentionally obfuscated code and unintentionally obfuscated code are obfuscated code, which is not a big reach. I'd add to that argument and say, that even though whether software is Free or not is a binary (if it can be relicensed under the GPL, it's free), it's pretty obvious that some software is "Freer" than other software. As a metaphor, having legs and not having legs is pretty close to binary, but if what we're actually concerned about is walking, the quality of the legs you have irt walking can range from indistinguishable from a person with no legs to marathon runner. Thinking publicly about the value of particular standards is neither gatekeeping or entitlement.
- patrulek 4y agoAuthor of this post should develop something bigger by himself, then mantain it and after all of this succesfully completed complain about status of "free software".
- Qwertious 4y ago"People shouldn't complain about movies unless they've filmed a Hollywood blockbuster themselves."
- UncleEntity 4y ago> People will often claim that since X is Free and Open Source Software, every user of X is enabled to hack on it and bend it to their will. Does any one really say this? Every user has the potential to hack on it if they’re willing to put in the time and effort to getting up to speed with the codebase but the license doesn’t guarantee that right. In fact they generally provide it “as is” with no expressed or implied usefulness. So no mandatory security audits, no mandatory documentation, no onboard team to help the junior-woodchuck devs, nada. If it breaks you get to keep both pieces and if you manage to fix it you might be liable to share your changes with the rest of the world, depending on licensing and what you’re doing with it. Requirements which make the developers responsible for anything more than what they want to provide will just kill open source because they also have the freedom to not labor for free if they choose not to. If they have to get approval from The Commissar of Free Software before every upstream push, well, silly argument but it makes the point.
- zen21 4y agoMaybe nobody says that exact thing, but people do often say things like “if you don’t like it you can fork it”, as a way of shutting down discussions.
- worthless-trash 4y agoI had never thought that the "you can always fork it" as a way of shutting down discussion. I maintain forks that are frequently rebased on main/master with a few users. I have even suggested this as an action to people who wanted different features that I was not capable of maintaining.
- zen21 4y agoFor sure. And presumably those projects are ones in which maintaining a fork is practical. I have both forked and suggested forking. However for many projects ‘just fork it’ is not a good faith suggestion, so it can’t be a blanket answer that applies to all FOSS.
- jimjimjim 4y agoSeems sensible. Whenever i've had to do a code escrow with a corp customer, I've included the whole build system, documentation and enough to make it turnkey. For Open Source, it's like Open Car Parts.
- noobermin 4y agoAt some level all software will be too complex to understand easily within one sitting. That is just the nature of life. In my opinion, learning to read someone else's code is a sign of maturity, the ability to not just jump to churn or replace something just because you don't understand it is very mature. While I somewhat agree there are levels of obscufation, just because something is hard to understand on the first go isn't sufficient for something to be "non-free" in my interpretation, like the b interpreter.
- yjftsjthsd-h 4y ago> While I somewhat agree there are levels of obscufation, just because something is hard to understand on the first go isn't sufficient for something to be "non-free" in my interpretation, like the b interpreter. The GPLv2 contains this sentence: > The source code for a work means the preferred form of the work for making modifications to it. And I think that's really the fundamental question at hand. If the original author(s) actually write in a particular style (I guess the b interpreter is a case of this?) then it's ... kind of annoying IMO, but it isn't nonfree. On the other hand if the original authors wrote another representation and then intentionally obfuscated before publishing it, then that's clearly intentionally aimed at reducing the ability of others to exercise the 4 freedoms and that's a problem. And I do think there's some grey area in the middle; things like $BIG_COMPANY releasing the source code for something, but even if they have no intention of making it hard for others to work with that code it was written for their internal use and it's tied to internal build processes purely as a practical matter.
- not2b 4y agoYes, distributing modifications to GPLed code only in obfuscated form is a clear GPL violation. Distributing ugly and unmaintainable code because that's the only code you have is allowed (and sometimes that happens because the code works just well enough to get an academic paper published and isn't going to be polished any more than that).
- montag 4y agoEventually, we will rely on machines to help us understand software code. Think "fill in missing code comments with GPT-3." Now add 10 years of focused research to make this more reliable and intelligible. It must be inevitable, right?
- pessimizer 4y agoVery good post with a lot of detail, but very vague on the action that it's looking for except for a vague, ominous nod to "regulation." I think that instead of looking for a daddy to tell people what to do, the best thing is to come up with a reasonable standard for public projects. Projects that are not only Free by the letter of the law, but are actually designed to encourage and facilitate users in exercising those freedoms. And by "come up with," I mean compose them yourself and explain the reason for each goal that the standard is meant to solve, and how the rules within the standard address those goals. Like Stallman did. I think it'd be nothing but positive to have some gold standard eminently publicly-hackable and accessible Free software projects out there. After criteria are laid out, I'm sure a few will be discovered in the wild. Another couple of things about easy-to-build, well-laid-out, well-commented projects with few idiosyncrasies is that they're great to learn on, and often possible for experienced programmers to jump in and out of. Publicizing projects that want to prioritize those features, especially as models, could be consciously aimed at attracting the help to maintain those features.
- lmm 4y agoIMO this is what "source in the preferred form for making modifications" is all about. GNU themselves give the example that C source generated from a perl script isn't good enough - if the way you change the program yourself is by changing the perl script, then you need to release that perl script. I don't think it's reasonable to expect an open-source maintainer to create a better development experience for you than the one they use themselves. If you're not up to editing Whitney-style code in a text editor, you should get good. But conversely, just publishing a "source code dump", when you yourself work in a much richer development environment, is not good enough. If there's a "how to set up your dev environment" wiki page that you point other developers to, that should be part of your open-source release. IDE project definitions, project structure guides - whatever you use for making modifications to the project is what you need to publish. And if as a maintainer you don't make those steps documented and reproducible, well, that's ok, but in the long run you're only hurting yourself. In particular, e.g. RedHat's policy of publishing only the "final" source code for their patched kernels, and not the git repo with history (which is what they use when developing it internally) is a straight-up GPL violation as far as I'm concerned.
- zen21 4y ago> I don't think it's reasonable to expect an open-source maintainer to create a better development experience for you than the one they use themselves. This is clearly true. I didn’t read him as demanding that. I think his point is that the fact that something is FOSS doesn’t alone imply that anyone else can actually do anything with it, so people should either not make that claim, or acknowledge what else is needed.
- worthless-trash 4y ago> is a straight-up GPL violation as far as I'm concerned. How ? Are these repos insufficient ? https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-8 https://gitlab.com/redhat/centos-stream/src/kernel/centos-st... https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9 https://gitlab.com/redhat/centos-stream/src/kernel/centos-st...
- lmm 4y ago
- contingencies 4y agoHACKING.md
- deleted 4y ago[deleted]
- laurentlb 4y ago> VS Code is open-source software. Nobody cares. As a matter of fact, I have sent multiple pull requests to VS Code recently. I have found the codebase to be relatively accessible (despite the size). Even if few(?) individuals care about it, it can make a difference for companies. Both Google and Facebook are using VS Code internally (and they wouldn't if it wasn't open-source).
- PartiallyTyped 4y agoSame for some other companies in the 5 letter acronym.
- pabs3 4y agoI noticed that VS Code has a CLA. I wonder why the MIT license isn't enough for Microsoft.
- yarg 4y agoAre there any FOSS licenses that cover build and deployment? The ability to deploy - especially on user owned devices, seems underconsidered to me. Then again, given the number of non-compliant routers in the world, it probably wouldn't make much of a difference.
- jmclnx 4y ago> Where is the Heckin' Manual? ... > A truly free program would be independently audited Sound like he saying Linux should be a bit more like OpenBSD :) But OpenBSD, I think, audit their own code due to resource constraints.
- Mikeb85 4y agoTons of people try to come up with more "meaning" behind open source, maybe they're bored and are trying to find a new religion or something. Open source has always just been about the license... If you use OSS and distribute it, you make your changes available. That's it. There is no higher meaning. If people want to do more that's on them, if they don't, that's ok.
- diffeomorphism 4y agoThat is a weird perspective. Free software has always been about freedom and licensing just as a technical aspect. At some point open source rebranded this and put more emphasis on the advantages this gives you as a company as opposed to as a user (which free software highlighted). So, legally speaking it is just about the license, but humans exist and have opinions. For instance people like projects to be developed in the open and not android's throw over the wall. That doesn't make it not open source, but you have people complaining that it is not "proper open source". > If they don't that is okay. Legally yes, in practice people grumble and won't contribute.
- Mikeb85 4y ago> Legally yes, in practice people grumble and won't contribute. Let's be real, that happens no matter what (both the grumbling and not-contributing). People bitch about literally every open source project I can think of... Linux (Linus is too mean), Systemd (not Unix-y enough), Gnome (too pretty and not enough features like KDE), KDE (too many features and not pretty), anything RH/IBM/Amazon/Google/Oracle/Apple/MS sponsors, etc... I honestly can't think of a single open source project that people don't bitch about so yes, I don't really care about their opinions. Open source is what it is and you use it or don't.
- alexchantavy 4y agoI get where the author is coming from but I think they are conflating quality aspects of an OSS project (readability, maintainability, whether or not it builds on your machine) with aspects that make it Free Software or not. You should evaluate projects for quality, but projects with low quality aren't any less Free -- you can do what you wish with them at your own risk with no warranty.