Skip to content

Instantly share code, notes, and snippets.

@Shadows-of-Fire
Last active July 12, 2023 20:41
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shadows-of-Fire/cf37cecd04c8e5c6f8abc33833c86eb5 to your computer and use it in GitHub Desktop.
Save Shadows-of-Fire/cf37cecd04c8e5c6f8abc33833c86eb5 to your computer and use it in GitHub Desktop.
Triage Stike Demands

Forge Triage Union Strike Demands

Code of Conduct

Context

In repeated instances, recently on May 28th1, and even more recently on June 22nd234 Lex acts as if he is above the Code of Conduct5.image
Unfortunately, the idea is sustained by the fact that the CoC currently has the famous "Lex Clause" which allows Lex to do whatever he wants when interacting with the community and the team. This is an extremely pressing issue, as his behaviour is becoming more concerning every day, and he still is the face of Forge.

Demands

  1. The aforementioned clause will be removed in totality. There will be absolutely no exceptions made for any member of the team or the community regarding behavior.
  2. An addendum will be made to The Code, explicitly stating that The Code applies equally and unequivocally to all members of the community and the team, regardless of rank or power.
  3. The Code of Conduct will be enforced in all channels, including private channels, by any moderator with the relevant authority.

Moderation

Context

The Forge Team role currently retains moderation permissions through Dyno commands, which poses a risk for the project, as not all developers are good community moderators.
The current team, Lex specfically has the habit of abusing their moderation powers. A few examples of power abuse can be found here6789. A more recent example can be found here10. It is important noting that Commoble, as a new team member is yet to receive an apology from Lex, and Lex refuses to give such apology.
Another example of power absuse is Sciwhiz12's mute attempt11 for "being an ass in public again and its fucking pissing [Lex] off", when Sciwhiz was publicly calling out a CoC violation. It should be noted that privately pointing out the violation would have resulted in ignorance.

Demands

  1. Moderation permissions, both discord native permissions and Dyno, are restricted to the Moderator and Moderators roles.
  2. Any user wishing to have access to moderation permissions must go through the normal channels, including a moderator application and probationary period.
  3. What constitues or not a CoC violation should, after all, be left to the Moderation team. The Core Team are not moderators, and their job is not to manage the community but to orchestrate and supervise development.

Issues and Pull Requests

Context

