Pointless Disagreement

Damir,

I liked the colored circles on your roadmap, but I especially thought that it would work with the design I had because I have a page body and left panel with a vertical separating line to put the bullet circles onto. I did, stupidly, without even really thinking about it, take the CSS for your circles and use them on my page. If this were a crime, the entire internet would be suing each other into oblivion. Its literally about 2 lines of CSS.

You were upset about it, so I messaged you and included an apology in that message. You did not respond, despite me following up a while later.

The class names were the same, because I, the criminal master-mind, copied them verbatim from your page. I changed them now, if that makes any difference ? But as I say, you don’t have a patent on circles. I offered to change them, but now I have changed my mind, because I don’t do favours for rude and unreasonable people that attack me and slander me.

You think I copied your roadmap - but I did not copy your roadmap. I made my own roadmap. Yes, there are overlaps with yours, it is not unreasonable that there would be, given that we have by coincidence ended up working on Elm-to-native projects. What else would you expect to find in my roadmap other than what is there ?? Don’t take my roadmap too seriously, only the current item and the +1 item have any real accuracy to them, the stuff in the future is just speculation and will be adjusted as I get closer to it.

I don’t know what it is that you think I have stolen from you. Stolen your ideas ? Made something free and open source which might curtail your future commercial opportunities ? Stolen elm-run ?

You angle, quite frankly, is very hostile. You want people to censure me to satisfy your claim to be the unique owner and only person that can pursue a particular set of ideas in this space ? It just does not add up.

So please, call off the attack. You know I am more than capable of defending myself, and I will not be bullied.

:man_shrugging: If you are correct in your description of events, I’d be with you, I’ve used code taken from another Elm package for Elm-Motion, and given it the respect it deserves (I hope) - however - if @rupert is correct in his description of events, and started his own project completely separately and coincidentally then I’d have to think that he has a valid point.

Thing is, this all seems like school playground he said, she said sh*t without knowing all the actual facts, and it appears like no-one else who may know is willing to talk up.

Reality Check

I’m a self taught hobbyist that loves Elm and this community - I have learned so much from people round here over the years, if I could be in either of your positions, working with Elm and getting paid for it I’d get up with a smile on my face every frigging day.

However, I’ve just spent the last 7 years as carer for my mum (Dementia then full onset Alzheimer’s), the last few years as full-time carer, living off megre benefits (the only time I’ve ever claimed in my life) and being afforded 4hrs a week (Fri 6-10pm) out of the house for myself.

She passed away recently, and without going into the detail (other than it’s not due to non-payment of rent or mortgage) I now have to go into an Airbnb on 1st July for a month, after that I could well be homeless. And I’m damn bloody serious about that. I’m 56, and somehow now have to rebuild my life.

I don’t state any of that for sympathy, so please no responses in that ilk, I state it because there are far more important things in life than code. I love spending hours coding, and after Mum passed I threw myself into Elm-Motion, but I’d happily give up every line of code I wrote to go back in time and have that time with her again.

WTF up the pair of you…

3 Likes

Paul, I’m really sorry to hear about your mother passing and deeply empathize.

Unfortunately, “WTH with the pair of you” trivializes the matter.

This will be the general theme, as I said earlier: everyone says “I don’t know,” “it doesn’t matter,” “talk it out,” “it’s childish,” “could be this or that, but you’re the same.”

That sadly keeps equalizing the victim and the perpetrator, which is the goal here.

Another thread got started, and again the same tactic, associating and equalizing with my work (cf. “second compiler…”, which is not even true). Innocent “stating of facts” that you can’t object to unless you had a thread like this before. But the strategy continues, and will continue. It’s bizarre and annoying as heck.

I’m after discussion of the disease in our profession, plagiarism.

This not about me or my fear or whatever you’ll hear: I speak up because I’m the victim, and because this is becoming annoying. If I have to be associated to this individual, then let it be at least in a positive and useful way.

The focus is strictly on a hard fact: one copied from another without permission and proclaimed as his. Plagiarism.

The message must be: you can’t walk back from that. Ever.

Wiggle, wiggle.

Stay on one fact: you copied without permission and proclaimed as yours. Plagiarism.

Did it again, will continue.

You stole from me what I take pride in and presented is as yours, without making any effort.

Then keep associating yourself with my work in most bizarre ways, like that outburst.

I take issue in principle: plagiarism is a disease of our profession. You plagiarized my work. I cannot stand plagiarizers. I double cannot stand annoying plagiarism of this kind here, with constant association. It’s annoying.

