Hi Oleksandr,

Nice project! I don't have a project recommendation but maybe my project can be 
useful to you. One of the functionalities allows you to apply multiple 
transformation rules in a custom set of classes (or all classes in Pharo image).

https://github.com/jordanmontt/RewriteToolsSet


________________________________
De: Oleksandr Zaitsev <olk.zayt...@gmail.com>
Enviado: martes, 6 de abril de 2021 08:50
Para: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Cc: Stéphane Ducasse <stephane.duca...@inria.fr>; Nicolas Anquetil 
<nicolas.anque...@inria.fr>; arnaud.thiefa...@arolla.fr 
<arnaud.thiefa...@arolla.fr>
Asunto: [Pharo-users] Help Needed: Looking for projects to use in a study of 
transforming deprecations

Hello,

I need your help to recommend some projects that I can use in my study of 
transforming deprecations.

As many of you know, Pharo supports a very powerful concept of "transforming" 
deprecations. You can deprecate a method, providing a transformation rule. Then 
when a client application calls the deprecated method, the call-site will be 
automatically rewritten to use the new API. Here is an example of a 
transforming deprecation:


Collection >> includesAllOf: values
  self
    deprecated: ‘Use #includesAll: instead’
    transformWith: ‘`@rec includesAllOf: `@arg’ ->
                   ‘`@rec includesAll: `@arg’.

  ^ self includesAll: values

You can read more about transforming deprecations in my blog post: 
https://blog.oleks.fr/deprewriter<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fblog.oleks.fr%2Fdeprewriter&data=04%7C01%7C%7C57960772ad9b4c187f6d08d8f8fa9389%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637533102389223343%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GAN8yRcVVB%2BEhC3HZnVIEP8JFoS2dFPv%2BfEPlI6PQu8%3D&reserved=0>

I am working on a tool that can analyse the commit history of a project and 
recommend deprecations and transformation rules that can be inserted before the 
release. It works like this:

1. Collect all commits between two releases of a project
2. Mine those commits to identify method call replacements (deletions and 
additions) that happen frequently
3. Infer the mapping between the methods of the old and new API
4. Recommend deprecations and generate transformation rules

I have validated my approach on Pharo, Moose, Pillar, Famix, and DataFrame 
projects.

Now I am looking for other projects that could benefit from recommended 
deprecations and could be used in my study.

Required:
- open source project with accessible commit history (e.g. public git 
repository)
- written in Pharo (although if you know projects in other languages that could 
be interesting for my study, please let me know about them as well)

Prefered:
- ongoing development
- multiple releases
- has users (other projects that depend on it)

If you have some projects in mind, please let me know about them!

And if you are interested in this study and want to learn more, don't hesitate 
to contact me by email.

Oleksandr


Reply via email to