Endless Sky Development Manifesto #8982
Replies: 10 comments 64 replies
-
It's just a quick skim for the moment, but overall I think I like it. Thanks for writing this up, Amazinite. So far, I think my only regret/wish is that we didn't get something like this written up a year or two ago. |
Beta Was this translation helpful? Give feedback.
-
Firstly, this is a phenomenal work. 1. Implications of Developer focus
->: In theory, if everyone strictly followed the guidelines in "On Reviews and Approvals", this would be practically a non-issue; but I think it's worth going beyond merely implying that it's the case, and explicitly stating that part of the responsibility a content-focused developer is to form their own opinions before backing up the comments of a dev focused on another area. The additional implication of this, is that if they then do back those comments, their responsibility is to unpack why in a constructive manner that demonstrates that they have arrived at this conclusion on their own. It is important that a contributor can see that a developer has done their own investigation. 2. The Onus for Constructive Response
->: Now some of this can feel unintuitive or foreign to those with a lot of experience in corporate backgrounds, where it's somewhat normal for expectations to morph as time progresses, so I'll quote something I said in another discussion:
->: What this means is that we should understand it applies to a particular type of troublemaker lightly touched upon here:
In the case where a person responding to a PR in a review comment has come up against a wall of apparent intransigence on a point; if that person chooses combativeness instead of taking the effort to unpack and try to understand the PR author's reasoning then they (not the PR author) are instigating an inflammatory argument - even if the PR author becomes aggravated first. Failure at being constructive is an instigating action. GitHub is not a chat room (as was very clearly noted in this document); if people need to take a step back to take stock of their understanding, then they need to do that instead of choosing combativeness. ->: In particular, this is because it is an opportunity when a PR is brought up that is based on a misunderstanding - because that generally means that there's a lack of clarity in-game, which is always a problem worth looking at how to fix. ->: A Reviewer and an Author need to be able to agree on the Author's understanding of the problem to have a serious and constructive discussion about a change where the Author's understanding may be flawed. ->: When we fail to maintain this expectation, and instead allow people who struggle at being constructive to turn the expectation back on creators, typically (and particularly) long-term creators, we create a double standard that is very visible to newcomers. ...and this kinda feeds back into the responsibilities of a content-focused developer in 1. - because if a developer takes the time to unpack and do their own assessment they're always in the clear, but if they back someone else's comments without doing so, they can unintentionally reinforce the behaviour of someone who is creating this double standard. ->: TL:DR the onus for drawing out whatever information they need to get a correct understanding is on the Reviewers, not on the Authors. Other than these two things which are implied by, but not explicitly addressed in, this document. I think it's genuinely a pretty damn good piece which covers a very broad scope of areas very effectively. Bravo! |
Beta Was this translation helpful? Give feedback.
-
Similarly, there should be a style guide for the wiki pages themselves, along with accessibility guidelines for online content (such as having meaningful link names instead of |
Beta Was this translation helpful? Give feedback.
-
This looks like what we've needed for a long time. It clears up a lot of the misconceptions that I've tricked myself into while also providing what should hopefully be enough fluidity. I have a couple related thoughts, too.
|
Beta Was this translation helpful? Give feedback.
-
The sections about "troublemakers" and "hostility towards ideas" are disconcerting since it is vaguely defined and can be misused to simply squash dissent. Here are some possible interpretations.
If there is a plan to kick people out of the community based on being troublemakers or hostile to ideas, then that must be explicitly defined. It should also be universally applied. If a core developer is frequently abusive, they should be just as much at risk of being kicked out as a minor content creator. Otherwise, you just have a dysfunctional autocracy. Community Guidelines documents, such as this one will provide appeal procedures and enough detail (plus supporting documents and references), so that the rules aren't just used to squash dissent. I'll leave you with a quote, "A society that gets rid of all its troublemakers goes downhill" - Robert A. Heinlein, Time Enough for Love |
Beta Was this translation helpful? Give feedback.
-
I don't really have much to add besides agreeing with the document. Thanks for taking the time to write this up, this is a good foundation and hopefully will make contribution easier in the future. |
Beta Was this translation helpful? Give feedback.
-
I am happy to see some structure finally coming. |
Beta Was this translation helpful? Give feedback.
-
Well, people apparently expect me to write up a big long rebuttal or something to that effect. Sorry to disappoint, but I don't have any big rebuttals. Overall, I quite like this document. There's a few things that I'm not fond of, which I will elaborate below. But overall, the tldr is: "I like it, I just have a few small tweaks." Also, my apologies: An accidental switch to reader mode erased my first draft, so this is probably shorter and less detailed than it was originally. Reviewer / Dev RelationshipTo the best of my recollection, nearly every single one of our devs was appointed due to their expertise in a specific focused area or task. I am not saying that they are still focused there, or restricted to that, just the simple fact that they were appointed with the expectation that they would be primarily working on that area. By my quick recollection and skimming the list of people who have write permissions, we have: Code: 4 people Beyond this set of 8, we have 4 people who had no particular focus or specialty when they received their permissions: MZ, Amazinite, Pointedstick, and myself; which also have the unique distinction of all being appointed by MZ's instigation. As in, they were appointed because MZ decided to do so, not because anyone petitioned him to do so. Of these four "no particular focus", only two of us are currently active. Now, I consider it to be obvious that everyone is appointed for a reason, and particularly for those with areas of focus, their opinions in those areas of focus are very significant. But I think there is a tendency for devs (and people in general) to attach a bit too much importance to their own opinion when commenting on stuff outside their area of expertise. This leads directly to Amazinite's line:
I'm glad to see that it is mentioned here, and I think everyone needs to be a bit more discriminate about how they present their suggestions, objections, and requests for changes. I'd like to see more instances of devs breaking out their requests, for example, into comments and formal "request for changes." with the later being reserved for things that are within their experience. Note, I'm not saying that devs should restrict themselves to their focus, just that if they're commenting on something that they're not proficient in, they should flag it as. Maybe even by posting it as a "comment" while their "request for change" post just refers to what they have the skill, experience, and confidence in talking about. For example, someone with no skill in grammar should not be making decisions about what is or is not appropriate sentence structure. Now, on the flip side, every single one of our reviewers is an acknowledged expert in the community on the focus area of the team they are a part of. Some of these have even been offered the role of Dev, and declined for personal reasons. We should not be downgrading the opinions and reviews of these talented individuals to merely being people with opinions valued a little bit more than the average contributor. What I am geting at is that being made a Dev doesn't grant any special capabilities. Most of our reviewers are better than most of our Devs in the reviewers area of expertise, and they should be treated accordingly. Being made a Dev doesn't automatically grant someone newfound skill, experience, or even relevance on topics that they weren't familiar with before they became a Dev; and they should not be granted new standing just because of that title.
This part is somewhat inaccurate. While shouldering some of the load of the Devs was definitely part of their role, it was only half. The other half of the original intent behind the reviewers was explicitly to be a reason for a dev to merge something. If a code reviewer (or ideally, several) approved something, and no dev with code experience was available, a dev without code experience could comfortably merge it based on the approval of the code reviewers. Likewise for the other categories. They were quite literally supposed to be, effectively, mini-devs with dev-like authority within their specifically denoted domains. GitHub can't do that, though, so the next best alternative is giving them that trust and respect. This is the entire reason they get a title, additional permissions, and teams so that they can be summoned where needed. Specifically, because their opinion isn't merely a "some devs respect them", which doesn't need any title, but rather that the organization deems their opinions in their area of expertise to actually be authoritative. Intended very explicit hierarchy:
The admin position.As described here and as seen in practice, the admin position is stuck in a quartet of dichotomies: A: Trust.
B. Respect.
C. Action
D. Perception.
All this combined makes this position, unlike every other in the list, a role with very high levels of expectations and restrictions, combined with none of the permissions, personal agency, or even capacity to be involved in the very thing they are administering. In every other case the expectations match the permissions:
While it is true that we cannot separate these responsibilities without custom roles, to my understanding we could not separate these out even with them; since the only thing that would change is that an admin who wanted to do something would instead merely have to give themselves the role that provides the desired permissions. As such, with or without custom roles, anyone with the admin role will always have, either directly or indirectly, the capabilities of all other roles. In a large organization that has stand-alone servers and security processes there would be restrictions such as requiring a second admin or human resources manager to sign off on role assignations before they actually take effect in the system. My interpretation of the admin position as described and the dichotomies listed here is basically that this position description as written will likely continue to alienate people and frustrate people both in and out of the position; unnecessarily complicates things; and breaks with the pattern of trust given to holders of every other role. I would suggest that the "admin" position be moved to being a subset of developers. As in, admins are developers who have a focus on administration. Like other developers with focuses, they would be expected to largely focus on administration, but, also like other developers, they could work wherever and however their skillset allows. That simplifies things significantly, establishes clear pattern of responsibility, privilege, and responsibility; and eliminates the majority of the dichotomies. I suspect that this might also help with communication, too:
Hostility towards IdeasI am very glad to see this section here. I suspect it is one of the big reasons why there are so many splinter groups; not to mention a reason that many people keep their work private until it's ready to PR.
I've seen too many good ideas stomped on hard, often with unambiguous "Hard NO!" from people that are generally respected in the community. I think it's one of the reasons I have felt the community to be a hostile one, and I suspect that it's also a factor in why other places (such as on steam) sometimes label the discord in particular as hostile. While the proposed process is a good one, I'd like to expand on step 2, particularly during the discussion phase: 2a. Everyone focuses on how the idea could be used to benefit Endless Sky. As a general principle, if someone suggests or PRs something, the very first reaction should ALWAYS be "How can this benefit Endless Sky?" This isn't to say that everything must get in. Lots of stuff will have to be discarded over time. And being critical and examining things closely is a useful part of development. The important part is to get rid of the gut reactions and force the initial starting thought for everything into a positive "How can this help Endless Sky be better?" first step. If it turns out that it is unredeemably bad or otherwise needs to be dropped, then we have all the time in the world to do so. I'll just add here that random "thumbsdown" from basically anyone with a title or position falls into this category. It's entirely possible that we just meant "I've seen this, and at a first glance I'm not super excited with it, but I'll come back and get into it in detail later." But even with this being the intended message, a lot of people are going to assume "Oh, one of the maintainers hates this. So much for all my work." And perhaps even worse, other people are going to assume "Oh, one of the devs hates this, let's just point out all the problems to save the dev some time." And then there's the worst: When people see a thumbsdown and go "Oh, Dev X hates it, and I want to be seen as on the same page as them, so I'm going to critique the life out of this idea/PR." I guess, long story short, I think, as a general rule, I don't think anyone with a role on Github should be using the thumbsdown emoji, ever. It's never, ever, helpful or useful unless accompanied immediately by an explanation (for instance, a dev going "I think you should apply all the suggestions I marked with a thumbsup, and I think you should just dismiss all the suggestions that I marked with a thumbsdown.") Just a thought that came to me: Sometimes we get into a drive to close as many issues and/or PRs as possible, get those totals down. Every now and then it almost feels like a collective addiction. And in that sort of mindset, when the goal is to just get those totals down as fast as possible, there's a real drive to make snap decisions on things. "Nope, don't like this. closed". "Nope, don't think this will go anywhere. close" There's no rush. Getting the number down to any arbitrary point doesn't get us anything, and may well lose us much. Don't make snap judgments, don't rush to close something or condemn it just because at first glance we don't like it. Merges per day (or merges per week or per month)... Now that's a metric of how much progress we're making. Merely getting the PR count down, though, that's actually kind of problematic. On the Lead DeveloperI think you came to be termed the "Lead Developer" due to four primary factors:
I actually had several more reasons in my first draft, but they escape me right now. I'll add them in when I remember them. They were along the lines of the above reasons, though. If you truly want to reduce the amount of divinity we ascribed to you, or reduce the weight we pin to the "Lead Developer" role, then those four bullet points offer some ideas for you. I'd suggest focusing on the second pair, though. I'd very much rather not see you go inactive or have you degrade the quality of your reviews. :) |
Beta Was this translation helpful? Give feedback.
-
The people complaining about Zitchas being an Admin over the objections of Amazinite are missing part of the story. While I don't know the full story, I can tell you a piece that many of you are missing. Zitchas is an organization owner, a power that goes far beyond a mere admin. He can: create and delete repositories, change the powers of an admin, add or remove Github Sponsorship, delete the entire organization, and more. That power must not be granted to people that may misuse it. Our former fearless leader, @mzahniser, left the Endless Sky community. However, no creator ever stops caring about their creation. If things get too bad, he needs people who he trusts implicitly to act on his behalf to intervene. Speaking in hypotheticals, there are some directions the community could go that would be catastrophic. For example, an elitist dev team could expect the rest of the community to act as their servants, marginalizing content creators and admins. A demagogue could form a cult of personality, and write rules that keep them in power. Toxic individuals could push out everyone they disagree with. These hypotheticals are directions open source projects did take, and a direction we could go if unrestrained. This document seems to be directed at preventing that, which makes me suspect you see the possibility too. Personally, I trust the judgement of someone who spends his days and nights saving lives, over high school students. Yes, some of the devs are, or were recently, high school students. I will neither confirm nor deny that I am a teenager (:wink:). Just that the adolescent mind is still forming (NIH study, APA layman's overview, NIMH advice) and doesn't necessarily have the maturity to handle positions of unrestrained power. We can't all be Greta Thunberg. |
Beta Was this translation helpful? Give feedback.
-
Things that I sort of expected to be covered, but weren't:
And just my own general thoughts:Community-driven means that the community supports the game, either due to the developer being gone (in the case of abandonware, or the dev moving on to something else or dying) or not highly effective (solo/side projects). At the core, are a bunch of people who feel deeply for the game, and want to spread the enjoyment and fun they had to others, and pal around with people who also enjoyed the game. They're your highly active people, working on mods or updates or private servers years after the game has been released and left by the devs; some examples would be SW Galaxies, Warhammer Online, Project Zomboid, Kenshi... Beyond that core, you have the people who found the game, played a bit, and looked for the community for help or wonder what's going on. More people fall into this, but they're also more likely to have short stints of activity as they don't "attach" themselves to the project. And even further, are those who just play the game and barely deal with the rest of the community, either because of lurking, or lack of interest. Probably the largest group, they just wanted to play a game, nothing more. The whole "manifesto" seems like it's trying to gain a popular mandate to remove certain people and allow arbitrary content blocks. I'm not a fan of it, and think it needs to be reworked substantially. Of course, I've left the ESC server some months ago, and I honestly hadn't been paying much attention to it for years. As such, I know my opinion may not rate highly, but I still enjoy the game, and wish to see things for it improve. I remember those bad years of being unable to make substantial changes... |
Beta Was this translation helpful? Give feedback.
-
Historically speaking, we have not had any concrete documents or agreements stating how development of the game should be handled. Development processes have always been rather amorphous or ambiguous, passed on by word of mouth, trusting that those who explain the processes will do so accurately and that those who are learning them will understand them well. This was not much of an issue early on in the game’s history when the game was less popular and the number of core members and contributors was smaller, as disagreements within the more tight-knit group that we had were easier to handle. But as the number of core members and contributors has increased and our hierarchy has grown larger, particularly due to the creation of the organization on GitHub, infighting has become a consistent issue as a result of this ambiguity. The time has come that we must concretely define our terms, roles, goals, and ideals.
To this end, I've written a "development manifesto" which outlines these ideas and more. This document can be found here. Please provide feedback, as this document will inform future development of the game.
Beta Was this translation helpful? Give feedback.
All reactions