If there’s a case to be made for plagiarism, I’d like to see that done with concrete examples in a concise way. I see a lot of accusations and calls to action without substance.

I don’t find the examples compelling. There are only so many different good words that can be used when building a compiler and publicly shared information about words other people use to describe things would surely nudge someone in the direction of using common language.
Same with program architecture or a well presented structure. So even if more than circles were inspiring, I find that ok.

I share some of the things I do publicly because I want the ideas to be out there. If something I’ve done inspires someone to build something alternative or better off of it, I think that’s great. If not, maybe that’s a signal that what I’ve done isn’t that good or I present it badly and I get to learn.

I originally took GitHub - mdgriffith/elm-dev · GitHub, copied it to my computer because I saw it could tell me things about Elm code and built a language server inside it, extended the find functions, eventually abandoned that and forked the Elm compiler to build a language server from the things I learned. None of it would have been possible without me being able to see how elm-dev did it and build on top of that work.
So keep in mind that this may be coming from the perspective of a plagiarist thief who steals other peoples work, takes credit for it and associates with them in bizarre ways.

You are both heavily utilizing generative models, are you not bound to end up with similar LLMisms and solutions when working on exactly the same problem?

4 Likes

The code, the compilation techniques, the garbage collector design, between elm-run and eco is completely different. They are both original works and have quite different designs and aims. I have never seen the code of elm-run because it is not open sourced.

Just to be absolutely clear - the only thing I “stole” was the use of coloured circles on the roadmap, and the 2 or 3 lines of CSS involved. That is it.

An apology for that indiscretion was offered and ignored. We could have resolved this all amicably in private, but instead Damir chose to wait until the release announcement of the thing I worked so hard on to try and publicly denounce me, and attempt to de-platform me.

Judge for yourself who behaves in a decent manner.

Here is the message I sent Damir privately on 2nd March:

"
Damir, Sorry - I did copy the circles on the roadmap thing from elm-run - and I apologize if that caused offence. Its the only thing I copied from you - and I have now removed it from the eco-preview website. It is an attractive piece of design but if I had realized that copying it would upset you, I would not have. That site is intended as a private preview in part to gather feedback and correct mistakes such as this before revealing it publicly.

You can see from this Gist history that Eco is something I have been thinking about for around the last 5 years. Originally ECO was Elm Compiler Offline, but I liked the name eco and always had in mind that it would stand for many different things. My intention a year ago was to adapt the Haskell compiler and spoke about this around a year ago, but after I learned about the Guida Elm port, I shifted to a pure Elm implementation of the compiler front-end anyway.

I started work on this compiler effort in October last year and only learned about your elm-run efforts around when? December I think. It is just coincidence that we both are working on closely related ideas (or a sign that the time is right for this idea), and if you read some of the Docs section of the site I think you will see that the technical details of eco are completely different to elm-run - much more optimisation work on the compiler front end, MLIR dialect, LLVM codegen. As I posted on the Discord I wanted to keep in stealth mode until I actually had somthing to share, rather than just an idea, which is why I kept quiet about my efforts until now. Ideally I would have stayed in stealth mode for a few more months but the upcoming release of elm-run made me think I should do so earlier.

I think quite a few people were excited by elm-run and had I known that I might cause you to leave the Discord server I certainly would have approached things differently. Please do not be put off by my actions. eco is still in early development, not even self compiling which is the current milestone I am aiming for. I have not run it on any large programs yet, and I fully expect that the optimisation pipeline could be quite slow on large programs. elm-run may turn out to be a much faster compiler. There is also the intriguing possibility if elm-run is pure Elm code of putting together a complete end-to-end Elm to machine code compiler that is 100% Elm. Elm is quite a niche space, but I think there is plenty room for more than one new compiler project.
"

If you are truly looking for compelling examples then let’s establish what do you consider plagiarism.

My claim here is: one took from another and claimed as his own. That’s the roadmap thing and the bizarre blurt on Feb 24, the genesis of this story that doesn’t end. That should already make it weird enough, but your “only so many words can nudge,” stands as a valid exploration.

Edit: I forgot to mention. The key here is that the page is copyrighted. There’s clear copyright in the lower left corner. This is not some piece of code we’re talking about that could be seen as generic inspiration. So the act is a deliberate copy of a copyrighted page design and content, to the level of styles, so it’s not just “I was inspired by looking at it and went on to do my own thing.” I think that makes a huge difference in the discussion.

