In the spirit of egoless programming, egoless programming is a terrible idea.
In a setting like tiddlywiki where there are very large differences in comfort and experience of the contributors, it just serves to create a toxic environment for the less experienced and more vulnerable members.
If you need an example, if someone were to look at the code for Bob – which is a personal project that I am rather invested in – and say ‘why did you do it this way? It is stupid’, it would have no real effect on me. I am established in my career and know enough about what I am doing to either know that it is indeed a terrible idea and should be fixed and it is that way because I haven’t fixed it yet, or to know that it isn’t a reasonable criticism and be able to explain why.
If someone said that to me about something I made 15 years ago it would have been a completely different situation. I wasn’t experienced enough to know if the criticism was warranted or not, I wouldn’t know how to explain one way or the other, I would have just been discouraged and due to factors that have absolutely nothing to do with coding or tiddlywiki I would not have had the ability to deal with that sort of toxicity so I would have just left.
If someone has to put up with hostile environments in their daily life, they have far less energy left over to address attacks, despite the attacks being prefaced with ‘it isn’t anything personal, it is just about the code’. And yes, it is an attack, it may not have malice behind it, but the intent behind it doesn’t really matter to the one it is directed at. Trying to deny that it is an attack just invalidates the person affected by it and shows a complete lack of respect for them as a person.
In a situation where there is no hierarchy, everyone is in a secure position, and everyone has a similar level of proficiency, a very careful version of egoless programming can work. Some of my projects are with close friends who I have known for well over a decade and everyone is experienced, and for those projects everyone is very harsh in their critiques, but the difference between the social and development aspects of our interactions are well understood. For a group like the tiddlywiki community, there isn’t really a difference between the social and development aspects of most relationships. In every instance where I have seen egoless programming in public projects, it has been used as something for people in secure positions to hide behind while harassing people in less secure/less knowledgeable positions. Even if that were not the case, if you look at the 10 commandments of egoless coding they are all things that require a lot of experience. For example, how can you ‘be kind to the coder, not to the code’ if you aren’t an experienced coder? Or ‘Treat people who know less than you with respect, deference, and patience’? While ‘punch up, not down’ is a good general rule in life there isn’t a way to judge which one is which here. Status and position is a very complex subject and someone who is proficient in coding isn’t necessarily in a secure position otherwise and, as much as we may wish they were, different aspects of life are not independent. Like I said in my example above, things completely unrelated to tiddlywiki do matter.
Despite the efforts of everyone involved, there is a hierarchy here. Criticism from me on most things would have much less of an impact on a conversation than the same criticism from Mario or Jeremy.
And for me, in both an aesthetic and technical way, the core should not do everything. TiddlyWiki has an amazingly flexible plugin system so the core can, in principle, be extended however a person wants. Anticipating all of the potential extensions and adding them to the core would just make the core bloated and difficult to work with.
As a post script about the egoless programming, the following quotes demonstrate some of my problems with egoless coding:
responding to someone not interpreting what you say the way you want it to be interpreted as though it is necessarily a failure on their part because they don’t understand what you meant and then interpreting it as a personal attack seems at odds with the ‘you are not your code’ aspect of egoless programming, although in this case it would be ‘you are not your explanation’.