In no particular order, here are some various points of a totally non-technical nature:
Change of License
CongoCC is now under the MIT License. It is really not very different from the BSD License that JavaCC 21 used. However, it is a bit less verbose and more importantly, there only seems to be one version of it, while BSD has the 2-clause version, the 3-clause version, the simplified version...
As I did with JavaCC 21, I put in the following addendum/clarification, which I am pretty sure is the only "licensing" issue that concerns about 99% of potential users:
In the interests of absolute clarity, it behooves us to add that the above license terms refer to the source code of the tool itself. Any code that users generate using the tool belongs to them alone and is completely unencumbered. Since that is the important part for most users, it bears repeating:
ANY CODE THAT USERS GENERATE USING THE TOOL BELONGS TO THEM ALONE AND IS COMPLETELY UNENCUMBERED.
No Copyright/License blurb at the top of source files
All of the source files in the repository previously had the copyright/license blurb at the top. I was curious as to whether this was generally considered necessary. I noticed that plenty of projects under the MIT license did not include the copyright/license text at the start of every source file and it seems that it is not really considered necessary. It's enough that there is a LICENSE file at the top-level directory of the repository. Actually, even in the case of the widely used Apache license, for example, it seems that putting the text at the top of every source file is just a recommendation, not really required, though it does seem that every project that uses the Apache License does follow this practice -- at least that I have come across.
Anyway, I decided that we would go for this interpretation of things, that the blurb at the top of source files is optional, for the MIT license anyway, and we are hereby opting out of it! I would say, by the way, that the whole thing never made much sense to me -- I mean, asserting that a given source file is one's intellectual property. The fact remains that no source file in the system has any value on its own, but only as part of the larger system. Finally, it seems to me to be akin to asserting one's ownership over the icing on a cake, or the ketchup or mustard in a hamburger. And, in terms of literary works, nobody puts up a separate copyright notice on, say, page 227 of a novel. There is a copyright notice, as well as whatever acknowledgements, in the front matter of the book and that's it really, no?
Well, really, as far as I can see, the copyright/license blurb at the top of every single source file is a classic example of people doing something because everybody else is doing it. A funny thing is there is an IntelliJ plugin devoted to inserting/modifying the blurb at the top of all source files at one go. That plugin is, doubtless, a real time-saver, especially for projects with hundreds of source files. My intention is to achieve the exact same time savings by simply choosing not to put the blurb on top of the files.
Now, of course, regardless, the author of something has a moral right to have their contribution attributed, and as far as I can see, that is what these extremely undemanding licenses like MIT and BSD are about. You can use the thing as you wish but you must properly attribute the authors. In general, I think we should just use @author tags mostly in source files to indicate who has contributed to what. Also, I would not at all be opposed to a CONTRIBUTORS page outlining who wrote/contributed whatever piece.
Congo is a completely new product.
In any case, our position is that CongoCC is a complete rewrite of the earlier JavaCC developed at Sun Microsystems around 1996/1997 and open-sourced (to great fanfare) in mid-2003. Well, that's not just our "position". It corresponds to reality. The last component of the thing that still contained any amount of original, legacy code was the lexical recognition stuff (DFA/NFA) part, and that was totally rewritten in Spring of 2021.
It will not be any secret that CongoCC is the result of a process of progressive rewriting/refactoring of the original JavaCC. However, our position is that the current codebase does NOT contain any intellectual property of Sun Microsystems (or Oracle). The basic algorithms/concepts used for tokenization, top-down recursive descent parsing, etcetera, were not invented at Sun or Oracle.
JavaCC 21 is end-of-line
Our policy is that JavaCC 21 is now end of line. There will not be any feature enhancements or even bug-fixes on JavaCC 21. It really is something offered as-is. If somebody using JavaCC 21 has a suggestion for a new feature, assuming it is implemented, it will be implemented in CongoCC. Any glitch or bug in JavaCC 21, if reported, will be fixed. In CongoCC.
So, my intention now is, at least pretty soon, to put up a build of JavaCC 21 on Maven Central and
all of the stability/reproducibility fetishists can use that if they want, in perpetuity. There may be some limited technical support, at least insofar as if somebody asks questions about usage, they will get an answer. (One key exception to the policy of no further work on JavaCC 21 is that I anticipate patching the syntax converter here and there probably, but the syntax converter is actually a separate program really.)
Meanwhile, CongoCC will be continually developed and will eventually (sooner rather than later) have features that JavaCC 21 is lacking. However, it will not have one "feature" that JavaCC 21 will (along with the legacy JavaCC) have: total stability/reproducibility.