meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
nothingburger [2020/04/26 15:42] – [Some Telltale Signs of a Nothingburger project] revusky | nothingburger [2020/05/25 17:07] – revusky | ||
---|---|---|---|
Line 3: | Line 3: | ||
// | // | ||
- | At some point in mid-2008, I set myself the task of figuring out what the JavaCC " | + | As [[ancient_history|I describe here,]] at some point in mid-2008, I set myself the task of figuring out what the JavaCC " |
- | Practically everybody uses Git nowadays but back then the standard thing was CVS, which was what Java.net used. CVS may be more crufty and capricious than Git, but if it is a question of just getting an overview of the history of a codebase, CVS serves perfectly well for that purpose. | + | Practically everybody uses Git nowadays but back then the standard thing was CVS, which was what Java.net used. CVS may be more crufty and capricious than Git, but if it is a question of just getting an overview of the history of a codebase, CVS serves perfectly well for that purpose. |
- | Now, if I were a more masterful storyteller, | + | If I were a more masterful storyteller, |
//To all intents and purposes, **no** work had been done in those five years. **Nothing.**// | //To all intents and purposes, **no** work had been done in those five years. **Nothing.**// | ||
- | Now, to be clear, that is not to say that there was no commit record. However, none of it related to the real core, the guts of the codebase. | + | Now, to be clear, that is not to say that there was no commit record. However, none of it related to the real core, the guts of the codebase. |
- | Well, what I am describing is actually a general phenomenon, and I had encountered it before. Still, at the time, I did not have any terminology to describe it, and if there is a generally accepted term out there, I am not aware of it. Here is what I propose: | + | What I am describing |
// | // | ||
- | I realize also that // | + | I realize also that // |
- | So, using this new terminology, | + | So, using this new terminology, |
- | ===== Some Telltale Signs of a Nothingburger project | + | ===== Return to Planet |
- | | + | It occurred to me recently that there is a science fiction genre that characterizes quite well this nothingburger state of affairs. In a post-apocalyptic, |
- | - The //culture// of a nothingburger project is typically one of extreme fastidiousness, | + | |
+ | Now, in this scenario, suppose somebody shows up (from the past somehow?) who really has the technical know-how to take these machines apart, fix whatever problem, and put them back together. How is this priesthood going to react? I think it is obvious. They' | ||
+ | |||
+ | ===== Telltale Signs of the Nothingburger project ===== | ||
+ | |||
+ | | ||
+ | - The //culture// of a nothingburger project is typically one of extreme fastidiousness, | ||
- If you are naive (or masochistic) enough to try to engage the // | - If you are naive (or masochistic) enough to try to engage the // | ||
- When very minor changes to the code are made, patches that, by the principles of [[https:// | - When very minor changes to the code are made, patches that, by the principles of [[https:// | ||
- | One could surely list other important symptoms of // | + | One could surely list other important symptoms of // |
+ | |||
+ | At this point, let me be clear about one thing: I do not mean to say that one should not have a certain amount of structure and organization in how one goes about things. Rather, I am talking about a situation where this is all taken to such lengths that it creates a quite mentally oppressive environment. Come to think of it, I am sure that, on occasion, this is a factor in the original author(s) losing interest and abandoning the project! Many things in this life are a question of balance, after all. Yes, a reasonable level of hygiene is a good idea, but what we are talking about here is something more akin to [[https:// | ||
+ | |||
+ | Now, to be clear, a // | ||
+ | |||
+ | Now, as for the other point I mention above, this excessive reverence for " | ||
+ | |||
+ | Frankly, I have no more intention of competing with any of these people on // | ||
+ | |||
+ | As for my final point above, that the extreme overvaluation of minor patches will lead to the nothingburger project having an absurdly high version number, this is a frequent symptom, but not really a //sine qua non// either. However, we do observe it in the legacy JavaCC project, which is apparently gearing up for an 8.0 release. The fact of the matter is that, in its 17 years of open source history, that project has not had a level of forward evolution that would correspond to a single point release (0.8 to 0.9 say) by the approximate rules of Semantic Versioning outlined [[https:// | ||
+ | |||
+ | ===== Think of an Army with no Soldiers ===== | ||
+ | |||
+ | I have no doubt that there are certain people who will jump at any opportunity to twist and misrepresent what I am saying here, so I feel I have to be very very clear about certain things. By no means am I saying here that the //only// thing anybody can do of any value in a software project is write code. In fact, it is frequently the case that the most value that can be added at a given point is by doing things other than coding. For example, most (pretty much all) open source projects are sorely in need of better documentation than what they have. | ||
+ | |||
+ | However, the real issue here is one of balance. Suppose you were a journalist assigned to write some articles on the military and you are given access to various people to interview and profile. It turns out that all of these people and, in fact, every " | ||
+ | |||
+ | //This is an army with all officers and no regular soldiers.// | ||
+ | |||
+ | Would that not be completely surreal? How much expertise in military affairs would it take for you to realize that there is something very screwy going on? Of course, we could also imagine a situation where the journalist realizes all this but keeps it to himself, since he realizes that honestly reporting on this absurd state of affairs might be career suicide. In this story, one is not claiming that nobody should be doing any office work. A modern army is a very large bureaucratic organization and it is inevitable that there are lots of personnel engaged in accounting and record keeping and such. However, an army in which every last person has a desk job is an utter absurdity regardless. | ||
+ | |||
+ | ===== It's fun to be a superhero! ===== | ||
+ | |||
+ | We could shift that military metaphor a bit and get to another point, which is that the stance of people in a // | ||
+ | |||
+ | //Software, code, is not a **physical** machine.// | ||
+ | |||
+ | If your code is stored in a code repository such as Git, SVN, or CVS, you can restore it effortlessly to any previous state it was in. I recall on a mailing list hosted by Apache Software Foundation, this whole topic came up. It was about just how conservative the project was in terms of letting people commit code. One of the people there was making some comparison between allowing people to commit code and trusting your fellow mountain climbers. (Apparently, | ||
+ | |||
+ | I pointed out to him that the simile would be more applicable if, when you fell off a cliff at time t, and presumably broke all the bones your body, you had the capability of instantly restoring yourself to the state you were in at t-1 just before the fall. | ||
+ | |||
+ | //In essence, hacking code is a bit like being a superhero, who cannot really be hurt, like the Wolverine character in X-men.// | ||
+ | |||
+ | Wolverine can be beaten, stabbed and shot and his body just regenerates in short order to the state it was in before. (I grant that Wolverine still feels pain and it can be painful to have to back out your changes and revert to a previous state of the code, but the point is that Wolverine cannot be // | ||
+ | |||
+ | So, what is the agenda of somebody who likens mucking with source code to a physically dangerous activity like rock climbing? If you took the analogy with physically dangerous activities seriously -- rock climbing, deep sea diving, etc. -- yes, you would be very cautious about who you would allow to participate in such activities (people need proper training and so forth). Also, you would be right to be extremely fastidious about following all the established safety procedures! If the analogy were correct, the stance of these // | ||
+ | |||
+ | //But the analogy with the physically dangerous activity is completely nutso!// | ||
+ | |||
+ | No matter how irreparably you mess up the code, it can always be restored to the previous state anyway. Regardless, it would still not be comparable to falling off a cliff to one's death! In reality, the argument being made implicitly with this analogy is multiple degrees away from making any sense at all! | ||
+ | |||
+ | This leads us to another frequent symptom of // | ||
+ | |||
+ | //The insiders in a nothingburger project frequently **affect** that they don't understand how version control systems work.// | ||
+ | |||
+ | The // | ||
+ | |||
+ | - An extremely aggressive stance in terms of evolving the code forward, refactoring etcetera. (Because if you do some things that turn out to be a bad idea, nothing is lost anyway!) | ||
+ | - An extremely liberal, open stance towards letting people contribute. (Because newbie contributors can't really do any damage anyway! Especially, if you give them a branch to work on!) | ||
+ | |||
+ | Of course, a // | ||
+ | |||
+ | If you are foolish (or masochistic) enough to be engaging these people in discussion and you point out these things, the typical result is that they simply walk away from the conversation. (//One key anti-nothingburger measure must be that you have a culture in which it is **not acceptable** to simply walk away from a conversation. Either you produce a valid counter-argument, | ||
+ | |||
+ | ===== What is to be done? ===== | ||
+ | |||
+ | That you can diagnose an illness does not mean that you know how to treat it. If you really thought about // | ||
+ | |||
+ | //Even better than treatment would be prevention!// | ||
+ | |||
+ | Regardless, identifying the problem and having a name for it is a necessary initial step and hopefully, dear reader, we are on the same page on that. In that case, we would at least agree that // | ||
+ | |||
+ | - Real, i.e. not a figment of Revusky' | ||
+ | - A problem. (A big problem!) Thus, there is some value in thinking seriously about how to deal with it. | ||
+ | |||
+ | Now, let me say here, up front, that I don't actually know what the remedy is when an open source project has reached some advanced state of // | ||
+ | |||
+ | I recall some anecdote that might (or might not) even be true. A prominent engineering firm in job interviews of recent engineering graduates would ask them the question: //Suppose you drop your car keys into the middle of the ocean? How do you solve this problem?// | ||
+ | |||
+ | Apparently, the correct answer is: // | ||
+ | |||
+ | It could well be that a similar answer applies to // | ||
+ | |||
+ | Though admittedly, not as absolutely impossible as retrieving one's car keys from the bottom of the ocean, when a once healthy project has lapsed into // | ||
- | Now, I suppose the most typical pattern by which a software project becomes a nothingburger is that the original author loses interest, drifts away, and none of the people remaining, now the ostensible maintainers, | + | ===== Passive Acceptance |
- | + | ||
- | And this actually leads naturally to the second point, the culture of extreme fastidiousness. Now, to be clear, I do not mean to say that one should not have a certain amount of structure and organization in how one goes about things. Rather, I am talking about a situation where this is all taken to such lengths that it creates a quite mentally oppressive environment. Come to think of it, I am sure that, on occasion, this is a factor in the original author(s) losing interest and abandoning the project! This is actually a big topic that I will explore more in a later segment of this Nothingburger series. | + | |
- | Now, to be clear, a // | + | In any Psychology 101 course, one typically learns about the [[https://en.wikipedia.org/wiki/Milgram_experiment|Milgram experiment]] from nearly 60 years ago. This demonstrated just how conditioned people |
- | It occurred to me recently that there is a science fiction genre that may characterize quite well this nothingburger state of affairs. In a post-apocalyptic, post-industrial future world, human society has mostly devolved to its pre-technological state. However, the landscape is still littered with vestiges of the long-gone industrial civilization. Now, a few old machines are in reasonable state and still work. However, no current-day humans // | + | Though shocking in a way, the Milgram experiment does reflect my own casual observation. Not just in open source software by any means, I have been continually amazed at people's passive acceptance |
- | Now, in this scenario, suppose somebody shows up (from the past somehow?) who really has the technical know-how to take these machines apart, fix whatever problem, and put them back together. How is this priesthood going to react? I think it is obvious. They' | + | In Hollywood movies there is frequently some pivotal moment |
- | (I was trying | + | But that is Hollywood. |
- | Now, the next point, this excessive reverence | + | Now, I don't mean to say that these Captain Queeg moments //never// occur in real life. " |
- | Frankly, | + | I would also add that if these people ever did have any real exclusive right to use of the name, they really forfeited that right when they refused to even review contributions. It simply makes no sense for people to be able to remain |
- | As for my final point above, | + | That is my current position. I am satisfied |
- | I shall close this segment on Nothingburgerism here. The [[Nothingburger2|next segment]] will continue | + | At this moment, this essay is still a work in progress, which I intend to resume later and polish off, time permitting. At this point, I will leave things off by clarifying a simple point: I am not claiming to have any definitive answers or solutions to // |
- | (If you wish to engage in some discussion of this essay, you can do so here: https:// |