Forge has the tendency to ignore the community. Many discussions happen behind closed doors (most egregiously #triage-senior). This leads to changes which are frowned upon by the community. To make matters worse, most public discussions lead to ignorance from the Forge team, where the public's opinion is not considered or dismissed entirely12. This is due to the team assuming that the community argues in bad faith and without knowledge of the needs, which is ironic as that is the position from which Lex argues. Most of the time, discussions are quickly brought internally as the public "annoys" Lex.

Demands

  1. Internal discussions about development are brought to a near-zero amount.
    • While some are unavoidable, internal discussions about issues/PRs must happen in the #triage channel.
    • Any internal discussions must be summarized by a party to that discussion on the relevant github issue/PR after the discussion concludes.
  2. The public is encouraged to interact with development discussions.
  3. The Forge Team will listen and take note, and will not disregard community concerns.
    • Patronizing phrases, such as "Your concerns are noted and we'll keep it in mind", will not be permitted.
  4. Issues or Pull Requests will not be "left to rot".
    • If it is decided that an issue or PR will not be moving forward, it will be closed.
    • This also applies to PRs that are actively being worked on, yet it has been decided will not be moving forward.
    • As an aside, a rule should be decided for what collective body has the authority to decide something may not move forward. It should not be one person.
  5. Closing issues without discussion or dismissing ideas or concerns without justification will not be permitted.
  6. Commits to repositories managed by multiple team members (MinecraftForge, Documentation, etc) must go through the PR process.
    • Direct commits, other than trivial fixes (one-liners or similar), will not be allowed.
    • This means that changes will require the approval of at least one triage-level member of that project (Triage for MinecraftForge, Docs Team for Documentation, etc).
      Demand #12 is retracted. While ideal, it is unrealistic for a project whose team members are all community volunteers and are not under an obligation to review changes.

Development

While also under the purview of the above section, the concerns noted here are important enough that they also receive their own section.

Context

Some portions of the codebase are effectively "blacklisted", in that changes to them are rarely or never accepted, and sweeping changes are effectively denied before they can even get off the ground. These portions are often one or more of the following: full of tech debt, proven to have design flaws, or proven to be overengineered. Examples of these portions include Capabilities, Forge Registries, the Login Handshake, and Level-Sensitive functions.

Demands

  1. All areas of the codebase are equally available for contribution. This means that all contributions to such systems are acknowledged and considered.
  2. Project specifications (and/or documentation) should not be arbitrarily censored. The removal of the mention of Wildcard AT's is an example.

Lex

In addition to the above sections, there are additional demands that are either not relevant to the other team members or that would not benefit from generalization and codification.

Foreword

We have not made nor will make insults or derogatory remarks; we simply point out that a lot of the problems that plague Forge today are a consequence, directly or indirectly, of its leadership.

Context

Lex was the lead of Forge for more than a decade, but has shown to have weak interpersonal skills, which consistently cause friction between team members10 and the community at large13. This friction is ultimately what led us to this point, and is also not unheard of in other communities. Linus Torvalds was in a similar position, recognized this, and took a long-term break to improve his behavior.

Demands

  1. Lex takes a minimum 4-month break from Forge to work on his interpersonal skills.
  • It has been claimed (and proven in practice) that while Lex was the main person working on Forge in the past, now most (if not all) areas of development have specific assignee(s), meaning that Forge will be able to continue development in Lex's absence.
  • A temporary leave is also an opportunity to discover what parts of the project suffer from a low bus factor, and what can be done to improve that.
  • Lex's presence in the community has largely shaped Forge's public reputation:
    • The community still sees Forge as a place which you join to get banned. Unfortunately, this is still true to this date (and is proven by the examples given in previous sections). Lex is known to be trigger-happy in using his moderation powers and such practices are adopted by other moderators, as that's the example the Project owner sets.
    • Lex rages about any slight mention of coremods, direct or not, needed or not, accidental or not, which has driven away modders, as the extreme "always suggest a PR" ideology Lex strongly enforces is impossible in practice, with many use-cases being niche or with the Core Team refusing to even look at such PRs. Basically, Forge "controls" what mods people make by deciding whether to support the person or moderate them.
    • Lex actively damages the community. To quote his own words, "literally everything gives me [Lex] the right to insult people who i comment about"13. This attitude actively harms people seeking for help and further damages Forge's reputation.

Footnotes

  1. Except of the Events of May 28th
    [12:13 AM][on strike] matyrobbrt: https://emi.dev/blog/mappings-and-maven/
    "Forge is reluctant to wholy and fully embrace it, still maintaining SRG and partially using it for runtime remapping."
    "ForgeGradle only allows you to use Mojmap. Mods are built from Mojmap into Mixed SRG"
    ...
    <in reply to above>
    [1:39 AM]Lex: jesus fucking christ do i reall have to read and respond to this crap..
    [1:40 AM][on strike] matyrobbrt: :stabolb:
    [1:41 AM][on strike] matyrobbrt: I mean, that was just someone who was pained by multiloader dev sharing their experience in more words than scis essays
    [1:41 AM][on strike] sciwhiz12 πŸ”°: you have to do nothing, really
    [1:42 AM][on strike] sciwhiz12 πŸ”°: you could read it, if you want
    but you can let another read it and respond
    [1:42 AM]Lex: there is a point
    [1:42 AM]Lex: where i get so fucking tired
    [1:42 AM]Lex: of trying to descibe basic concepts topeople
    [1:43 AM]Lex: that honestly unless they have gone through the court experiances and legal procesdings that i have
    [1:43 AM]Lex: they will never understand
    [1:43 AM]Lex: remember this, i've been modding systems FAR before Minecraft was a twinkel in Notch's eye
    [1:44 AM]Lex: I've gone through the legal battles over copyrights and how far we can strech fair use and legal coulpability
    [1:45 AM]Lex: people just dont fucking get it
    ... ↩

  2. Excerpt of the Events of June 22nd
    [11:11 AM]CodecSerializable (ping ok): Modders were not required to name pools in 1.19
    [11:11 AM]CodecSerializable (ping ok): I may be misunderstanding you here, so, to clarify: are modders required to name pools in 1.20?
    [11:11 AM]TelepathicGrunt: I did not need to ever name my loot table pools. Don't believe? Load up my mod on any past mc forge version...
    [11:11 AM]Commoble: mods have never been required to name loot pools
    [11:12 AM]CodecSerializable (ping ok): If the intention is to require mods to name their pools... That would be a silly idea. If that is not, then I've misunderstood what the issue is here
    [11:12 AM]Commoble: if it was the intention that they were, 1) it was never communicated to anyone, and 2) it's a bad idea anyway, the vanilla schema should be valid
    [11:13 AM]Lex: The intention is to have mods name their pools. As that is how loot modifiers are indented to work. Wither it is enforced or not should behave exactly like 1.19.
    [11:13 AM]Lex: IT SHOULD BEHAVE EXACTLY LIKE 1.19!
    [11:13 AM]Commoble: okay good
    [11:13 AM]Lex: Is that clear enough for you?
    [11:13 AM]pupnewfster: which is what broke because what is passed as custom changed
    [11:14 AM]Commoble: 1.19 didn't enforce it, so we should fix it so it's not enforced in 1.20 either
    [11:14 AM]TelepathicGrunt: 1.19 allowed no pool names to be used. It was never enforced in 1.19.
    Again, load up any 1.19 mod with loot tables in 1.19 forge and you'll see they work without any logging or error despite not naming their loot table pools
    [11:14 AM]Lex: PERSONALLY I think yall are dumb and should just fucking name your pools because it allows a ton of flexibility for people who arnt you.
    [11:15 AM]Lex: But, complainers are gunna complain
    [11:15 AM]Lex: So again, The intention is that it works exactly like 1.19
    [11:15 AM]Lex: And pup has been assigned to address that intention
    [11:15 AM]Lex: End of
    [11:15 AM]TelepathicGrunt: No one ever needed to use pool names in my mod. No one ever requested that of me. No one has a use case ever for this with my mod. ↩

  3. Personal Attacks (Continuation of the Events of June 22nd) (Private Channel)
    [11:02 AM] lexmanos: probably, anyways gunna go back to not comment about it in public as commonable doesnt have reading compresion
    [11:05 AM] lexmanos: As for Telepathc Grunt can fuck right off. "I dont want to use a keyboard i prefer typing by having a butterfly flap its wings and refract magnetic energy from the sun" .. Just fucking use data gens, we're not gunna bend over backwards to people who wanna do things the hard way.
    lexmanos: Honestly, i dont know its up to you guys. Thats the conclusin i got. Requiring modders to put in miniscule amounts of effort was asking too much ↩

  4. Lex deleting messages that call him out (Private Channel)
    https://cdn.discordapp.com/attachments/1117502393760874547/1121510458805997639/image.png
    https://cdn.discordapp.com/attachments/1117502393760874547/1121510471862866090/image.png ↩

  5. Above the Code of Conduct
    https://cdn.discordapp.com/attachments/1117502393760874547/1121511199843037425/image.png
    [12:29 PM]Lex: We don't need a long conversation, we've had it multiple times. There is nothing that will change my personality.
    If you wanna have a conversation about just throwing out the CoC then i'm down for that. As it was IMO only created to appease people and honestly we shouldn't of done it.
    As for making it personal, no idea what he said, but nothing about any of this situation was personal. ↩

  6. Case 2183
    [7:28 PM]Lex: -.- and you ping me again
    [7:28 PM]Sam: It is unintentionally and unemployment
    [7:28 PM]Lex: Are you using forge? Is this aa vanilla mechanic?
    [7:30 PM]Sam: Bone I use a command that does a minecraft function that is the /tittle but is focused on making animations with a modified texture pack
    Image
    [7:31 PM]Lex: ?warn @Sam Stop Posting Pictures it doesnt fucking help and is a pain in the ass for people to read
    [7:31 PM]BOT Dyno: :dynoSuccess: ItsSammy#9808 has been warned. || Stop Posting Pictures it doesnt fucking help and is a pain in the ass for people to read ↩

  7. Case 2244
    [9:29 PM]parkNanos();: Then, you say don't hack shit and PR the required functionality
    [9:30 PM]parkNanos();: I do a PR
    [9:30 PM]parkNanos();: you start saying why the fuck do you PR this is useless
    [9:30 PM]Lex: Again I asked why
    [9:30 PM]CodecSerializable (ping ok): Regardless, I don't have time to argue with you lex. If you're an ass to people, don't expect them to give you any respect in return. That sort of thing is a two way street
    [9:30 PM]Lex: and you threaten to hack shit
    [9:31 PM]parkNanos();: Because i want to append commentary to existing one without writing it manually inside comment call
    [9:31 PM]/tea/illy: can we not?
    and if we're going to discuss an API can we do it in the non meme spam channel to get more eyes on the idea
    [9:31 PM]Lex: ?mute @CodecSerializable (ping ok) 2d I'll come back to you when I'm at work. But for now you're just been an argumentative ass all day.
    [9:31 PM]BOT Dyno: :dynoSuccess: lukebemish#6306 was muted | I'll come back to you when I'm at work. But for now you're just been an argumentative ass all day.
    [9:32 PM]Lex: park, protip
    [9:32 PM]Lex: dont explain your shit here
    [9:32 PM]Lex: do.it in your pr
    [9:32 PM]Lex: and dont have to be prompted for the "why"
    [9:34 PM]Lex: If you do.it here, you get my direct responses. Which tend to be blunt and annoyed. If you do it in your pr then you get the triage team which is specifically there to be nicer then me
    [9:34 PM]parkNanos();: You're the team lead, you have final decision over changes, and you reject them, so i think we're done here
    [9:35 PM]Lex: I dont have the final say, I have A final say
    [9:36 PM]Lex: but ya your system seems to be of no use to the java community, and can be done with the normal hacks your language provides. So if that's what you want to hear. then yes it's of no use ↩

  8. Case 2370
    [1:55 PM]1XtReMeGaMeS1: this server is completely useless and hopeless then
    [1:55 PM]Banger honzo: https://pastebin.com/HriR7xpF
    Pastebin
    ---- Minecraft Crash Report ----// Oops.Time: 2022-12-11 22:52:11De...
    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
    [1:55 PM]1XtReMeGaMeS1: but thankyou for trying
    [1:55 PM]1XtReMeGaMeS1: I can see why people are leaving forge for fabric. they were right about the lack of support...
    [1:56 PM]FinnT730: are you going to help us support 40+ versions of Forge?
    [1:57 PM]FinnT730: only latest, and the one before latest (so 1.19.2 and 1.18.2) are supported, because there is not enough manpower around to support all versions, AND, everything changes, with each update, hard to keep track of what changed
    [1:58 PM]Lex: the hell does that have to do with installer you're having issues with. And again thats caused by optifine which we dont support.
    [1:59 PM]Lex: ?ban @1XtReMeGaMeS1 Goodbye, Nothing of value was lost. Its not our problem you refused to update after 6 years.
    [1:59 PM]BOT Dyno: :dynoSuccess: 1XtReMeGaMeS1#8973 was banned | Goodbye, Nothing of value was lost. Its not our problem you refused to update after 6 years.
    ↩

  9. Case 2479
    [2:52 PM]BlameHippo: I write stuff in Python.
    [2:53 PM][on strike] matyrobbrt: is it a children account
    [2:53 PM]Curle: No
    [2:54 PM]Lex: Why do you have netflix if you havent used it in years?
    [2:54 PM]Lex: Waste of money
    [2:54 PM]Lex: ?mute @BlameHippo 1h Youre annoying
    [2:54 PM]BOT Dyno: :dynoSuccess: Hipposgrumm#9926 was muted. | Youre annoying ↩

  10. Commoble's Warn
    [1:32 PM]Lex: Or.. OR... Get this.. if we KNOW that's a want.. we can provide a simple implementation that is API simplistic/forward compatible that allows for this. Just off the top of my head IItemHandler filtered(Predicate filter) mm yes, single function of exposed api with an explicit purpose. Much nicer
    [1:32 PM]Shadows: Great and now you want one that filters and also updates the BE's markDirty
    [1:32 PM]Shadows: That leads to exponential growth
    [1:32 PM]Lex: Not really
    [1:32 PM]Commoble: I guess I could just make a library mod that reimplements ItemStackHandler but everything is public
    [1:33 PM]Commoble: then I could jarjar it into the rest of my mods
    [1:33 PM]Monica: in that case, IItemHandler filter(IItemHandler store, Predicate filter) and IItemHandler onChange(IItemHandler handler, OnChangeHandler callback)
    [1:42 AM]Lex: /warn user: @Commoble reason: Rule 9. "Fuck it I don't want to articulate things so i'll jsut maky my own both blackjack and hookers!" ↩ ↩2

  11. Sci's Mute Attempt (Private Channel)
    Lex β€” 28/05/2023 12:40 ?mute @[on strike] sciwhiz12 πŸ”° 2h
    Dyno BOT β€” 28/05/2023 12:40 :dynoError: That user is a mod/admin, I can't do that.
    Lex β€” 28/05/2023 12:40 fuck you bot
    [on strike] sciwhiz12 πŸ”° β€” 28/05/2023 12:41 seriously?
    Lex β€” 28/05/2023 12:41 yes you're being an ass in public again and its fucking pissing me off
    [on strike] sciwhiz12 πŸ”° β€” 28/05/2023 12:42 I am pointing out what I think should be pointed out
    if that means pointing you towards the Code of Conduct of this community, which you agreed to and are bound by, so be it
    in any case, I will now refer this matter to @Curle.
    Lex β€” 28/05/2023 12:52 I have done nothing that violated the code of conduct, i am stating an opinion on an article as I am reading it. Not making personal attacks twards the person more the statements in the article. You are just being an argumentative ass. ↩

  12. ItemStackHandler debacle and dismissiveness
    [1:54 PM]Shadows: What amalgamation will come out of attempting to solve this problem this way? It sounds like we're heading towards an implementation where a lambda is backing every method
    [1:55 PM]Shadows: instead of allowing a class to be extended
    [1:55 PM]Lex: Would most likely be exposed as some form of 'internal reference' Because people have articulated wanting to be able to access/bypass checks for their own instances.
    [1:55 PM]Ferri_Arnus: Stack limit and valid item checks as well...
    [1:55 PM]Commoble: I have this ItemStackHandler that overrides isItemValid to return false, because it represents the crafting output slots in a furnace block. This made sense to me at the time. https://github.com/Commoble/jumbo-furnace/blob/main/src/main/java/commoble/jumbofurnace/jumbo_furnace/UninsertableItemStackHandler.java
    [1:55 PM]Lex: We might be, I don't know that would come up when we get a full list of wants.
    [1:56 PM]Shadows: "we might be" is very very concerning
    [1:56 PM]Shadows: You're proposing sidestepping OOP principles for the sake of api lockdown
    [1:56 PM]Lex: Your concerns are noted and we'll keep it in mind.
    [1:56 PM]Shadows: doubt it
    [1:56 PM]Lex: Stop being a dick. ↩

  13. Lex's View on Insults (Continuation of the Events of May 28th)
    [2:34 AM]Lex: maty
    [2:35 AM]Lex: literally everything gives me the right to insult people who i comment about. The issue is if they take it as a personal attack
    [2:35 AM][on strike] sciwhiz12 πŸ”°: the FG repo wiki's docs were outdated for a very long time, the FG6/FG5 official docs branches only came into existence this year
    [2:35 AM]Shadows: That's not how insults work :Thonk:
    [2:35 AM]Lex: if they take it seriously and more then a passing comment [2:35 AM]Lex: thats on them
    [2:35 AM]Random: ok it's not about rights (and "doesn't give you the right to insult" was definitely poor phrasing on maty's part) ↩ ↩2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment