Virtual Meetup - Control flow and effects analysis Algorithms with OpenRewrite

Hi Community,

I am happy to announce that this Thursday (the 12th of May), Jonathan Schneider will hold the discussion about " Control flow and effects analysis Algorithms with OpenRewrite ​".

Also, remember that we changed the link to join the Meetup!

OpenRewrite is an Apache licensed automated refactoring engine that we introduced in a previous Strumenta meetup. In this talk, we move beyond the initial set of OpenRewrite recipes that achieved the automation of major efforts like Java 8 to 11, Spring Boot 1.5 to 2.x, and the automation of many SonarQube like static analysis issues. We’ll be introducing early work and plans around how we plan to leverage scalable local control flow graphs and effects analysis to build recipes that require more code insight on hundreds of millions of lines of code.

We’ll also show how weakly connecting local pre-computed control flow graphs stored in memory on the public Moderne platform will realize inter-procedural effects analysis at a massive scale.

Jonathan is a co-founder at Moderne, working on automated refactoring that allows some of the largest organizations to mass fix their codebases at a scale of hundreds of millions of lines of code. Previously he built automated refactoring solutions at Netflix Eng Tools, founded the Micrometer project as a member of the Spring Team at Pivotal, and wrote “SRE with Java Microservices” for O’Reilly.

How to connect

To avoid other security issues is now necessary to register for the meeting. The registration should be necessary just once and be valid for all the next meetings you will participate in. I understand it is a little extra effort, but it would avoid problems like the ones we encountered:

Registration for the Virtual Meetup

After registering, you will receive a confirmation email containing information about joining the meeting. It will also permit you to add it to your calendar.

Time

It is hosted on Zoom at 6 PM GMT+1/CEST (you can use this link to figure out which time is in your timezone: Dateful Time Zone Converter).

Cheers,
Elisa

P.S. We get a recurring question: “Are presentations recorded?”. The answer is not, and the reasons are explained here On recording Virtual Meetups - #7 by voelter

Here there is the chat from the meeting:

18:00:05 From Peter Wasilko to Everyone:
	https://xkcd.com/297/
18:06:10 From Paul Spencer to Everyone:
	I used it last week to update from JUnit4 to Junit5 … so I looked pretty good!  thanks!
18:06:19 From Jonathan Schneider to Everyone:
	Oh wow, great!
18:10:14 From Peter Wasilko to Everyone:
	Is it limited to Java?
18:10:37 From Peter Wasilko to Everyone:
	Or just implemented therein?
18:11:02 From Jonathan Leitschuh to Everyone:
	- Java
18:11:35 From Jonathan Leitschuh to Everyone:
	Java, Terraform, Kubernetes, Maven, Gradle, Yaml, XXML, GitHub Actions, Concourse,  HCL, Properties, JSON, Circle CI Configs
18:12:03 From Tyler Van Gorder to Everyone:
	Groovy
18:12:55 From Federico Tomassetti to Everyone:
	Wow, that is a lot of languages!
18:13:01 From olga kundzich to Everyone:
	we are working on adding more languages
18:16:59 From Mike Cargal to Everyone:
	That would be amazing
18:17:07 From Pierre van de Laar to Everyone:
	Can your scripts make changes like
	if (cond()) { f(a(),b(),x,c(),d()); } else { f(a(),b(),y,c(),d()); } 
	into
	f (a(),b(), cond() ? x : y, c(),d());
	and ensure that possible side effects in the functions don't change the overall behaviour?
18:17:10 From Peter Wasilko to Everyone:
	Wow, is there a command line utility I run zip files through to be sure they are safe before decompressing them?
18:17:17 From Jonathan Leitschuh to Everyone:
	If you want to see a bunch of OSS with this vulnerability: https://lgtm.com/rules/1506728586782/alerts/
18:17:42 From Peter Wasilko to Everyone:
	*I can run
18:17:49 From Federico Tomassetti to Everyone:
	I read yesterday about this problem for the first time and today someone has solved it for me. Great 😄
18:18:22 From Jonathan Leitschuh to Everyone:
	> Wow, is there a command line utility I run zip files through to be sure they are safe before decompressing them?
18:18:51 From Jonathan Leitschuh to Everyone:
	Most utilities that you're using to unzip should be safe, because they've been audited. But if your code doesn't filter against it, then you can expose your end-users
18:20:18 From Sam Snyder to Everyone:
	Pierre, you absolutely can write a recipe that does that. But guaranteeing that there are no side effects from such a rearrangement is more difficult. In the near future, some of the data flow analysis capabilities Jonathan is demoing an early version of could help guarantee that such changes don't affect program behavior
18:31:50 From Pierre van de Laar to Everyone:
	Can you control after? I.e., control whether or not white space and comments are considered `part`of the AST node?
