5 ms·
We have been building complex software before and we continue to do so. The question is where is this mythical codebase 10 times more complex then the Linux ker
by mikojan 2mo ago
We have been building complex software before and we continue to do so. The question is where is this mythical codebase 10 times more complex then the Linux kernel that we were previously unable to produce? Or let it just be complex software. Where is it? What are the names?
- jdw64 2mo agoI think this is a complex issue. If there were a need for a new open-source OS to replace Linux, it would be used then. Once infrastructure becomes entrenched, the cost of dismantling or replacing it becomes enormous. So you might argue: 'If AI is so great, shouldn't it be able to directly modify Linux's millions of lines of code right now?' My answer is different: 'Why break something that already works? It only makes sense to change it when a problem actually arises.' The example of Bun, originally written in Zig and later ported to Rust, illustrates this. Zig is a relatively new language, but whether for political reasons or not, Bun was eventually ported to Rust. And after the rewrite, Bun still works just fine. And rewriting infrastructure from scratch is fundamentally a cost issue. I can handle up to 60,000 lines of code on my own. With AI, I can handle up to around 200,000 lines. But building new infrastructure from scratch is an entirely different matter. Why would you replace something that already works with AI? That's a separate question. If the current OS were no longer viable and a new one were needed, then the situation would be different. In other words, I don't think your argument is wrong—I just don't think there's enough motivation for it. In that sense, codebases that heavily use AI are already appearing in abundance. There were issues with Open CLAW, but it was purely AI-written and still boasted a huge number of active users, right? Same goes for Codex. So my conclusion is this: AI is currently being used in layers above the infrastructure. But if a new infrastructure needs to be built, that's when AI will come into play. In other words, it's a matter of motivation. Using AI for coding doesn't eliminate maintenance costs. And to be extreme, both maintenance and generation now require spending 'tokens'—you're paying money instead of the developer's time. We need to think about that cost. In other words, there's no reason to break something that's already working. I'd summarize it as: there's no reason to reinvent the wheel.
- jdw64 2mo agoThe real problem is that we forget that there was a lot of bad code in the early days. When I studied books from 10 to 15 years ago, the patterns that were considered 'common practice' back then would be considered low-quality code today. Our threshold has risen. People tend to forget the rings of experience embedded in community codebases and only look at the final results. And they always claim that only the best results represent their community. But the 'bad results' were also produced by the same community. From that perspective, I think the floor has risen significantly. You might disagree. People with name recognition in open source usually only see the 'best' code. But I mostly see the 'worst' code. This is an issue of accessibility depending on your environment. I work for $15 an hour, as a freelancer doing subcontracting work in Korea, so I mostly see the worst of the worst. In that context, AI code quality feels like a huge improvement. Because in closed source codebases, there's plenty of low quality code. In contrast, open source projects tend to curate only the best code, driven by visibility and reputation. I think that difference is significant. You might not agree with me. And that's fine. We all have our own value systems. I don't agree with you, and you probably don't agree with me. That's a natural consequence of us being different people. But here's what I think: I respect you, but our views can differ. I think your point is valid in certain contexts, but I stand by mine.
- pmg101 2mo agoCan you give an example of a pattern that was considered common practice in a book 10 to 15 years ago that would be considered low-quality code today? My experience is pretty much the reverse: that we seem to just go round and round relearning the lessons that had already been learned in the past.
- ModernMech 2mo agoI feel like the industry has learned a lot of good lessons from functional programming, and that has been reflected by functional features being baked into almost every popular imperative language.
- jdw64 2mo agoRight, there were examples like Singleton and baseController. We moved from ambient/global dependency access to explicit constructor injection and Composition Root, didn't we? Application entry points use Composition Root now, but old general programming books didn't. Errors were handled differently too. In the past, you'd throw new Exception() and wrap it in try/catch at a higher level, but these days we use Result<T, E> type modeling. Of course, C# still uses try/catch, but the guidance in .NET has long been to return predictable failures as type contracts. Old .NET documentation used to encourage global access to common features and dependencies. Now it's shifted toward composition at the entry point. Node.js used to use nested error-first callbacks as a standard pattern, but that's no longer the case, right? It moved to promise/async-await, and these days, as you know, type-based modeling is trending. C# books also used to return null if something was missing, but now we use nullable reference types to express nullability more explicitly. Even inheritance—these days it's often advised to avoid inheritance, but it used to be very common. Just off the top of my head, I can think of quite a few examples. Record keywords and immutability features started appearing about 10 years ago, and Java has started adopting them too. These are all outdated patterns now, with clearly defined use cases. More precisely, the contexts in which they should be used have become much more granular. I could probably give about 30 more examples of this.