pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

Help Needed: Looking for projects to use in a study of transforming deprecations

OZ
Oleksandr Zaitsev
Tue, Apr 6, 2021 12:50 PM

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

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

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 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
SS
serge.stinckwich@gmail.com
Tue, Apr 6, 2021 1:08 PM

I guess CORMAS project could benefit on that.
We have tons of methods we don’t know if they are still used, some are deprecated or not. A real mess 😊

Sent from my iPhone

On 6 Apr 2021, at 20:50, Oleksandr Zaitsev olk.zaytsev@gmail.com wrote:


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

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

I guess CORMAS project could benefit on that. We have tons of methods we don’t know if they are still used, some are deprecated or not. A real mess 😊 Sent from my iPhone > On 6 Apr 2021, at 20:50, Oleksandr Zaitsev <olk.zaytsev@gmail.com> wrote: > >  > 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 > > 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 > >
GC
Gabriel Cotelli
Tue, Apr 6, 2021 1:29 PM

We have several projects in the Buenos Aires Smalltalk group that can match
(we provide in fact a migration package when breaking backward
compatibility including transformation rules so you have a human benchmark
to compare).
Here the ones with more history and releases:

Releases with changes in the major version are the ones breaking backward
compatibility.

And if you want to test something with a massive amount of code try
https://github.com/ba-st/HighchartsSt. It usually breaks all the tools
given the size of the codebase.

Gabriel

On Tue, Apr 6, 2021 at 9:50 AM Oleksandr Zaitsev olk.zaytsev@gmail.com
wrote:

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

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

We have several projects in the Buenos Aires Smalltalk group that can match (we provide in fact a migration package when breaking backward compatibility including transformation rules so you have a human benchmark to compare). Here the ones with more history and releases: - https://github.com/ba-st/Willow - https://github.com/ba-st/Superluminal - https://github.com/ba-st/Stargate - https://github.com/ba-st/Boardwalk - https://github.com/ba-st/Hyperspace - https://github.com/ba-st/Buoy Releases with changes in the major version are the ones breaking backward compatibility. And if you want to test something with a massive amount of code try https://github.com/ba-st/HighchartsSt. It usually breaks all the tools given the size of the codebase. Gabriel On Tue, Apr 6, 2021 at 9:50 AM Oleksandr Zaitsev <olk.zaytsev@gmail.com> wrote: > 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 > > 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 > > >
RO
Richard O'Keefe
Tue, Apr 6, 2021 9:29 PM

This sounds like a very nice tool.
Just a word about this particular example:

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

^ self includesAll: values

Surely this is back to front?  #includesAllOf: reads well and is
compatible with GNU Smalltalk (and classic Squeak), while #includesAll:
doesn't work in most of the Smalltalks I have access to.

My own library has
{includes,excludes}{All,Any,None,One}Of:
which wouldn't read nearly so well without "Of".

On Wed, 7 Apr 2021 at 00:50, Oleksandr Zaitsev olk.zaytsev@gmail.com
wrote:

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

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

This sounds like a very nice tool. Just a word about this particular example: Collection >> includesAllOf: values self deprecated: ‘Use #includesAll: instead’ transformWith: ‘`@rec includesAllOf: `@arg’ -> ‘`@rec includesAll: `@arg’. ^ self includesAll: values Surely this is back to front? #includesAllOf: reads well and is compatible with GNU Smalltalk (and classic Squeak), while #includesAll: doesn't work in most of the Smalltalks I have access to. My own library has {includes,excludes}{All,Any,None,One}Of: which wouldn't read nearly so well without "Of". On Wed, 7 Apr 2021 at 00:50, Oleksandr Zaitsev <olk.zaytsev@gmail.com> wrote: > 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 > > 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 > > >
SJ
Sebastian Jordan
Wed, Apr 7, 2021 3:48 AM

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.zaytsev@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.ducasse@inria.fr; Nicolas Anquetil nicolas.anquetil@inria.fr; arnaud.thiefaine@arolla.fr arnaud.thiefaine@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/deprewriterhttps://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

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.zaytsev@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.ducasse@inria.fr>; Nicolas Anquetil <nicolas.anquetil@inria.fr>; arnaud.thiefaine@arolla.fr <arnaud.thiefaine@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
OZ
Oleksandr Zaitsev
Tue, Apr 20, 2021 12:27 PM

gcotelli wrote

We have several projects in the Buenos Aires Smalltalk group that can
match
(we provide in fact a migration package when breaking backward
compatibility including transformation rules so you have a human benchmark
to compare).

Thanks a lot Gabriel and Serge!
I will run my experiment of those projects

--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

gcotelli wrote > We have several projects in the Buenos Aires Smalltalk group that can > match > (we provide in fact a migration package when breaking backward > compatibility including transformation rules so you have a human benchmark > to compare). Thanks a lot Gabriel and Serge! I will run my experiment of those projects -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
OZ
Oleksandr Zaitsev
Tue, Apr 20, 2021 12:29 PM

Richard O'Keefe wrote

Surely this is back to front?  #includesAllOf: reads well and is
compatible with GNU Smalltalk (and classic Squeak), while #includesAll:
doesn't work in most of the Smalltalks I have access to.

My own library has
{includes,excludes}{All,Any,None,One}Of:
which wouldn't read nearly so well without "Of".

Yes, this makes sense!
I will fix that example

Thank you

--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Richard O'Keefe wrote > Surely this is back to front? #includesAllOf: reads well and is > compatible with GNU Smalltalk (and classic Squeak), while #includesAll: > doesn't work in most of the Smalltalks I have access to. > > My own library has > {includes,excludes}{All,Any,None,One}Of: > which wouldn't read nearly so well without "Of". Yes, this makes sense! I will fix that example Thank you -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html