I am delighted to be able to share my new Elm compiler project with you today.
…
I am delighted to be able to share my new Elm compiler project with you today.
…
Dude. Do your thing, but don’t plagiarize my design and my roadmap!
Take that page down please. Should have been enough when I said that back in February.
If such “strong engineering” went into this, how come the “dialect” magically retroactively became “bytecode” and it all become a “runtime” only on June 3? Wonder what happened on June 2? "🤔"
From: Rupert Smith
Date: Wed, 3 Jun 2026 14:26:26 +0100
Subject: [PATCH] Correcting links to github repo, removing discord server
link, updated roadmap to correct state.
...
diff --git a/content/roadmap.md b/content/roadmap.md
index 0d1e62c..9f684da 100644
-- [x] MLIR 'eco' dialect established, compilation via LLVM to x86 binaries.
+- [x] eco bytecode dialect established, compilation via LLVM to x86 binaries.
...
- "https://github.com/eco-lang/eco"
+ "https://github.com/eco-lang/eco-runtime"
Blows my mind you have no shame doing it like this publicly. Really makes milestone 1.1.0 more convincing.
At least people now know why I’m keeping everything closed until release.
I offered to take the page down back in February and sent you a very polite message of explanation, since we had a misunderstanding. You did not even reply, despite me following up on it at a later time ?
The only thing my design has in common is that it uses a circle, and last time I checked, you do not own a patent on circles. And a roadmap ? A lot of projects have roadmaps, are you telling me I am not allowed a roadmap ?
MLIR.. is a bytecode. Astonishing but true! There is a even a JIT to run the bytecode that ships with LLVM.
So forget it, the page design stays. As I say, eco is an entirely separate project to what you are doing. That should really be a positive for Elm, since there can be some competition to spur on growing what is possible.
I wish you luck with elm-run.
When I replied here, I did not do it in haste: the last time I simply insta-quit a community of four-hundred that didn’t recognize plagiarism for what it is. I don’t blame anyone: many never experienced such a situation before. Yet, not sanctioning that behavior back then only encouraged its brazen public continuation.
This time I’m speaking up, especially to the younger colleagues here, those that might not have experienced this kind behavior before and are unsure of their moral stance on the matter.
Our profession trades in ideas. That’s the core of what we do. No offense is deeper than stealing another’s idea and presenting it as one’s own.
We savor the process of coming up with ideas, their presentation, their application… we enjoy the debate, the enriching process as thoughts are verbalized. But we respect and admire each other’s ideas. A plagiarizer trivializes the original ideas and work: it’s usually a quick, shoddy copy. It’s debasing and offensive to the original author.
To be clear, at issue here is a copy of the design, styles, content of the roadmap, and now the product positioning as I pointed out in the first message. This first happened back in February, with outright copy of the roadmap sans 0.5.0-0.9.0, accompanied by “My project is in many ways more sophisticated than Damir’s.” I agonized over that roadmap for weeks! I take pride in the result. It’s outright offensive to see it plagiarized and mutilated like that. The rest is not important: a quick skim through the repo shows and attempt at ripping things from Roc language, but I didn’t really spend time beyond that, as it’s not important at all to me.
Presumably the goal here is grabbing attention by association (“What a coincidence, I planned enterprise support for 1.1.0! Our roadmaps are so similar, we’re competing!” “It’s positive for the community to have two of us in healthy competition!”). Or maybe it was just a lazy “I need a web site, let me rip it from Damir, he already made one.”
In some circles copying something from another without permission and taking credit for it is called intellectual theft. It’s also known as plagiarizing. Academia sanctions that behavior harshly. However you diminish it to avoid moral dissonance, it is what it is: one takes from another, claims as own. The rest is just a matter of degree, but it’s not “a misunderstanding.” It’s a deliberate copy, claimed as one’s own.
Make no mistake: I have exactly zero concern about this person’s work here. I’m simply immensely annoyed by this trivializing echo behind me. Makes it unpleasant to be in the same space. Though if this happened to a younger person at the beginning of a career, it could have been very damaging.
It’s what drove a younger Evan away from public exchange of ideas. How many interesting conversations and Elm features did we never see? We lost time. The plagiarizers stole it from us. We will lose more as others learn not to present their great ideas in public for fear of plagiarizers at ready to claim “in many ways more sophisticated” copies. We will only lose. Never gain.
So no, this is not positive for Elm community.
But. It presents an opportunity to discuss this as a community, or at least have a think about it on your own. It’s at the core of what many people fear from LLMs. Here’s we have a human example as well. There are stories of “friends” grabbing people’s work from GitHub and presenting as their own to get a job over the original author. Brazen, shameless, abhorring. For me, the act here is in the same category.
This is not a good example for our profession. As a community, we must learn to sanction behavior like that.
@rupert Congrats on the alpha release! I’m a bit wary of code quality in projects where AI was used at a large scale, but having tried to do everything manually in elm-in-elm and having burned out on that project due to the sheer amount of work, I do recognize the promise of speedup and being able to have something ready much faster. Will be interesting to see how both your and Damir’s LLM-written projects evolve over time - whether the care put into orchestrating the LLMs is enough for a large project to not collapse under its own weight!
Looking at the goals, have you done some prototyping on the multi threaded TEA actors goal already or is it way in the future? It would be interesting to see an example program showing the Elm API and a plan of what native primitives it would compile to, even if it doesn’t compile yet. (Custom scheduler like BEAM? Pthreads?)
Also could you refresh my memory on whether there is some automatic inclusion of elm-janitor PRs? Or is it “vanilla Elm”?
Yes there is some prototyping on multi-threaded TEA actors, and the thread for it is here: If Elm had threads..?
The implementation is only a “simulation” of threads, implemented in single threaded Elm.
No automatic inclusion of elm-janitor, it is “vanailla Elm” currently. If there were to be automatic package substitution, I would need some kind of package server which I do not have.
Another problem to solve longer term, is how to distribute the re-worked elm/* packages that now have C++ kernel implementations. Currently that kernel code is “baked in” to the compiler. It really needs to sit with the Elm code in a package, so that the Elm side and kernel side are versioned together.
Gleam’s roadmap… precedes both of you ; )
I’d post one of my companies roadmap/timelines that look closer to Rupert’s, the version number is in a box as well but (for some reason) it also has {} around it {1.0.2}.
(off course if I did that I’d most likely be looking for a new job shortly afterwards…)
Well, the strategy is definitely working. It’s exactly what I tried to convey above. Now we’re in a position of there are two projects, linked, and will always be judged to be the same. The plagiarizer will always tune the wording to ensure that. Live off the land of others’ work.
Damir,
The only thing that I copied from you is the design on the roadmap of using circles as bullet points for each version on the roadmap.
I did not say “My project is in many ways more sophisticated than Damir’s.” - I said “in some ways eco is a more ambitious project than elm-run”, because I am not just writing a runtime for the existing Elm compiler, but a complete new compiler pipeline, that is a larger work and a larger ambition.
I did not take credit for the theft, in fact I messaged you and openly admitted it, apologised for it, and offered to remove the circles and 2 lines of CSS from the design. The roadmap itself is not copied from yours, its just a logical pathway that a roadmap for a compiler project is going to look like. You even said my roadmap had the same feel as yours - yet mine has no swearing in it! I will quite happily remove future version 1.1.0 from my roadmap, as it is so far in the future as to be completely speculative at this time.
As I said above the reason I did not remove the circles was simply because you did not reply to my message. Which means that you did not acknowledge any of the points I made in that message:
I read your elm-run announcement, which contains about 8 negative comments about LLVM. Including this: “an opaque executable compiled with some rando’s llm’d llvm that won’t be buildable with the next version of llvm”. Yes, I used an LLM and have generated LLVM code - were you pointing at me and calling me a rando? Were you trying to poison-the-well on LLVM knowing that I am using it to build something that competes with your effort ?
Other than the coloured circles on the roadmap page, I completely reject your claim of plagiarism.
To suggest that eco is simply copied from some other GitHub project is a little bit ridiculous. Oh yes, I must have just lifted some other elm compiler projects code and called it my own! But which one ? because there is no other to copy from - case closed.
I think that any reasonable person can see that eco is quite a different project than elm-run. eco has a front-end in Elm, elm-run uses the Haskell, eco is monomorphizing/global optimizing compiler with types all the way down, eco uses LLVM, elm-run has a hand-rolled code generator, and so on.
You worked hard on elm-run - 12 hour days. I worked hard on eco - also many 12 hour days including weekends for the last 6 months. I used AI to write the code, yet I still needed to put in 40/50/60 hours per week to design and debug it. You cannot simply fire up Claude Code and ask “write me an optimizing compiler for the Elm language”, I had to design and understand everything, and many times I had a sore head from trying to figure out some of the really hard problems that came up. But AI did make this possible because I don’t have the 2 or 3 years available to do this by hand, and I may have given up after several weeks long debugging sessions that AI could handle in a few hours.
I don’t trust you Damir. And I don’t like that you are pissing on my parade. Its quite disrespectful when someone has put in a huge amount of work to only have negative and untrue things to say about it. You will notice that I did not do the same to your work - I was curious and asked questions about it. I apologized for the infringement on the 2 lines of CSS, and offered a reconciliation. I even suggested that eco and elm-run could work together…
Imagine this - eco has a compiler front-end in 100% Elm, you have a code generator in 100% Elm, put them together and now we have a full compiler front and back in 100% Elm - how amazing would that be ?? Well, eco is open source, so anyone is completely free to copy it, so long as the LICENSE terms are observed.
elm-run is not open source despite what you claim - it is closed invite only. I think you have commercial ambitions for it. You say you run a SaaS with 7 figure turn over. So perhaps this is a case of a business trying to bully the little guy to keep the way clear for your commercial plans ? Don’t try to push me around.
** offer withdrawn **
Thank you ! And I bet we can find plenty more uses of this design too.
That’s not the problem–every timed evolution will have those dots. I can find you right now 1000 of these, many award-winning visualizations.
The problem here is the act: the copying of content, and details of classes called “metro-stop” copied into “roadmap-station,” and straight out admitting to copying. It’s the deflection, “well I just copied the circles, they were nice; but ignoring the fact that the whole content was copied.” It’s the implicit claim “let me just not put effort, present your work as mine, and sap energy out of your hard work by convincing everyone superficially that this is the same thing.”
This is the live demo of what Evan called “Jeffing” in his talk. It’s the famous Apple’s “Redmond, start your photocopiers” banner.
The insidious part is, “oh, but those are just circles, it’s what everyone does” yet being in the same room and playing on that. Why change to “runtime” on June 3? The unspoken rule in this community was if you start a new language inspired by Elm, you’ll go off doing your own thing. Robin did that: he speaks at conferences and says “I work on language Gren” and has his own community. Doesn’t impose it on us here. Richard Feldman was a prominent and outspoken member of Elm community. Then he decided to start his own language and made his own community. Guida language has its own community, it doesn’t impose it here on us. Decio doesn’t go around and say, we have a new Elm thing. And so on.
What we have here is a person that says, “Oh, let me modify Guida, build a new language, eco-lang.” But then when someone presents clear strategy how to extend the community, the same plagiarizer overnight changes the rhetoric in order to confuse and steal your attention. So, a compiler for Guida, is suddenly a “runtime” with “bytecode” for Elm? Wonder why?
Again, the insidious part here is that it is all nicely justified with bringing it back to some technical merits, chest busting of “starting first,” and what not.
The point here is the manifest behavior, the caught-in-the-act moment, and brazen insistence on it not being wrong. It legitimizes more of that. Now it was just a small thing, the next time it will be some other person’s great idea they feel strongly about. Who will dare to share?
You can always banalize and say, “so what, it’s just circles.” “Keep executing your thing and pay no attention.” And if you’re the party that the thing was stolen from, you can always be made, “Ha, you fuss about some small things because you’re envious that the other one is doing the same thing.” Sure, you’ll keep hearing arguments like that. I do. It’s all about that.
My discussion here is about a larger problem. The fact that the thing was stolen from me gives me a stronger motive to speak about it, but it is a general problem that happens to others all the time. This here is legitimizing a behavior that will ultimately sap the last drop of creative discussions from this already small community. This is the road to npm, the cesspool of stringed packages within packages to get download numbers up and other behavior that takes away from creativity.
The fact that the guy ripped a roadmap and mind-blowingly says “I’ll take it down if…; it’s just a misunderstanding.” but keeps it up and banalizes things when challenged is legitimizing a certain culture that is not what we should stand for. It’s the act: “I took this from you and presented as mine. Twice. And it’s okay.” Now, that punishes creativity.
And again, this is not about the contents of the work that this is being pushed back. It’s about the act: one takes from another and presents as one’s own. It’s the violation of the moral code of who we are as professionals.
Right. Did not know you burned out on elm-in-elm but it makes a lot of sense. I would also have burned out on this. Actually working on eco I discovered a new found respect for Evan and the work he must have put in on Elm over a 10 year period. Writing compilers really takes a lot of hard work and persistence.
I intended to write eco by hand, but got curious about AI coding and since I had free time wanted to try it. For me, there was no looking back after my first session on Claude Code. Also we can never put genie back in the bottle, AI is here and changing our industry and I needed an opportunity to learn it and to be able to demonstrate that I can use it.
One the code quality - yes AI makes mistakes that can make code brittle. For example, sometimes it put in special cases in the compiler code that were for specific library functions - List.map might have gotten some special case handling for example, because it was involved in a breaking test, and AI could not understand that it was not ok to cheat to get the test passing, rather than to solve the general problem, so all code present and future will pass the tests.
So all the time you have to be careful of this and stop it from happening. My approach is:
It is imperfect, but I also learned a great deal about coding with AI through doing this. Other people have probably also invented “invariant driven programming with AI”, but I am quite proud of that one because it was my own insight and an important enabler to solving some problems that AI was failing on without it.
Overall, the structure of the code in eco is good. It is really the same structure as the original Elm compiler, since Guida ported that to Elm 1:1, and then I extended the compiler pipeline in a very similar style. The C++ code is well modularised. There will be some AI crap in there for sure, but its more going to be at the small scale, rather than at the large scale of a project that becomes too messy to work on.
And tests… I have a lot of tests.
You got it wrong.
Right from the start the github repo was called “eco-runtime”, but the website linked to “eco”. So you can see I changed it from “eco” to “eco-runtime” just to get the link correct in the website.
But the github repo was deleted anyway, and is now “eco-compiler”.
All compilers need runtimes. MLIR is a bytecode.
Please, just stop this assault on my hard work. You will only make yourself look bad.
Dude, I believe you, you have been thinking about this forever and started earlier. I’m sure we can find traces of it online. Everybody wants a compiler. I don’t mind you experimenting with LLMs. Heck, it’s good you’re doing it. Go for it! Nobody ever disputed any of that.
Of course you have the right to change your roadmap retroactively to “bytecode” the day after I say the bytecode is the right format, and call yourself “eco-lang runtime” the day after I explain how a runtime extends the community. It’s a free world. As are npm and AliExpress.
And it’s not about the source at all: you couldn’t copy it since it’s closed due to you raining on my parade on my freaking birthday a couple of days before I shared the source! (In a most bizarre outburst, claiming it’s your birthday soon so you want to tell everyone you’re doing an awesome thing by rubbing my own roadmap in my nose)?!
This is about the fact you took something that was not yours and presented as your own. It’s dishonesty. In our field that’s the capital sin, and there’s no walking back from that.
To explain. Guida is actually aiming to create a new language that is different to Elm. In addition to .elm inputs you can code in .guida format - which is currently Elm but with some minor changes. Gren also started out as Elm but has more significantly diverged away.
With eco my aim is to be 100% compatible with Elm the language (which is why it has > 150,000 tests). For me, it is Elm as a language that is the crown jewels. I think Evan did a brilliant job on the language design, so why would I want to change that ?
So eco is not a new language. I have the domain and github org eco-lang, mostly because the simple name ‘eco’ is already taken, and appending -lang on the end was the only reasonable thing I could think of.
eco is a new compiler infrastructure for Elm - not a new language.
I turned 50 on 1st March 2026. Its rare that I get to work on interesting things, so working on this in my 50th year helps me to know that I am not yet too old to do this kind of work.
My “bizarre outburst” on the Discord server in full:
"
You know, they say that Elm compilers targetting native hardware compilation targets are like busses - you wait a long time for one to come and then two come along at the same time…
There was some anticipation that we would be able to try out elm-run for the first time today, so I decided to fill that gap by giving you all a preview of Eco. Which I have been working on in stealth mode since October last year.
You will notice the GitHub link is dead right now. If you look at the Roadmap section, release 0.1.0, Self-compilation is the only item on the list not complete yet.
I was originally aiming for around Elm Camp time in the summer to reveal this. 2 reasons really for lifting the veil early. The first is that I am turning 50 this Sunday :old_man_yells_at_cloud: and I just feel like it would be nice to know that I am not yet past doing aweseome things. The other is elm-run, and I apologize for not telling @Damir about Eco sooner, since we are working on very similar things. I decided at the beginning that I would keep it quiet until I had some real things to share, not just an idea.
Native compilation is actually about the only thing that Eco has in common with elm-run. In some ways Eco is a more ambitious project, because I am making changes to the entire compilation pipeline to allow optimisations to be performed in the front end, mid-level and low-level phases. The compiler front end is in Elm, forked from Guida. That said, I removed all of the Guida specific stuff. Everything to the left of the typechecker (and nitpick!) is left alone, which means that this is a compiler for the Elm language only and exactly.
"
Reading this thread makes me very sad.
I had a great time attending Elm camp, meeting both of you once more and hearing about your passion projects (and everyone else’s of course
).
What hits me hardest is the missed opportunity:
Just this week it would have been possible to talk in person and address the feelings that are now written down. Words that can be misread easily and spiral into escalation that might have been less severe when talking face to face.
You are both clearly proud of the work you put into your projects, and I’m excited about both.
I’m noone important in the community, but I love working with Elm and seeing other people being passionate about it usually brightens my day.
Everyone is entitled to their own feelings.
These are mine.
And I wanted to document them.
I’m now in the last train on my way back home, and will enjoy the rest of the day with my family.
I wish both of you all the best.
Gee. Forgot the full text!
Wasn’t that… bizarre? With that “to the left of” that I used all the time; the whole birthday spiel, at-quoting me while I was on my day off for my birthday that everyone in the community knew about? And the only “real thing to show” that day was a plagiarized roadmap?
To this day I don’t understand why do you keep insisting to associate yourself with me and keep saying “we are working on very similar things.” Had you not imposed that so much on me and copied my stuff, I wouldn’t have even registered. So weird.
Just to be clear, I have absolutely no desire to be associated with you in any way imaginable. Quite the opposite in fact. I would greatly prefer to be completely disassociated from you.
Sorry about the circles ! Good bye !
Marc, you’re important. I know who you are. Thank you for sharing your feelings. Your feelings matter, and I apologize for being the one causing you sorrow.
And I deeply regret the below will cause you more.
The only opportunity missed will be if we as a community don’t discuss this based on principles.
A person takes something mine and presents as his own, publicly. That’s a fact. Whether it is just weird insistence on circles or a whole roadmap that’s secondary.
The hard fact is, one plagiarized deliberately.
Being called on that, doubles down. Starts doing some weird changes based on what I publicly say. Comes to my Elm Camp session, publishes a fact here that was not supposed to be said outside of that building, for search engines to pick up. To retaliate and deflect.
What is the appropriate community response to this? Is there a community here that will come together and say “Hey, people that steal from other members, and share stuff from Elm Camp are not part of this community.” How will we organize the next Elm Camp? Will you sanction that person? Or invite him over, ask me to “talk it out?” Or ban me? Or is it easier to just play this down, change the subject and continue like nothing happened? Maybe even cancel the one that raises all these inconvenient questions?
(The rule of Elm Camp is: what was said stays there and should not be shared outside without permission. I trusted the organizers and participants and spoke freely. But clearly had one wrong person in the session).
There will be ton of posts tomorrow, mostly driving the conversation away from this. But I’m fairly certain nobody will dare to directly pose the question: “You stole from this other guy, deflected, exposed information to retaliate, and still didn’t remove the thing. How can you be part of this community?”
I’m hoping at least we’ll examine what is stealing here. Is it correct to copy, present as yours, and then when called on send a message and say “I copied, I’ll remove only if you accept whatever?” Wouldn’t an honest person first take the thing down then discuss? (Note I never saw any messages, I put my blocker on so I don’t know if there were any and what was said, I’m basing it on an earlier “offer” here). Is there a degree? If it’s only “two lines” is that stealing? “four lines”? The whole page? For just a while for effect, then modify?
Most people that reach out privately say something along the lines “I don’t like conflict, why don’t you talk it out.” I don’t mind conflict when it’s principled. Plagiarism is wrong. It’s bad for us as a profession. There are others that were wronged by plagiarizers. Maybe some will find solace in fact they are not alone.
(Regarding the information that shouldn’t have been published, I notified the mods. Maybe it will be gone by tomorrow, so most will probably shrug and say “What’s the fuss? We don’t have to discuss this, it was taken care of.” I obviously won’t screenshot it as “proof,” as I want the thing gone. You’ll have to figure it out how it factors into the moral dilemma).