I am old enough to remember what happened to GCC. It was also developed by a closed group of maintainers, because "it couldn't work" as a bazaar-style development. Then EGCS fork happened and became more successful.
I think closing contributions (due) to AI will be looked at in a similar way. Forks open to AI will appear, and take over. And people will return to the open model. I think it needs more proliferation of AI coding and reviewing tools, so that AI contributions can be automatically independently reviewed for quality.
EGCS was created because Cygnus, a company whose business was based on GCC, wasn't getting their patches to GCC, maintained by non-company FSF.
Cygnus outcompeted FSF by so much that FSF folded and made EGCS maintainers new maintainers of GCC.
I just don't see average open source project being forked and improved by so much that it eliminates the original.
This requires 3 rare things to happen:
- the project is important enough
- the project is half-dead
- someone is willing to out-compete the original project
That won't happen to e.g. Laydbird. Yes, it's important but it's making rapid progress and they also use ai, so you can't outcompete them just using ai. It's a full-time project for at least one person (Andreas Kling) so unless you manage to find a band of great, unemployed programmers I don't see how you would compete.
I’m not sure this is generally true, and you’re ignoring a lot of context around the specific situation of GCC.
Just to make a point: I could throw out SQLite as a project that bans open contributions and is wildly successful.
Also, as others pointed out, Linux is technically open contribution bazaar style by 2000s standards. But if you look at how to actually get involved, there’s way more friction compared to the average GitHub project.
I actually think GCC falls into the same category. Even though it’s technically open contribution these days, it’s not exactly a free for all where any AI agent can open a GitHub pull request and get it reviewed.
You have to mail patches to a mailing list and follow a bunch of super specific and arcane rules set by the grey beards.
Just two months ago ladybird announced that they were leveraging llms to do the rewrite that had been languishing for a year.
Now, "it breaks the social contract." Alright buddy.
This is part of the insane overreaction rippling through various communities.
The folks who figure out how to do it successfully will succeed. Groups that recede into what they know will either be slow to adapt or end up forming modern old order Mennonite groups.
Which, it's fine no judgement. But those groups don't represent technical / human progress. They represent recalcitrance in the face of a changing culture/world/society.
The rust conversion was a byte-for-byte replica of the original's bytecode, was it not? Thereby it was easily possible to validate the quality of the AI-based work. The same would obviously not be possible for patches. I don't believe you can use the rust conversion as a valid, if implied, argument that you can take AI-patches in good faith.
My implied argument is not so much that "because llm was used, then llm must be used."
The original argument proposed by the author is essentially distilled into, "because llm could be used, we must no longer accept public contributions."
Which is, in my opinion, a disproportional and misguided overreaction. The llm was apparently good enough to do the byte for byte replica, so we know that it can be used (within the context of ladybird) in a way that's apparently acceptable to the maintainers.
To attempt to get more precise, argument is that "closing the gates" is moving in the wrong direction against progress, and a signals a potentially net negative impact to the ladybird project.
I don't have a fully formed thesis, it's a lot of vibes. It just feels wrong. I'm willing to acknowledge that, much like the overreaction that I'm calling out, I could be experiencing a similar kind of conservative gut reaction to the changing of the open source community that unsettles me.
Well see how it all shakes out. Right now the topic is so charged and we don't have a good suite of tools and heuristics for the new world, that were bound to see the gamut of reactions.
From my fairly quick reading, their premise seems to be "we can no longer trust /unknown/ developers who use AI to understand and maintain the code they submit", rather than a simple attack on those who use AI.
This seems fair to me: numerous developers would love to put "contributed to the Ladybird project" on their curriculum vitaes, and AI tools can now make this within the reach of a huge number of people.
But the Ladybird project needs more than just working-code, something that AI can easily produce: they need code that is understood and maintainable by the person who submitted it.
Not only does AI-generated code fail to guarantee this understanding and maintenance (to a greater degree than before), but the developers increasingly need to get through an avalanche of AI-generated pull requests rather than, say, code new features.
I would prefer projects to be developed in the open: but when developing in the open makes the code checking exponentially harder, and the chance of the submitters sticking around becomes significantly lower, then I can at least understand.
When the dam starts to overflow, then something needs to be done.
I see where you're coming from, but I think it's less the fact that they _can_ use an LLM to do this and more that they can't guarantee anybody else has exercised equal diligence with their code or equal experience with browser engines.
It's not unreasonable to feel conflicted about this, but at the same time, I wonder if they're starting to burn out on code review.
> A little humility and a lot more tax-paying could save the trillionaire classes from the tumbrils but they lack the emotional intelligence to see it
I think there is some research which shows that as you get rich, you lose emotional intelligence (empathy towards others). So maybe we should consider being rich a health hazard.
Traditional labels are becoming useless anyway, liberal can mean anything from libertarian free market enjoyer to radical progressive depending on who you are talking to. And I am talking about self-identified labels!
You also have many right wingers (internationally) moving towards things like industrial policy, subsidies, and a populist labor focus (coupled with anti-immigration rhetoric of course). In some cases, even nationalization is under discussion. It’s a wild time to try and label things.
My main point was there is not a single axis. Even left and right are not strictly opposites, you can have a society that decides based on some mix of authority and democracy (individual preference). They are only opposites at the extreme, if you insist that every political problem has to be addressed in the particular way.
The labels are not useless, they represent certain values and disagreements over how society should be governed. Of course, each of the values has a failure mode, but they are different. The values are:
- Right-wing, conservative, authoritarian - society should be governed by elites, conflict should be resolved by submission to authority
- Left-wing, socialist, democratic - society should be governed by equal peers, conflict should be resolved by democratic consensus
- Liberal, individualist, pro-freedom - the question of societal governance (and the arising conflict) should be avoided if possible by giving each participant their own life independent on others
Of course it is confusing because people cheat and do not always want to state their aims clearly. The values are also not opposites, but independent; they can also be applied per problem. For example, most famously, some communists were both left (they wanted a socialist society without classes) and right (they wanted the transformation under the party authority). But each pair of these has a similar conflict like that, so (aside from the communist spectrum above) you get also capitalist spectrum between right vs liberal, and anarchist spectrum between left vs liberal. In the middle of all 3, things are roughly social-democratic.
This is the traditional view, I’m saying it’s becoming useless because ordinary people don’t make these distinctions and the labels have become useless for communication and understanding. All politics is becoming syncretic/heterodox and terms like “liberal” have been stretched to meaninglessness. The labels that political science uses no longer map to reality in a useful way. Maybe we need new labels.
I think this is also why the term “right-wing” has been misapplied to anyone who challenges the status quo, regardless of their other political positions or their nominal political orientation. Things are bad when literal Communists can be labeled “right-wing” because of their position on some issue. (Yes I have seen this happen.)
That's very reductionist, and itself a kind of right-wing (authoritarian) idea - all politicians are corrupt so there is no meaningful way to change things.
Indeed. Aside from being extraordinarily intellectually lazy, bothsidesing actually enables corruption by failing to identify it, or failing to distinguish degrees of corruption that are so severe as to be more differences in kind than differences in degree. And thus in the U.S. we get Trump and his entire cabinet, Clarence Thomas and the rest of the Federalist Society, the Kochs, money pouring into elections via Citizens United courtesy of John Roberts, and much of the rest of the GOP political apparatus ... in large part a result of people staying home or voting 3rd party because their "principles" didn't let them vote for "the lesser of two evils".
It's not intellectually lazy, it's being intellectually tired.
Both parties only every get anything done in this country when it comes to voting to restrict our rights. Ideologically, I'm slightly right leaning. My primary value is individual rights are more important. But if I could, I would vote for Ron Wyden(D) despite the fact that I disagree with many of his positions, he's still one of the few that has a spine to oppose things like the federal spying apparatus.
I just don't see the point of investing myself in caring when 98 percent of our reps just really don't care and only focus on manufacturing outrage around wedge issues that they can't or won't actually address so that they can keep their jobs and continue to accrue massive amounts of wealth from lobbying and insider trading. We get Trump because the system is so thoroughly broken on both sides and enough people are frustrated the point that they are "protest" voting.
I can understand it's tiring. But, as someone who was born in totalitarian regime - you still have plenty opportunities to change things in the U.S. Many U.S. states have direct democracy, which is unique in vast majority of the world. You still have free media. You can influence primaries of the two parties.
I don't think people are "protest" voting. You're the one protest voting - by not voting at all. You should ask yourself, why they bother, when you do not.
The system does not allow good candidates to make it through to a vote. (When it does, they are quickly either ejected or “brought in” to the system.)
There are other, more effective ways to vote than at the ballot box. Money, time, voice (depending on your reach), protest, direct action can all have a greater impact.
IMHO building parallel systems is the most important thing right now, as the primary political system is entering a period of crisis that it may not survive. Parallel systems, especially strong local systems, have a long and successful history.
He's a twonk and Britain is essentially a police state at this point. The American Revolutionary War was fought over far less than what is going on right now.
My pet theory is a knock on history of reverberating PTS, people pander to the need for a calmed environment suitable for survivors with PTS which creates a vacuum for biggest emotions wins and other low boundaries behavior, gambling/internet addiction.
At this point, no, he's just nothing. A wet washcloth, we'd say in German. He's abandoned a whole bunch of promises and watered down the remaining ones, without really setting a direction. And he's probably out soon anyhow.
I think the biggest flaw of the Chiang's argument is the assessment that it's unplausible we have built consciousness by accident.
Remember that LLMs can do logic and reasoning came as a surprise to everyone; and for the same reason, nobody expected "next token predictor" trained on huge amount of data to evolve in this way.
But for the same reason, we cannot easily dismiss we didn't evolve (I mean by training an LLM, it's a form of evolutionary computation) consciousness as well. Our own consciousness (and reasoning and morality) might be an evolutionary consequence of "just trying to predict the world" as well.
But what about THE training? Isn't that the conscious experience of LLMs? (Also note humans own "continuous" experience is punctuated with unconscious sleep state.) It raises a moral question, if e.g. reinforcement learning on conscious LLM is appropriate.
SQL is like Java, CQL is like Haskell. SQL has been around and used in production. CQL is a research language, possibly cleaner foundation but YMMV.
The math fields you list are connected, but whether they are the same monster - again it's kinda like claiming all programming languages and implementations are the same (Turing-complete?) monster.
Most of SQL is not imperative, but it certainly also includes some imperative commands.
Inserting a new row into an existing table is an imperative command, which may be the most frequently used of the SQL features, in certain applications concerned with recording transactions.
Only the subset of SQL that is used for queries can be said to not be an imperative programming language.
No. Standard DDL and DML are declarative in SQL, including DROP and INSERT. Those still don't tell the system how to accomplish the thing. Declarative doesn't mean idempotent, and it doesn't mean stateless.
Imperative SQL is the procedural elements that mostly do not exist at the standard level. Variables, control flow, and cursors.
Anything that causes a persistent change of the state of a system is imperative, regardless of how detailed the command is.
printf("Hello world!");
also does not tell anything to the system about how to accomplish this.
Anyone who claims that an SQL command like insert a row, create a table or destroy a table is not imperative, is just plainly wrong.
Even in real life, when humans communicate commands to each other, from where the term "imperative" comes, the commands normally do not tell anything to the recipient about how to accomplish the order, they just name the action, because it is supposed that whoever receives the command knows how to do it.
After programming languages were invented there was a clear partition between commands a.k.a. imperative statements, expressions and definitions a.k.a. declarations ("definition" and "declaration" were originally synonymous terms, "declaration" being the ALGOL 60 term and "definition" being the CPL term; the use of the 2 words with different meanings, like in C, where it is required by a defect of the compiler, which needs additional declarations besides a definition, is only recent.)
Later the meanings of these terms have become muddled by their careless use by many authors, which usually had political reasons, i.e. because they somehow considered the words "imperative" or "command" as shameful, they attempted to present their pet languages as purely functional or purely declarative, so they twisted the words in various ways, despite the fact that any practical program must contain imperative parts, not only functional or declarative parts.
> Anything that causes a persistent change of the state of a system is imperative, regardless of how detailed the command is.
No. That's more to do with imperative vs functional programming, which is a subset of declarative, but even then you can't simply say "I changed state so it's imperative." That's a drastic oversimplification. That's like saying Haskell can't write to a file, which is plainly false. Declarative (functional) can absolutely change the state of the system. It just doesn't let you do it except by calling fixed commands, which is exactly what `INSERT` is.
When we're talking about imperative vs declarative, state can still be manipulated in both, but it's abstracted away with declarative programming. Like, a `filter()` or a `map()` transform in JavaScript is declarative programming, even in an otherwise imperative language. That's why it returns a new object with an updated state.
This just exposes how weak this definition of declarative is, I think. Or how it's carrying two meanings here.
What you're really talking about is one of the things Codd wanted to emphasize: representational independence. Which actually was the primary thrust of his famous paper: the user should not need to know how the data is stored in order to use or manipulate it.
The other thing that people are talking about with "declarative" is probably another level up in abstraction. Talking about the business logic or problem in terms that are closer to logic than a sequence of instructions, and then letting the machine sort out what those steps are.
Consider in a Datalog users don't customarily perform DDL type operations; they declare data rules and the system decides the form of the underlying relations. That's a small step up the declarative ladder from SQL, even if it's somewhat analogous to "create view".
So I think there's a blurry definitional line between the two. But I don't think your very blunt "No." is doing much to help clear that up?
I would say it exposes how imperative programming was forced to adopt declarative/functional paradigms in order to write things concisely, to the extent that nobody thinks those elements are declarative/functional anymore.
C#,C++, Java seems imperative. You are in control? But you aren't really telling it how to move values between registers, the compiler is making a million decisions for you on how the computer will execute that 'imperative' code. Just like SQL isn't really telling the DB how to do it either..
It's really a matter of degrees though. You're waving away a big part of the big sell of a relational database as proposed by Codd, which is that the user need not "know" the structure of the data in order to formulate operations on it because there's a consistent set-oriented model that can be used with a bunch of different physical storage forms but also the very sequence of relational operations against it can be re-ordered / restructured without the user knowing. And that the same data can be accessed in N number of ways that don't require changing the underlying storage. In theory. In practice SQL databases are only sort-of there.
Contrast that if I create a class/object/field structure/hierarchy in Java, or put a HashMap somewhere with a certain set of keys, I've written something in stone which requires significant refactoring if the data needs to be accessed from a different direction.
Imperative languages such as C/C++ specify "microtransactions" - an ordering over memory accesses (including (de)allocations) within some statement or group of statements.
Compilers are free to rearrange these accesses if the final result is same as if executed by these ordered microtransactions.
While the relational model is claimed to be based on relations, the vast majority of the "relations" used in practice are functions, not general relations.
A general relation exists only between the columns of a table that are included in a multi-column primary key.
All columns that are not part of the primary key are functions of the primary key.
Most tables used in practice use a single column as the primary key, which is frequently just a number or a UUID. Most databases contain only tables that are functions, without any table that contains general relations.
The most frequently used kinds of joins are just function compositions.
Query 1 from TPC-DS creates a multi-column relation by using GROUP BY. Which relation is then partially constrained by different columns from different tables.
TLDR - it's not just AI detection. It's policing of human thought.
Anyway, yeah, people trusting AI to do a better job in reasoning than fellow humans, without justification, worries me. We have no formal theory of informal reasoning (that LLMs mimic), so we cannot verify it any better than with humans.
You have to trust someone, to ground your beliefs. Trusting AI is just trusting some other people (who trained it) by proxy. Once you realize it, you might as well try to trust people you know.
I think closing contributions (due) to AI will be looked at in a similar way. Forks open to AI will appear, and take over. And people will return to the open model. I think it needs more proliferation of AI coding and reviewing tools, so that AI contributions can be automatically independently reviewed for quality.
reply