My claim implies that this is an insidious form of plagiarism, whereby the plagiarizer uses constant combination of words and associations to keep the thing linked, I don’t know to what goal. A death by thousand cuts, if you want.

However, this is not “inspiration,” this is a strategy.

I’ll give you a few examples not to overload the reply:

  • a retroactive change of the roadmap to “bytecode,” on Jun 3 and its defense that only sounds plausible if you never worked with the said tech.
    Look it up. MLIR has a bytecode serialization format. It’s not executable, and it’s generic, working for all dialects. It’s noisy by default, so you can tune it to your own dialect somewhat, but it’s not necessary. Crossing off “established a dialect” to say “established bytecode” is nonsensical: you can’t have dialect-specific bytecode without dialect. You can’t “establish it.”
    Doing it on Jun 3 after my announcement on Jun 2, while claiming that the roadmap was done at least six months ago, should be a serious signal that something is deeply wrong.
    If that’s not enough and you’re looking to establish evidence, you can dig into the source, it’s open and see if there’s really deliberate custom bytecode that goes with the dialect, and in what order things were established. That “established dialect” thing was there early on in Feb, iirc, so if you look into code, it might give you a better orientation of “inspiration” vs “something weird is going on here” and move beyond he said she said. But that depends how much you are willing to invest to confirm the compelling evidence. The way I work, if I catch someone twisting the truth, I assume it’s not an isolated thing. You might not want to go that far.

  • roadmap, 1.1.0, enterprise support. Think about it for a second: a compiler (or now “compiler infrastructure” or a “runtime” briefly as of Jun 3) cannot have “enterprise support.” That’s nonsense. Especially if you worked in enterprise, you know that. This can only appear there if you blindly copied a thing from a product roadmap. “Inspired” would be a stretch, as would “speculative milestone.” There are about 1000 other things that you can speculate about a compiler, but going from first release to “enterprise support” immediately can only be there if you blindly copied. It’s just too close to claim otherwise. I hope we can agree on that.

  • Diff of Jun 3: how can a roadmap be changed retroactively for an item already listed in the past tense?! That can’t possibly be “inspiration,” or a “nudge,” can it?

Of course you can now say “that’s not compelling, for me plagiarism is when you copy the whole thing.” And then we get into defining that, which is already a not bad progress. The guy is on it constantly with this “I copied only the circles.” to minimize the other part that is now changed.

And that you can see in manifest actions: weird blurt on Feb 24 linking to me in a very bizarre and unusual way; no evidence whatsoever on that day except the plagiarized roadmap; constant changes and re-editing of the site and this forum here (Look at all those pencils and click on them), weird defense of “bytecode” change. Constant shifting, wiggling.

I’d be happy if we move towards your compelling evidence argument and examine it on that grounds.


For the record, and I ask you to acknowledge that: I do not use, and never have used generative methods in any communication towards humans. For me, writing is a form of expressing thoughts and key part of who I am and how I respect my colleagues. I would NEVER in a million years write a blog post, manual page, or anything else other than by hand, straight from my mind. It is important to me that this is understood and examined in all traces of my public expression.

Tools are used to help in product creation and are very effective in many applications. But communicating with fellow humans is not one of those applications and should never be. It’s who we are. You can’t possibly offload that: that’s why we call that slop. It’s offensive.

You didn’t plagiarize anything here: this is published source code with a license and you used it the way it was supposed to be used. That’s the whole point of open source: spreading ideas. And expressing that your product is based on this other thing is also part of what is supposed to be done, as long as you don’t claim the original author did it.

To the contrary, if you used elm.dev web page’s copy and presented it as your own, rubbed it in Matt’s face just as he were discussing elm.dev in a community and then publicly continued to claim constant link to his work through unwelcome comparisons, that would have been a different story. That would have been plagiarism.

I’m not an expert on plagiarism. The line where attribution is warranted or not is notoriously blurry in plagiarism. Especially when it comes to the presentation of common patterns, such as roadmaps.

Nomenclature is also an interesting beast. We are technicians. We have a technical nomenclature. And technology is running fast and furious and terms and meanings behind them are racing to keep up. I know I’m introduced to new terms and phrases almost every day in the AI space… … Once a term catches on, changing our own current nomenclature to help adoption of those terms and phrases actually brings clarity to the community and helps us avoid miscommunication in the long term.

Interesting rhetorical question: is it plagiarism to not give credit to the originator of the new technical phrase? Is there a time period when it is OK to stop giving credit?

