Attempting to Contribute to Godot: A Postmortem ToddMitchell, August 1, 2024September 14, 2024 A complete timeline from the moment I noticed an error to the time I closed my pull request, deleted the attached code, and swore off Godot completely If you caught my last post about contributing to Godot, you know that I recently found a small mistake in the documentation for the TileMap system and felt obligated to take a moment to help, since I have used and benefitted from Godot, as I have done for other open-source projects in the past. This required me to read through loads of documentation about the documentation, find the right place and method to make the change, and then follow the process for creating a pull request so the change could be pulled into the repository. You may also recall things got chaotic after that. Well, friends, things continued in the direction of madness. I’ve been pushed so far at this point that I deleted the pull request and gave up on the change. In fact, I deleted my whole forked repo in hopes that I would never hear about this issue again. In FACT, I sort of doubt I will use Godot at all anymore, after getting this glimpse under the hood, and I’ll explain my thinking on that. First, a timeline of events. What it looked like to try to correct one word in the Godot documentation 7/13/24, morning – In revisiting an old 2D game project idea, I needed a refresher on the TileMap system. I noticed the documentation used the word “layouting,” which is not a word at all. 7/13/24, afternoon – After a crash course on how Godot’s documentation is structured and how to submit small changes, I forked the repo, committed a change in the browser (nowhere does anyone ask contributors not to do this, and it will come up later) and submitted a pull request. 7/13/24, 4:22 PM – A Godot person, we’ll call him Godot Person 1, comments, suggesting his own rephrasing of the sentence. My proposal includes that a TileMap may contain several “layers layering tiles on top of each other.” Because that’s what the layers are doing. This is 100% grammatically and technically correct. This is what’s happening. He doesn’t like the words “layers” and “layering” next to each other, which I find pretty picky for documentation that previously used the word “layouting” which, again, does not exist. “What about “laying out?” he asks. “This would be the correct form of ‘layouting’ while avoiding repetition.” There is no correct form of “layouting.” “Layouting” was a grammatical hallucination someone had. 7/13/24, 4:30ish – I reply to explain to Godot Person 1 that “laying out” as a concept refers to an arrangement of items in close proximity, but not stacked like in this situation. As an alternative, if they just don’t like how “layers layering” hits their ears, even if that is what is happening, I suggest we simplify and say “a TileMap may contain several layers of tiles on top of each other.” I may sound fiddly here, but words have meaning, and this is a technical software project. If I were contributing code to the rendering system, I couldn’t just round all my decimal values up to the nearest 10th integer. That would remove precision from the information, and that makes it less useful. Godot Person 1 does not reply, but adds several labels and milestones to the request. I don’t know what any of it means. 7/13/24, 4:30ish – I see that Godot Person 1 has also added a request that I amend my commit with a “human-readable commit message.” I was careful to add very specific notes to the commit description, much longer than the actual change being made, so I thought this may be a mistake. 7/13/24, 5:15 PM – Godot Person 2, who reminds me of the old Seagull Manager joke, leaves a new comment. “That whole line could use rewording to be honest. Neither the original or this PR’s are to my liking due to the awkward wording.” This feels like very big talk from the team that’s currently using fake words in their technical documentation. At this point, I’ll freely admit I start getting lippy. 7/13/24, 5:30ish – I reply to Godot Person 2. “I think there’s a big difference between the original that contained a word that isn’t real and anything that contains all real words, but that’s up to you all.” While I’m at GitHub, I change the title of the pull request from the default “Update <filename>” which they mention in the notes they don’t want to something “human readable.” Surely this will satisfy the commit message issue? (No.) 7/13/24, 5:43 PM – Godot Person 2 responds. “I mean, the word in the PR is an improvement of course.” Then fucking approve it, would be my position, but I am mentally done with the issue and no longer care what happens. 7/13/24, shortly thereafter – Godot Person 2 adds a couple more labels and vanishes from the thread, never addressing my alternative suggestion, nor giving a specific suggestion of his own. 7/31/24, 4:30ish – Nearly 20 days passes, and for all I know, this pull request has been launched into the sun. I’ve written a bit about the experience and moved on. Godot is now the furthest thing from my mind. A Godot Person 3 appears, leaving a new comment. “Suggested Change: A TileMap may have several layers, allowing to stack different tiles on top of each other.” You can probably spot the problem with that. Immediately thereafter – Godot Person 3: pushes a commit, presumably implementing the (incorrect) sentence he came up with. Pushes another commit containing I-don’t-know-what. Approves the pull request now that it contains his explanation and not mine. He then marks the comment thread he conducted with himself as Resolved. I was done with this, but that was worth replying to. Well, not worth replying to, but I couldn’t stop myself anyway. I marked the conversation as Unresolved and replied: “Allowing to stack different tiles on top of each other” is also incorrect. He replies: “How so? You said yourself that what was described here was stacking. <he quotes my earlier explanation and continues> I just paraphrased your suggestion. I thought it was an interesting tone to take with a volunteer, and a very generous description of what he’d just done. I reply: You actually both changed the meaning of my suggestion (the layers themselves are on top of each other, not just the tiles) and made it longer (replacing “of” with “allowing to stack different”), so that’s not paraphrasing. Further, if you’re using “allowing” in a sentence, you also have to explain who or what is allowed like “allowing you” or “allowing the user.” He replies: Fair enough, I won’t try to improve that one and restore the previous suggestion. He undoes everything he did previously and leaves a comment in the main thread: I think “layers layering” is an unfortunate repetition, so I’d prefer a different phrasing that avoids the redundancy. Redundancy, of course, is when two things or even people are doing the same job. This, on the other hand, is a plural noun and a verb explaining an object and the action it’s taking, so it doesn’t actually fucking matter what that sounds like in your ears. While we’re on the topic of “fair enough,” it seems wild to put out word that you need volunteers to help with the docs, and when one comes along with a small improvement, three other contributors sandbag them for three weeks, likely to get their name attached to a new change. Meanwhile I don’t give a shit about any of this anymore, including the engine itself, and genuinely just thought it might be helpful for devs to find a meaningful sentence here in the future. 4 hours ago – Godot Person 4 appears. Please amend the commit to use a human-readable commit message… Remember the moment in Parks and Rec when Ron Swanson has had enough and throws his PC in the dumpster? This is the moment I closed my own request, deleted my forked repo, and made a mental note to check in on MonoGame later. But should that reflect on Godot itself? I would answer that question with another question and admit I don’t entirely know the answer: If this is how contributions go on the documentation side, how good could the code side possibly be going? I browsed open PRs to see what I could learn about this. While it’s interesting that Godot has no shortage of open PRs that are five or even six years old now, even the most hotly commented PRs seem to maintain an amicable tone among contributors, worlds different from what I experienced. It’s difficult to tell without deeper investigation what accounts for the difference. Maybe the regular code contributors know one another better and tend to get along. I make friends easily enough when I’m not getting dogpiled in return for volunteering. Nobody tried with me. Perhaps this was such a small change they suspected I just wanted to get my name on some contribution list somewhere. To that I would say I don’t even know if such a list exists, much less do I care about it at all. If there’s going to be that style of gatekeeping, my suggestion is to prevent the pattern entirely by cleaning up the documentation amongst yourselves. But, again, I have experience in development, QA, technical writing, journaling, editing, and even authoring. I wasn’t a bad bet, and if this had gone better, I would have probably started contributing all the time. Instead, it will be a long time before I bother contributing to open source again, if ever, and that sucks. So I have to suspect that, even if the code side is going great, the Godot team is definitely going to have some diminished ability to communicate what they’ve done and keep thorough, accurate documentation if every fresh pair of eyes is effectively gouged out like this with attitude and crosstalk. Furthermore, I’ve been coding for 20+ years. A fully-featured game engine is a convenience for me; it’s damn sure not a requirement. If I can only have it in exchange for bad vibes, I’ll pass. I’m not suggesting anyone else abandon Godot, and I still hold out hope that they’ll move past the sticking points that are keeping the project from jumping from good to great. I do think new contributors should approach with caution and weigh what kind of work they want to put in without being sure how things will go in the review process. But hey, I’m sure that’s sound advice for any project. Share this:FacebookXLike this:Like Loading... Culture Game Development communitygame enginesGameDevGodotindie development
Culture now.gg CEO, Rosen Sharma September 16, 2021July 11, 2024 Former McAfee CTO Rosen Sharma–now CEO of BlueStacks, now.gg, and Game.tv–discusses his transition into gaming and where software distribution in the industry may be headed, including his thoughts on a future beyond mobile app stores. It may come sooner than you think. Share this:FacebookXLike this:Like Loading... Read More
Culture Here’s What You Need to Know About Streamlabs November 17, 2021July 11, 2024 Amid accusations of plagiarizing, exploitative trademarking, copycat products and services, and predatory customer policies, the company’s grips on ownership and fairness may appear tenuous. Share this:FacebookXLike this:Like Loading... Read More
Game Development Tracking To-Dos in VS Code October 24, 2023September 14, 2024 Let’s talk about tracking tasks while you knock them out Share this:FacebookXLike this:Like Loading... Read More