18:32:04 From Peter Wasilko to Everyone:
	Are you are using a font with programming ligatures or did your tooling produce the mathematical non equal effect?
18:32:59 From Mike Cargal to Everyone:
	It would have to be ligatures, or it wouldn't compile.
18:32:59 From Federico Tomassetti to Everyone:
	I am noticing the questions, but I do not want to interrupt the flow of the demo right now, I will ask them all together at the first pause
18:33:34 From Mike Cargal to Everyone:
	I use the ligature fonts and love them.  Others don't much care for looking at it (to put it mildly)
18:34:30 From Peter Wasilko to Everyone:
	They are a poor man's Literate Programming aid if you don't have a web system turn your source listings into LaTeX.
18:34:39 From Peter Wasilko to Everyone:
	*turning
18:34:56 From Mike Cargal to Everyone:
	well us, “poor men" love 'em 🙂
18:35:48 From Sam Snyder to Everyone:
	Pierre, whitespace and comments are always part of the AST nodes. You can choose whether or not to manipulate them. Most recipes do not concern themselves with formatting, delegating to the AutoFormat recipe.
18:42:27 From Sam Snyder to Everyone:
	And yes, it's a font with ligatures
18:42:41 From Sam Snyder to Everyone:
	Fira Code is the font, I believe
18:43:11 From Mike Cargal to Everyone:
	Looks like Jonathan brought an entire support staff to the chat session.... sweet!
18:43:43 From Federico Tomassetti to Everyone:
	We got a good deal indeed!
18:44:55 From Sam Snyder to Everyone:
	:)
18:46:29 From Pierre van de Laar to Everyone:
	Can you easily combine recipes? Can you repeat the same recipe until nothing changes anymore?
18:54:37 From Peter Wasilko to Everyone:
	Could one extend the system to work with semi-structured NL texts employing stock phrasing to represent structure and cross-references?
18:57:28 From Peter Wasilko to Everyone:
	Yes
18:57:50 From Peter Wasilko to Everyone:
	and statues
18:58:01 From Peter Wasilko to Everyone:
	*statutes
19:00:54 From Peter Wasilko to Everyone:
	https://law.stanford.edu/2022/05/05/measuring-contract-elasticity-computing-reinsurance/
19:04:11 From Sam Snyder to Everyone:
	Anyone who is interested is welcome to join our community slack: 
	https://join.slack.com/t/rewriteoss/shared_invite/zt-18w2s3whe-x3Rdz9Ur7BRKN2zgJZz2rQ
19:04:15 From Rosilde Corvino to Everyone:
	Do you ever need for your analyses to compute the value of variables (known at compile time) ? And can you?
19:06:54 From Peter Wasilko to Everyone:
	what about vscode applied whitespace alignment?
19:09:45 From Patrick Viry to Everyone:
	in a few years, he's only 12
19:10:36 From Jonathan Leitschuh to Everyone:
	https://twitter.com/JLLeitschuh/status/1524059835473567746?s=20&t=ucUMfnejsZmyqNPIb5D4Og
19:11:59 From Meinte Boersma to Everyone:
	Llama's: https://www.youtube.com/watch?v=K7hIrw1BUck
19:12:33 From Peter Wasilko to Everyone:
	So VSCode will inject just enough spaces or tabs to make corresponding runs of text in adjacent code line up, so shortening or lengthening a line would require adjusting nearby spacing to maintain the effect.
19:13:54 From Sam Snyder to Everyone:
	https://github.com/openrewrite/rewrite
19:14:42 From Jonathan Leitschuh to Everyone:
	Here's my linkedin post mentioning my search for an intern: https://www.linkedin.com/posts/jonathan-leitschuh-94553661_human-rd-internship-data-science-software-activity-6929893315874054146-0_7W?utm_source=linkedin_share&utm_medium=member_desktop_web
19:17:32 From Pierre van de Laar to Everyone:
	Thanks!
19:19:04 From Sam Caldwell to Everyone:
	hi 🙂
19:19:10 From Sam Snyder to Everyone:
	If you want to apply OpenRewrite recipes to your code or learn how to author them, check out our documentation:
	https://docs.openrewrite.org/
19:19:57 From Rosilde Corvino to Everyone:
	Thanks for the presentation. Nice evening.
19:20:00 From Peter Wasilko to Everyone:
	Thanks for the superb talk!
19:20:31 From Peter Wasilko to Everyone:
	Do you have a link to the lama zoom thing?
19:20:44 From Meinte Boersma to Everyone:
	Peter: see my previous comment.
19:20:55 From Jonathan Leitschuh to Everyone:
	Llama: https://www.youtube.com/watch?v=K7hIrw1BUck
19:21:00 From Peter Wasilko to Everyone:
	Got it!  Thanks!
19:21:03 From Sanyaade Adekoya to Everyone:
	Thank you