When boundaries are blurred, I often look at intent. When a perceived slight has occurred, and I rightfully and appropriately speak out, and the respondent is happy to work with me on a solution, I see it a win for all involved and I see no need to so formally deal with the matter, but appreciate the road forward and spend the energy that would have been spent formalizing the issue on other things I’d rather do.

Speaking out about possible infractions and also defending one’s self and position are appropriate action-reactions.

In my opinion, based on the facts I’ve read and seen, and the expressions of concern and responses to those concerns, I’m personally satisfied that no malintent was or is intended. Perhaps that is the most important detail.

Having acknowledged the circumstances, and been well reminded of the importance of both giving credit where credit is due as well as understanding there are always “two” sides to every story, perhaps we are at the point where the value of acknowledge the differences and moving forward would provide the greatest sense of closure, and the greatest benefit to our small but brilliant community.

I love our community. I’ll continue to be part of it till I can no longer move my fingers across the keyboard, and then I’ll speak code and instructions into a mic and still keep moving forward with the community and the language I love. In the end, I like the point that @paulh made above: it is people that matter most. Not an excuse to excuse bad behavior, but a reason to reach for understanding and reconciliation and to choose the brightest path forward.

Thanks for letting me share how I feel. Here’s to moving forward.

3 Likes

Marten asked for compelling evidence. I provided some verifiable arguments. Since then I’ve heard privately from a few people that agree with that evidence but are not sure how to express that publicly without being ostracized for “siding with Damir.”

What I’m interpreting here from you is “That was not compelling evidence”?

Assuming that I’m telling the truth about being contacted, what would you say to those community members? How would you disagree with them?

Don’t get me wrong, I appreciate you for your view and speaking up. You seem to truly care about the community. Are you willing to examine your statement in more depth?

What is a brilliant community if one member screams and drowns, unable to get out of a nightmare and the response is “No harm done here. Our community is brilliant. Move on.” With zero examination of what are the screams about?

Second, beyond the arguments I provided, does the fact I’m repeating “Privileged information is published here as retaliation, in bad faith,” also in the “no malintent was intended” claim?

Look, I understand that the text is long and you probably couldn’t bother to read it all, and a quick way out is “let’s all just make up, we’re nice people.” I appreciate you for trying to be nice. But what if I strongly feel that there was serious damage done in bad faith? How to reconcile that with the being nice/reconcile part?

What I’m after here is not “confirm I’m right,” but “what is a community?” And “what is the appropriate community response to systematic, deliberate plagiarism?” What is the right individual response? What kind of relationship we have here between us members?

Is the only public answer really, “We’re brilliant because we are just nice people and no harm can happen when nice people are in a community. Make up, what happened to you doesn’t matter.”?

You MUST be aware of all the chatter going on in backchannels all day: from people despairing, yelling, agreeing, disagreeing, not knowing how to express things, or just grabbing popcorn… If you really care about a “brilliant community,” may I ask you to examine it here. Please?

I don’t matter that much for this to be all about me. The opportunity here is massive to build a community. This IS community building. And for that I’m willing to publicly express myself like this, take a hit in a number of relationships. This is important. But it’s hard as heck, especially because the answer is not “make up, we’re nice people.”

If we default into nice mode, we risk a similar thing happening to others, especially younger people, and nobody will care. We’re already on that slope both as a community and a profession. Let’s use this opportunity to slow down or even reverse that decay.

For me this evidence is far from conclusive, and both roadmaps seem very generic and quite similar to many others from similar projects, such as Firefly.

This hostile discussion is now overshadowing both projects. I think the best thing for all parties (and also the community more widely) would be to put it to rest and return to development.

1 Like

Hi Damir,

you write

and

From what I know about your projects, the code itself seems to vary significantly: you use the original Elm compiler, written in Haskell, Rupert uses Décio’s port written in Elm. Your code generator is written in Elm, Rupert’s is written in C++.

If that’s true, and if everything revolves around the roadmap, then I don’t understand why you feel that there was serious damage done to you, and why you think you are drowning?

Same question as before: I’ve heard privately from a few people that agree with that evidence but are not sure how to express that publicly without being ostracized for “siding with Damir.”

You’re flat out saying “this evidence is far from conclusive.” Presumably you evaluated it in detail and verified for yourself. I doubt you’d speak lightly without taking your time.

Assuming you trust that I did hear that, how would you respond to these community members?

You also use a word “hostile.” How would you define that in this conversation?