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 | ||
ancient_history [2020/02/15 23:44] – external edit 127.0.0.1 | ancient_history [2020/10/30 15:55] – [Another name change. JavaCC (21)] revusky | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== JavaCC Project History ====== | ====== JavaCC Project 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' | + | 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' |
- | So, here we go... | + | Now, actually, the history of JavaCC is not so easy to piece together. In its early days (the only time it was actively developed) it was bounced around to a few different companies. The version history [[https:// |
+ | |||
+ | Since an earlier draft of this page, I had a bit of correspondence with Sriram Sankar, who was the project lead on " | ||
===== Let's start at the beginning ===== | ===== Let's start at the beginning ===== | ||
- | In its origins, the JavaCC parser generator is a Java based tool of 1990's vintage. | + | In its origins, the JavaCC parser generator is a Java based tool of 1990's vintage. |
+ | |||
+ | 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. | ||
- | Now, first of all, let's put this part of the timeline | + | Doubtless, the original Jack project could have benefited from the collections library introduced |
- | Doubtless, the original | + | Now, Metamata, Jack's (now JavaCC's) new home, was acquired by some other company called [[https:// |
- | Now, Metamata, where JavaCC was originally developed, was acquired by some other company called [[https:// | + | It is fairly easy to deduce |
===== 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 |
+ | |||
+ | This was actually the watershed moment when I became heavily involved | ||
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:// | 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 -- by most reasonable definitions, | + | One aspect of all of this is that, though I became very comfortable using JavaCC -- by most reasonable definitions, |
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 27: | 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, 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: | ||
Line 39: | Line 47: | ||
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. | 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 " | + | 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! | 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! | ||
Line 51: | Line 59: | ||
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. | 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 " | + | Not long into this whole process, I tried to establish contact with the JavaCC " |
- | My changes to the codebase were so // | + | 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//, |
- | + | ||
- | 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 // | I felt the need to write a [[Nothingburger|separate article about the concept]] but I think a key characteristic of a // | ||
Line 73: | Line 77: | ||
===== Mid 2008 to early 2009, the FreeCC " | ===== 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 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' | By the autumn of 2008, FreeMarker' | ||
Line 81: | Line 85: | ||
When I recently happened on that [[https:// | 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. | + | 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 " |
- | 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, |
- | + | ||
- | 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... | Well, all things eventually pass. So... | ||
Line 91: | Line 93: | ||
===== Late 2019, My Return to Open source hacking ===== | ===== 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. | + | 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! | 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:// | + | 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:// |
- | + | ||
- | Well, in short, I got into it again and just got hooked. On my birthday (and I won't say here how old) on 26 December of 2019, I finally got Java 8 support squared away. The generated parser could successfully parse all of the over 7000 source files in the JDK 1.8 '' | + | |
- | + | ||
- | So, I had gotten | + | |
===== Another name change. JavaCC (21) ===== | ===== Another name change. JavaCC (21) ===== | ||
Line 107: | Line 105: | ||
Now, first of all, to be clear about one aspect of all of this, FreeCC (now //JavaCC 21//) was never a " | Now, first of all, to be clear about one aspect of all of this, FreeCC (now //JavaCC 21//) was never a " | ||
- | As I have stated quite bluntly above, the legacy JavaCC project is just one of these [[Nothingburger]] projects. (It is not the only one out there!) Properly understood, it is not even about the people involved in the project currently. I do not recognize the names of most of the people involved in that currently. However, it doesn' | + | As I have stated quite bluntly above, the legacy JavaCC project is just one of these [[https:// |
//Nothing significant can be done with the legacy JavaCC codebase without a massive cleanup and refactoring.// | //Nothing significant can be done with the legacy JavaCC codebase without a massive cleanup and refactoring.// | ||
Line 113: | Line 111: | ||
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:// | 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:// | ||
- | A couple of people have expressed misgivings about my taking the JavaCC name. One person said that this would " | + | A couple of people have expressed misgivings about my taking the JavaCC name. One person said that this would " |
- | A [[Nothingburger]] is essentially a fraud, because it amounts to artfully arranging your bun and your condiments and creating a //trompe l' | + | A [[nothingburger]] is essentially a fraud, because it amounts to artfully arranging your bun and your condiments and creating a //trompe l' |
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. | 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' | + | 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.// | + | //Nobody has ever filed a trademark in any jurisdiction on the name JavaCC.// |
- | Well, except for me. I recently did file it as a trademark in Spain. | + | 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 |
- | + | ||
- | 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 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 " | 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. | + | 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' | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | In any case, after a decade' | ||