beanshell / beanshell

Beanshell scripting language
Apache License 2.0
815 stars 183 forks source link

Public apology and appreciaton for Jonathan Revusky #738

Closed nickl- closed 1 year ago

nickl- commented 1 year ago

Jonathan @revusky is the author of congocc, a new parser generator originally based on javacc. In January he offered to do the java grammar adaptation to parse bean script but went far and beyond by also designing an approach by which BeanShell could migrate over to the congo parser. For a short while he joined the BeanShell team but has indicated that he has given more than expected and will not be contributing to this project any further.

On behalf of the BeanShell team I would like to take this opportunity to show just how grateful we are and to thank Jonathan for his selfless contributions which is very much appreciated, it saddens us to see him go and the migration project will certainly suffer his loss. We wish him and the congo project every success and good fortune for future endeavors.

I deleted a post made by Jonathan under an unrelated topic for which he takes offense and insists on my public apology. The post was deleted because it was off topic, we had a similar discussion last week about derailing threads and I didn't want to derail the topic further by rehashing the argument again, and thought that deleting the post would be the cleanest recourse.

To show that it was not deleted because I didn't want the content to be seen, I found it in my email archive and am reposting it here:


Hi. Earlier today, I wrote this post in a separate thread. If, by some chance, you have not read it, you should. And, in particular, I would request that you respond to this part of it, where I request that you (not you specifically, anybody in this community) try the following and verify that it works:

git clone https://github.com/beanshell/beanshell.git -b congocc
cd beanshell 
mvn compile
java -cp target/classes bsh.TestHarness $(find src -name "*.bsh")

What the above demonstrates is that the new parser/grammar I contributed really does parse any beanshell script -- or just about. Aside from trying it on the scripts inside the src directory, by all means try it out on any .bsh scripts you have lying around.

In any case, I would put it to you that you really really should not be writing any new code against your legacy parser. You should be using this new one -- not just because it is objectively better for a whole host of reasons, but also because, using it will help get any of the kinks out.

Now, in terms of the specific use-case you mention, walking the tree and pretty-printing source. CongoCC has a much more elegant solution to that sort of problem. You can simply subclass the Node.Visitor class that is generated in src/main/java/bsh/congo/parser/Node.java. You can actually see an example of the use pattern in action for pretty-printing here, which is the class used internally in CongoCC to pretty-print Java code. (Standard Java, obviously. Not Beanshell code, but you could certainly adapt it fairly easily.) By the way, Nick actually contributed some tweaks to this class back in late January. Another interesting example is the class that is now called the Reaper which eliminates dead code. That is also a Node.Visitor subclass. To use Node.Visitor, you just create a subclass and put in visit(SomeNode...) handlers for the kinds of nodes you want it to handle in a recursive tree-walk. It is much more concise and simple than the visitor scheme in legacy JavaCC/JJTree.

So, it would be much better for you to take the opportunity to get familiar with these newer, much more powerful APIs that CongoCC provides, rather than building on top of the older parser.

Regardless, I would appreciate if you report back on whether you succeeded in running the test code I posted above. Thanks in advance.


I did not mean any offense by it, but honestly considered it the cleanest approach to keep the topic on track. We desperately want to get rid of the issue backlog, and we are calling on help from the community to respond to open issue with anything that can help us close them. Clearly this post only promotes the congo migration #685 thread. Threads going off topic only makes the task of administrating open issues so much harder.

Doing my best here, and there are still so many loose ends to manage, I apologize that I cannot work on only one thing at a time. I know I am not always the most patient and I apologize for that. Don't always have time to promptly respond, give the required attention, or work on issues long overdue and I apologize for that. It is not my intention to offend but I can understand that actions offend not intentions, and even unintentionally we can do the wrong thing.

In offending Jonathan I apologize for deleting his post. It might have been the easiest approach in this scenario but we certainly don't want to start censoring or loosing content. Perhaps in future I can try to redirect the off topic discussion to a repost of the content as a new issue first, and then only delete the post to cleanly keep the original topic on track. How else will we learn?

nickl- commented 1 year ago

Issue now considered resolved._