meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
nothingburger [2020/05/24 12:23] – [Return to Planet of the Apes?] revuskynothingburger [2020/10/02 01:54] (current) – [Passive Acceptance of Illegitimate Authority] revusky
Line 7: Line 7:
 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.
  
-If I were a more masterful storyteller, I would find some way of building the suspense, to keep you waiting with bated breath. But I guess I'll just get straight to the point. Here is the summary conclusion of my code review of the time:+Now, if I were a more masterful storyteller, I would find some way of building the suspense, to keep you waiting with bated breath. But I guess I'll just get straight to the point. Here is the summary conclusion of my code review of the time:
  
 //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.**//
Line 34: Line 34:
   - When very minor changes to the code are made, patches that, by the principles of [[https://semver.org|Semantic Versioning]], would only justify a minor point-point release, like 0.7.1 to 0.7.2, they are represented as significant new development. One corollary of this (though this symptom may or may not be present) is that a nothingburger project frequently sports an excessively high version number.   - When very minor changes to the code are made, patches that, by the principles of [[https://semver.org|Semantic Versioning]], would only justify a minor point-point release, like 0.7.1 to 0.7.2, they are represented as significant new development. One corollary of this (though this symptom may or may not be present) is that a nothingburger project frequently sports an excessively high version number.
  
-One could surely list other important symptoms of //nothing-burger-ism//, but they kind of blend in and interact with one another. I think the above points I outline, the first three in particular, are key. Perhaps the first point, this kind of bizarre reverence for the existing codebase is the most reliable sign that a project has devolved into //nothingburgerism//jj. It is also the characteristic that I myself find the most unsettling, maybe even downright spooky.+One could surely list other important symptoms of //nothing-burger-ism//, but they kind of blend in and interact with one another. I think the above points I outline, the first three in particular, are key. Perhaps the first point, this kind of bizarre reverence for the existing codebase is the most reliable sign that a project has devolved into //nothingburgerism//. It is also the characteristic that I myself find the most unsettling, maybe even downright spooky.
  
 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://en.wikipedia.org/wiki/Obsessive–compulsive_disorder|obsessive-compulsive disorder]]. People who suffer from OCD may wash their hands hundreds of times a day. They wash their hands and, a minute later, are obssessed with the idea that their hands are dirty, and feel compelled to wash their (quite clean) hands yet again. OCD, by the way, is a genuine mental illness and no laughing matter. By the same token, //nothingburgerism// is a psychosocial malaise, and also no joke. (Even if I do crack a few jokes when describing the situation...) 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://en.wikipedia.org/wiki/Obsessive–compulsive_disorder|obsessive-compulsive disorder]]. People who suffer from OCD may wash their hands hundreds of times a day. They wash their hands and, a minute later, are obssessed with the idea that their hands are dirty, and feel compelled to wash their (quite clean) hands yet again. OCD, by the way, is a genuine mental illness and no laughing matter. By the same token, //nothingburgerism// is a psychosocial malaise, and also no joke. (Even if I do crack a few jokes when describing the situation...)
  
 Now, to be clear, a //nothingburger// project is not the same as //abandonware//. Sourceforge and Github are full of orphan projects. However, nobody is trying to hide the state they are in or present them as active. The implicit metaphor in the //nothingburger// terminology implies some attempt at deceit. The //art of the nothingburger// is to present a bun with maybe some lettuce and tomato, a bit of ketchup or mayo, and somehow arrange a //trompe l'oeil// to trick people into thinking that there must be some meat in there. (Some real software development in this case.) But any close inspection reveals that there is no meat in the bun. The other key difference between a nothingburger project and simple abandonware is that the ostensible owners of the nothingburger project will do their level best to prevent anybody from coming in and doing anything. My best bet is that in the vast majority of cases, if you approached the owner of some abandonware project on Sourceforge and told him that you would like to pick up the project where he left off and do some work, he would be happy to let you in and have a go at it. Now, to be clear, a //nothingburger// project is not the same as //abandonware//. Sourceforge and Github are full of orphan projects. However, nobody is trying to hide the state they are in or present them as active. The implicit metaphor in the //nothingburger// terminology implies some attempt at deceit. The //art of the nothingburger// is to present a bun with maybe some lettuce and tomato, a bit of ketchup or mayo, and somehow arrange a //trompe l'oeil// to trick people into thinking that there must be some meat in there. (Some real software development in this case.) But any close inspection reveals that there is no meat in the bun. The other key difference between a nothingburger project and simple abandonware is that the ostensible owners of the nothingburger project will do their level best to prevent anybody from coming in and doing anything. My best bet is that in the vast majority of cases, if you approached the owner of some abandonware project on Sourceforge and told him that you would like to pick up the project where he left off and do some work, he would be happy to let you in and have a go at it.
 +
 +===== How about a Tanning Contest this Summer? =====
  
 Now, as for the other point I mention above, this excessive reverence for "stability" and "backward compatibility", on one level, it could be seen as a transparent rhetorical trick. After all, you always have perfect //stability// and //backward compatibility// by simply doing nothing! So can this ever be considered any sort of great technical achievement? If the competition is over who can be more "stable", the abandonware will win every time! Now, as for the other point I mention above, this excessive reverence for "stability" and "backward compatibility", on one level, it could be seen as a transparent rhetorical trick. After all, you always have perfect //stability// and //backward compatibility// by simply doing nothing! So can this ever be considered any sort of great technical achievement? If the competition is over who can be more "stable", the abandonware will win every time!
Line 44: Line 46:
 Frankly, I have no more intention of competing with any of these people on //stability// than I do of entering a tanning contest with an African to see who can sit in the sun and get blacker! (//Unless the African in question is a Boer from South Africa, in which case, I might consider it!//) Generally speaking, the willingness to enter into a rigged competition in which you will always lose is probably about the dictionary definition of a //sucker//, so taking this rhetoric about //stability// very seriously is effectively just a sucker's game. Frankly, I have no more intention of competing with any of these people on //stability// than I do of entering a tanning contest with an African to see who can sit in the sun and get blacker! (//Unless the African in question is a Boer from South Africa, in which case, I might consider it!//) Generally speaking, the willingness to enter into a rigged competition in which you will always lose is probably about the dictionary definition of a //sucker//, so taking this rhetoric about //stability// very seriously is effectively just a sucker's game.
  
-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://semver.org/|here]].+As for the 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://semver.org/|here]]. 
 + 
 +===== The 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. 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.
Line 54: Line 58:
 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. 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! =====+===== It must be nice 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 //nothingburger// project is entirely //defensive//. As I pointed out earlier, they have this outrageous, exaggerated fear of changing anything, particularly in the core code. As I said before, this led me to think of the future humans in the post-apocalyptic science fiction, who have a completely mysterious, mystical relationship with any of these remaining machines. I like the analogy, but I realized at some point that it actually understates the case. You see, the stance of the "priesthood" in that post-apocalyptic science fiction story is not entirely unreasonable. It actually makes sense to be very hesitant to muck with machinery that you don't understand. I myself have a somewhat similar relationship with most of the appliances in my home, and I would not mess with them. (Though I am happy to have a qualified repairman to fix my washing machine when it needs fixing.) But the thing is: we're talking about physical machines here.... We could shift that military metaphor a bit and get to another point, which is that the stance of people in a //nothingburger// project is entirely //defensive//. As I pointed out earlier, they have this outrageous, exaggerated fear of changing anything, particularly in the core code. As I said before, this led me to think of the future humans in the post-apocalyptic science fiction, who have a completely mysterious, mystical relationship with any of these remaining machines. I like the analogy, but I realized at some point that it actually understates the case. You see, the stance of the "priesthood" in that post-apocalyptic science fiction story is not entirely unreasonable. It actually makes sense to be very hesitant to muck with machinery that you don't understand. I myself have a somewhat similar relationship with most of the appliances in my home, and I would not mess with them. (Though I am happy to have a qualified repairman to fix my washing machine when it needs fixing.) But the thing is: we're talking about physical machines here....
Line 72: Line 76:
 //But the analogy with the physically dangerous activity is completely nutso!// //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!+No matter how irreparably you mess up the code, it can always be restored to the previous state anyway. And even so, 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 //nothing-burger-ism//: This leads us to another frequent symptom of //nothing-burger-ism//:
Line 78: Line 82:
 //The insiders in a nothingburger project frequently **affect** that they don't understand how version control systems work.// //The insiders in a nothingburger project frequently **affect** that they don't understand how version control systems work.//
  
-The //nothingburger artists// will frequently argue that it is extremely risky to let some "unproven" person (//except how is he supposed to prove himself?//) come in and do anything. Why? They might screw something up. Well, aside from the fact that code stored in a version control system can be restored to any previous known working state, there is also this feature that they all have called //branching//. If somebody shows up and proposes some ideas that you think are dubious, they can be given a separate branch to work on, and have a shot at demonstrating the worth of their ideas. What all of this suggests, by the way, is that the correct policy in running an open source project (at least if you want there to be any progress) is:+The //nothingburger artists// will frequently argue that it is extremely risky to let some "unproven" person (//except how is he supposed to prove himself?//) come in and do anything. Why? They might screw something up. (//This is also the general-purpose argument for never doing anything. It is the absolute guaranteed way to never make a mistake!//Well, aside from the fact that code stored in a version control system can be restored to any previous known working state, there is also this feature that they all have called //branching//. If somebody shows up and proposes some ideas that you think are dubious, they can be given a separate branch to work on, and have a shot at demonstrating the worth of their ideas. What all of this suggests, by the way, is that the correct policy in running an open source project (at least if you want there to be any progress) is:
  
   - 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 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!)
Line 124: Line 128:
 That is my current position. I am satisfied that it is correct. However, I am perplexed, quite frankly, that it took me so many years to realize this. Well, I can be quite slow at times. That is my current position. I am satisfied that it is correct. However, I am perplexed, quite frankly, that it took me so many years to realize this. Well, I can be quite slow at times.
  
-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 //nothingburger-ism//. Thus, I write this essay more to open a much-needed discussion than anything else. If you wish to engage in such a discussion, please go here: [[https://discuss.parsers.org/t/the-art-of-the-nothingburger/38|https://discuss.parsers.org/t/the-art-of-the-nothingburger/38]])+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 //nothingburger-ism//. Thus, I write this essay more to open a much-needed discussion than anything else. If you wish to engage in such a discussion, please go here: [[https://discuss.parsers.org/t/the-art-of-the-nothingburger/38|https://parsers.org/t/the-art-of-the-nothingburger/38]])