meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ancient_history [2020/02/13 23:55] – revusky | ancient_history [2020/10/30 15:57] (current) – [Another name change. JavaCC (21)] revusky | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | ===== Some Ancient History ===== | + | There are certain questions that I anticipate will be coming up over and over again, so I shall attempt to answer them forthrightly. In the following, I shall outline the history of all of this. People are free to dismiss this as my (Revusky' |
- | In its origins, the JavaCC | + | Now, actually, the history of JavaCC is not so easy to piece together. In its early days (the only time it was actively |
- | Now, first of all, let's put this part of the timeline in perspective. JDK 1.0 (now called Java 1 apparently) was released in January of 1996. JDK 1.1 was a year later, in February of 1997. At the risk of dating myself, I was involved with Java pretty much from the start. I believe the first JDK I downloaded (it took forever over a dial-up model connection!) | + | Since an earlier draft of this page, I had a bit of correspondence with Sriram Sankar, who was the project lead on " |
- | Doubtless, the original JavaCC project could have benefited from the collections library introduced in Java 2 but that came out nearly two years later, | + | ===== Let's start at the beginning ===== |
- | Now, Metamata, | + | In its origins, the JavaCC parser generator is a Java based tool of 1990's vintage. My original understanding of things was that it was developed in 1996 in a company called |
+ | |||
+ | I find this whole thing a tad confusing because it seems to me that if the " | ||
+ | |||
+ | Now, let's put this part of the timeline in perspective. JDK 1.0 (now called Java 1 apparently) was released in January of 1996. JDK 1.1 was a year later, in February of 1997. At the risk of dating myself, I was involved with Java pretty much from the start. I believe the first JDK I downloaded (it took forever over a dial-up modem connection!) was JDK 1.0.2. This was the original Java language. Inner classes were introduced a year later in JDK 1.1. But even that was was still Java 1. Java 2 (or JDK 1.2, as it was called at the time) was released at the end of 1998. | ||
+ | |||
+ | Doubtless, the original Jack project could have benefited from the collections library introduced in Java 2 but that came out nearly two years later, at the end of 1998. Well, the key point to take away from all this is this: //the entirety of the legacy JavaCC codebase was written against Java 1, the oldest, most primitive version of the Java language.// | ||
+ | |||
+ | Now, Metamata, Jack's (now JavaCC' | ||
+ | |||
+ | It is fairly easy to deduce that Sun did not ever allocate any real development resources to JavaCC in this period. By the time Sun released the code as open source in 2003, it was really | ||
===== Late 2001. My Own Involvement with JavaCC ===== | ===== Late 2001. My Own Involvement with JavaCC ===== | ||
- | My own involvement with JavaCC | + | My own first run at using JavaCC |
- | Something like JavaCC, yes, but at the time, I was hardly committed to using JavaCC specifically. At the time it seemed (as it probably does now) that the two main candidates were JavaCC and ANTLR. Though | + | This was actually the watershed moment when I became heavily involved with [[https:// |
- | One aspect of all of this is that, though I became very comfortable using JavaCC, | + | Yes, something like JavaCC, of course. But, at the time, I was hardly committed to using JavaCC specifically. At the time it seemed (as it probably does now) that the two main candidates were JavaCC and [[https:// |
+ | |||
+ | One aspect of all of this is that, though I became very comfortable using JavaCC | ||
Even though the JJTree approach, of having the tool automatically generate the code for the various ASTXXX classes seemed attractive, there just seemed to be something wrong with how it was set up. Little did I know that, some years later, I would put some serious work into remedying that whole problem. | Even though the JJTree approach, of having the tool automatically generate the code for the various ASTXXX classes seemed attractive, there just seemed to be something wrong with how it was set up. Little did I know that, some years later, I would put some serious work into remedying that whole problem. | ||
Line 23: | Line 35: | ||
===== Mid 2003, Sun releases JavaCC as open source ===== | ===== Mid 2003, Sun releases JavaCC as open source ===== | ||
- | For nearly two years after I took my initial steps with JavaCC, it was still a closed source product, so I could not have taken any interest in the source code even if I had wanted to do so. (Probably, I would not have wanted to muck with JavaCC source code anyway, since I had my hands full with FreeMarker.) | + | For nearly two years after I took my initial steps with JavaCC, it was still a closed source product, so I could not have taken any interest in the source code even if I had wanted to do so. (Probably, I would not have wanted to muck with JavaCC source code anyway, since I had my hands full with FreeMarker.) |
- | However, in 2003, Sun decided to release the JavaCC source under a very liberal (BSD-style) open source license. And they set it up as a project on [[https:// | + | However, in 2003, Sun decided to release the JavaCC source under a very liberal (BSD-style) open source license. And they set it up as a project on [[https:// |
- | Well, we now know that java.net never amounted to much. Everybody and his pet dog uses [[https:// | + | Well, we now know that java.net never amounted to much. Everybody and his pet dog uses [[https:// |
- | Well, Sourceforge is still around, God bless, but Oracle (which had acquired Sun) eventually turned off the lights on Java.net -- I guess, since it had become irrelevant and was more or less an embarrassment. But that was in April of 2017, so we are getting ahead of ourselves. Back in 2003, Java.net was new and was hot shit (or was supposed to be) and Sun wanted to prime it with some sexy open source Java projects and released the JavaCC code there to much fanfare. (This was not reported in Paris Match or People magazine, but all the computer rags mentioned it.) I have a hunch that the people behind this operation did not know what a god-awful mess the JavaCC code was. But that is maybe not the point. If this was brought to their attention, they could respond: //Well, that is the point of open-sourcing it! Now, any motivated java hacker out there can get to work cleaning up the code!// | + | Well, Sourceforge is still around, God bless, but Oracle (which had acquired Sun) eventually turned off the lights on Java.net -- I guess, since it had become irrelevant and was more or less an embarrassment. But that was in April of 2017, so we are getting ahead of ourselves. Back in 2003, Java.net was new and was hot shit (or was supposed to be) and Sun wanted to prime it with some sexy open source Java projects and released the JavaCC code there to much fanfare. (This was not reported in Paris Match or People magazine, but all the computer rags mentioned it.) I have a hunch that the people behind this operation did not know what a god-awful mess the JavaCC code was. But that is maybe not the point. If this was brought to their attention, they could respond: |
+ | |||
+ | //Well, that is the point of open-sourcing it! Now, any motivated java hacker out there can get to work cleaning up the code!// | ||
+ | |||
+ | I'm sure that's what they would have said, but it would have been, at best, only a half-truth. It is true that one could now download the code. And one could clean it up. And improve it. And extend it. I did exactly that, but it turned out that there was no possibility of getting this work incorporated into the canonical project hosted on Java.net -- which, let's face it, due to how the world really works, is what most people would use. | ||
+ | |||
+ | Or, in other words, you could download the code and do things, but without the right kind of people in charge of the " | ||
===== 2008, the year that China holds the Olympic Games, there is a Global Financial Crisis, and Revusky downloads the JavaCC code ===== | ===== 2008, the year that China holds the Olympic Games, there is a Global Financial Crisis, and Revusky downloads the JavaCC code ===== | ||
- | Now, personally speaking, in 2003, when the JavaCC source code was open-sourced, | + | Now, personally speaking, in 2003, when the JavaCC source code was open-sourced, |
+ | |||
+ | Also, before I checked out the code and started looking at it, I had no idea at all of what an awful mess the codebase was. Once I did, I became aware of that state of affairs quite quickly! | ||
One of the first things I did was to import all the JavaCC code into Eclipse as a project and many of the first refactorings of the code were not even my idea //per se//. You see, as I pointed out earlier, the JavaCC codebase was written against Java 1, well before most of the conventions in Java code became established. So, the Eclipse IDE emitted hundreds of warnings about problems (not errors exactly, which would prevent compilation) in the code. So, a lot of initial work on the codebase just amounted to getting rid of all (//or most, anyway//) of the warnings that Eclipse emitted. | One of the first things I did was to import all the JavaCC code into Eclipse as a project and many of the first refactorings of the code were not even my idea //per se//. You see, as I pointed out earlier, the JavaCC codebase was written against Java 1, well before most of the conventions in Java code became established. So, the Eclipse IDE emitted hundreds of warnings about problems (not errors exactly, which would prevent compilation) in the code. So, a lot of initial work on the codebase just amounted to getting rid of all (//or most, anyway//) of the warnings that Eclipse emitted. | ||
- | So, it may well be that the way my hacking of the Java code began was just from importing all the code into a modern (for that time) IDE and trying to get rid of all the warnings messages. Of course, once I got rid of most of the warning messages, I started seeing all kinds of places in which to clean up the code. So it started taking on a life of its own. | + | So, it may well be that the way my hacking of the Java code began was just from importing all the code into a modern (for that time) IDE and trying to get rid of all the warnings messages. Of course, once I got rid of most of the warning messages, I started seeing all kinds of places in which to clean up the code. And then it started taking on a life of its own. |
+ | |||
+ | Not long into this whole process, I tried to establish contact with the JavaCC " | ||
+ | |||
+ | Of course, in retrospect, perhaps all of this is hardly surprising. I don't know whether I had any specific terminology at the time for this, but nowadays, I would say that JavaCC was (and, as far as I can see, //still is//) a [[Nothingburger|Nothingburger Project]]. Now, that might seem contradictory at first blush, since there was a real tool there, that was quite useful; I myself had been using it for over six years at that point. And it is still widely used to this very day. However, let's be clear: that tool was developed as closed source inside a company. What I mean is that, //as an ongoing open source project and community//, | ||
+ | |||
+ | I felt the need to write a [[Nothingburger|separate article about the concept]] but I think a key characteristic of a // | ||
+ | |||
+ | //Even if there is an outward appearance of activity, none of it really pertains to the core codebase. It is all ancillary activity that revolves around things like setting up the build system or some other reorganization that does not touch the core of the code. In fact, the ostensible maintainers of a " | ||
+ | |||
+ | This last point is quite important, I think. The typical situation is that the original author(s) (having scratched whatever itch) leaves the project and this was the only person who really understood how the code worked, how it was put together. | ||
+ | |||
+ | Then, the remaining people develop this kind of bizarre pseudo-religious reverence for the code. //It is beyond the capacity of normal, mortal men to understand the core code, and certainly, to do anything with it.// | ||
+ | |||
+ | When I attempted to donate work to the JavaCC // | ||
+ | |||
+ | In a way, Pizey' | ||
+ | |||
+ | ===== Mid 2008 to early 2009, the FreeCC " | ||
+ | |||
+ | By mid-2008, I had put enough energy into the JavaCC codebase that I did not want to abandon it. The only option left to me was to create my own //fork// of the codebase. (In retrospect, it was not really a //fork// per se, but I'll get to that point later.) Initially, I named my version " | ||
+ | |||
+ | By the autumn of 2008, FreeMarker' | ||
+ | |||
+ | ===== 2009 to 2019, My extended Programming Hiatus ===== | ||
+ | |||
+ | When I recently happened on that [[https:// | ||
+ | |||
+ | It goes beyond that. From early 2009 to late 2019, to all intents and purposes, I did not write a single line of code. And it even goes beyond that. It is not just that I drifted away, but that the whole thing somehow just became aversive to me. Currently, I guess I am still trying to understand how this could happen with something that was such a big part of my life and gave me such great creative satisfaction. I think a lot of the aversive reaction was just a normal, human reaction to the level of injustice I was dealing with. Different people are different, but I think we are all wired (at least originally) with some sense of justice or fairness. I tried to donate a very significant body of work to the so-called " | ||
+ | |||
+ | Another thing that was going on at the time -- and I have only come to grips with this recently -- is that my other main FreeMarker collaborator, | ||
+ | |||
+ | Well, all things eventually pass. So... | ||
+ | |||
+ | ===== Late 2019, My Return to Open source hacking ===== | ||
+ | |||
+ | Readers (at least if you managed to get this far!) are likely wondering how I got back into all of this. | ||
+ | |||
+ | I have some other ongoing projects relating to publishing (controversial) political material on the web and, for the last couple of years, I have been thinking I would like to learn PHP and get into how things like Wordpress work. Yet, in over two years, I have not been able to sit down and learn PHP or Javascript or any of it. At some point, it dawned on me that, given the way my brain is wired together, the best way for me to learn PHP or Javascript could well be to write a formal grammar and have FreeCC generate a parser. And, it even occurred to me that a good PHP and/or Javascript parser might even have a market out there! But that was not such an important consideration either. It really just seemed that this was how I could learn those things. But perhaps the bottom line is that I was finally healing from my earlier trauma and had the itch to hack some code again! | ||
+ | |||
+ | So, I dug up my old FreeCC work and started mucking with it. One thing led to another. I realized that my old FreeCC only supported a very old version of the Java language. (JDK 1.5 basically, and truth be told, only partially.) So I set myself the task of updating it. I ran into a bug and saw that it had been reported in the [[https:// | ||
- | Not long afterwards, I tried to establish contact with the JavaCC | + | ===== Another name change. |
- | My changes | + | Now, we get to the question |
- | Of course, in retrospect, perhaps | + | Now, first of all, to be clear about one aspect of all of this, FreeCC (now //JavaCC 21//) was never a " |
- | ===== JavaCC | + | As I have stated quite bluntly above, the legacy |
- | 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 you can still look at the history of a codebase pretty well with it. At some point in mid-2008, I set myself the task of figuring out what the JavaCC | + | //Nothing significant can be done with the legacy |
- | I suppose, dear reader, you are waiting | + | I undertook that cleanup and refactoring back in 2008 and it is largely done. The only basis for moving forward on the project is [[https:// |
- | //To all intents and purposes, **no** work had been done in those five years. **Nothing.**// | + | A couple of people have expressed misgivings about my taking the JavaCC name. One person said that this would " |
- | Now, to be clear, | + | A [[nothingburger]] is essentially a fraud, because it amounts |
+ | Meanwhile, //JavaCC 21// is what it is being presented as, the active continuation of work on the codebase that Sun open sourced back in 2003. | ||
+ | Other people expressed misgivings to me about trademark sorts of issues. I don't think there' | ||
+ | //Nobody has ever filed a trademark in any jurisdiction on the name JavaCC.// | ||
+ | In any case, the problem here is that this is the only feasible course of action. In the open source world, it frequently happens that people show up in a community, one of these [[nothingburger]] projects and propose some ideas and they are arrogantly dismissed and the people are told that they are free to go " | ||
+ | Well, this is technically true. You can create your own " | ||
+ | Moreover, all of this is like a big ball of wax. Potential collaborators are much less likely to volunteer serious time and effort to contribute work to some project nobody has heard of. You see, people, generally speaking, don't like wasting their time. They know, on the other hand, that any work they donate to something well known will receive plenty of attention and usage. | ||
+ | In any case, after a decade' | ||