Let's test Tapestry 5.7.0-SNAPSHOT

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Let's test Tapestry 5.7.0-SNAPSHOT

Thiago H de Paula Figueiredo
Hello, community!

We're close to releasing Tapestry 5.7.0, which I'd love to have it released
before the end of year holidays to end this troubled year with something
nice. Since there's going to be larger changes than usual, I'd like to
invite the community to test it on their projects a bit to eventually catch
some regressions the team and the unit tests couldn't catch yet. You can
see a list of all changes in
https://issues.apache.org/jira/issues/?jql=project%20=%20TAP5%20AND%20fixVersion%20=%205.7.0
until a proper release notes page is added to the website.

Tapestry 5.7.0-SNAPSHOT JARs were uploaded to the ASF's Maven snapshots
repository at https://repository.apache.org/content/groups/snapshots/.

Biggest change is making Tapestry easier to use in modularized (i.e. Java
9+ modules) projects. The work on this was done in 2 major parts and a
small one:
* Avoiding split packages. In other words, packages that are present in
more than one JAR. We had to move lots of Tapestry classes around
JARs/subprojects since there were many and populous split packages.
* Providing automatic module names, all using the formula
"org.apache.tapestry.[adapted JAR name]", where [adapted JAR name] is the
current JAR name with 'tapestry-', dashes and the character '5' removed.
For example, tapestry5-annotations automatic module name is
org.apache.tapestry.annotations. Creation of module-info.java files are
left for the future.
* A simple migration tool to update fully qualified class names in Java
source files for classes which were moved and/or renamed. It's basically a
search-and-replace using a table of (old class name -> new class name)
extracted out of Git commits.

To run this migration tool, download the JAR at
https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/tapestry-version-migrator/5.7.0-SNAPSHOT/tapestry-version-migrator-5.7.0-20201208.195518-8.jar
and run "java
-jar tapestry-version-migrator-5.7.0-20201208.195518-8.jar upgrade 5.7.0"
(without quotes). It will process all .java files found in the current
folder and its subfolders, recursively.

Since the stuff above was going to be needed anyway, I've also seized the
opportunity to separate the Tapestry request pipeline classes (i.d.
HttpServletRequestFilter, RequestFilter, Dispatcher, etc) into a new
subproject/JAR, tapestry-http, which can be used without tapestry-core,
which includes the page/component framework and the asset handling classes.

The other breaking change in 5.7.0 is changing the TypeCoercer service from
having an unordered configuration to a mapped one. This was done so it's
very clear when a coercion is overriden. Here's a real example from
Tapestry itself: if you had a contribution method like this:

    @Contribute(TypeCoercer.class)
    public static void provideCoercions(Configuration<CoercionTuple>
configuration)
    {
        configuration.add(CoercionTuple.create(String.class,
JSONObject.class, new StringToJSONObject()));
     }

it should be changed to this:

    public static void
provideCoercions(MappedConfiguration<CoercionTuple.Key, CoercionTuple>
configuration)
    {
        CoercionTuple<String, JSONObject> stringToJsonObject =
CoercionTuple.create(String.class, JSONObject.class, new
StringToJSONObject());
        configuration.add(stringToJsonObject.getKey(), stringToJsonObject);
    }

5.7.0 is built with Java 11 (first long-term support version after Java 9),
but targeting Java 8 bytecode, so It should be able to run on Java 8 to 14.

Please post your findings here in the mailing list so we can coordinate the
creation of Jira tickets and get this new version ready to be voted and
released in the next 2 weeks.

Thanks in advance! Happy testing!

--
Thiago
Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

Dmitry Gusev
Hi Thiago,

This release has a significant change in packages, none of the existing
3rd-party tapestry libraries will be compatible with this release -- they
all will need recompilation and mentioned fixes, even if they don't use
Java 9 modules.

So it is a major change according to semver.

Have you considered bumping the major version to 6.x?
Also if we're doing this change, maybe flatten existing interfaces left
from previous releases, like Asset2, ServiceDef2, ServiceDef3, etc.?

Regards,
Dmitry

On Wed, Dec 9, 2020 at 1:38 AM Thiago H. de Paula Figueiredo <
[hidden email]> wrote:

> Hello, community!
>
> We're close to releasing Tapestry 5.7.0, which I'd love to have it released
> before the end of year holidays to end this troubled year with something
> nice. Since there's going to be larger changes than usual, I'd like to
> invite the community to test it on their projects a bit to eventually catch
> some regressions the team and the unit tests couldn't catch yet. You can
> see a list of all changes in
>
> https://issues.apache.org/jira/issues/?jql=project%20=%20TAP5%20AND%20fixVersion%20=%205.7.0
> until a proper release notes page is added to the website.
>
> Tapestry 5.7.0-SNAPSHOT JARs were uploaded to the ASF's Maven snapshots
> repository at https://repository.apache.org/content/groups/snapshots/.
>
> Biggest change is making Tapestry easier to use in modularized (i.e. Java
> 9+ modules) projects. The work on this was done in 2 major parts and a
> small one:
> * Avoiding split packages. In other words, packages that are present in
> more than one JAR. We had to move lots of Tapestry classes around
> JARs/subprojects since there were many and populous split packages.
> * Providing automatic module names, all using the formula
> "org.apache.tapestry.[adapted JAR name]", where [adapted JAR name] is the
> current JAR name with 'tapestry-', dashes and the character '5' removed.
> For example, tapestry5-annotations automatic module name is
> org.apache.tapestry.annotations. Creation of module-info.java files are
> left for the future.
> * A simple migration tool to update fully qualified class names in Java
> source files for classes which were moved and/or renamed. It's basically a
> search-and-replace using a table of (old class name -> new class name)
> extracted out of Git commits.
>
> To run this migration tool, download the JAR at
>
> https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/tapestry-version-migrator/5.7.0-SNAPSHOT/tapestry-version-migrator-5.7.0-20201208.195518-8.jar
> and run "java
> -jar tapestry-version-migrator-5.7.0-20201208.195518-8.jar upgrade 5.7.0"
> (without quotes). It will process all .java files found in the current
> folder and its subfolders, recursively.
>
> Since the stuff above was going to be needed anyway, I've also seized the
> opportunity to separate the Tapestry request pipeline classes (i.d.
> HttpServletRequestFilter, RequestFilter, Dispatcher, etc) into a new
> subproject/JAR, tapestry-http, which can be used without tapestry-core,
> which includes the page/component framework and the asset handling classes.
>
> The other breaking change in 5.7.0 is changing the TypeCoercer service from
> having an unordered configuration to a mapped one. This was done so it's
> very clear when a coercion is overriden. Here's a real example from
> Tapestry itself: if you had a contribution method like this:
>
>     @Contribute(TypeCoercer.class)
>     public static void provideCoercions(Configuration<CoercionTuple>
> configuration)
>     {
>         configuration.add(CoercionTuple.create(String.class,
> JSONObject.class, new StringToJSONObject()));
>      }
>
> it should be changed to this:
>
>     public static void
> provideCoercions(MappedConfiguration<CoercionTuple.Key, CoercionTuple>
> configuration)
>     {
>         CoercionTuple<String, JSONObject> stringToJsonObject =
> CoercionTuple.create(String.class, JSONObject.class, new
> StringToJSONObject());
>         configuration.add(stringToJsonObject.getKey(), stringToJsonObject);
>     }
>
> 5.7.0 is built with Java 11 (first long-term support version after Java 9),
> but targeting Java 8 bytecode, so It should be able to run on Java 8 to 14.
>
> Please post your findings here in the mailing list so we can coordinate the
> creation of Jira tickets and get this new version ready to be voted and
> released in the next 2 weeks.
>
> Thanks in advance! Happy testing!
>
> --
> Thiago
>


--
Dmitry Gusev

AnjLab Team
http://anjlab.com
Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

David Taylor
Hi Thiago,

We ran into the same issue with our testing. Not unexpected, but we have
had to rebuild our internal libraries and third-party tapestry libraries
as well. Fortunately, we have patched versions of most of the
third-party libraries and build them internally.

Best Regards,
David
emailsig
On 12/11/2020 8:31 PM, Dmitry Gusev wrote:
> Hi Thiago,



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

Thiago H de Paula Figueiredo
In reply to this post by Dmitry Gusev
On Fri, Dec 11, 2020 at 10:32 PM Dmitry Gusev <[hidden email]>
wrote:

> Hi Thiago,
>

Hello!


> This release has a significant change in packages, none of the existing
> 3rd-party tapestry libraries will be compatible with this release -- they
> all will need recompilation and mentioned fixes, even if they don't use
> Java 9 modules.
>

Indeed. I ran into this problem with tapestry-geb.


> So it is a major change according to semver.
> Have you considered bumping the major version to 6.x?
>

For historical reasons, no. We've promised in the past there wouldn't be a
Tapestry 6, since Tapestry 5 is a complete rewrite and completely
incompatible with Tapestry 4, and other past versions are in the same
situation. Tapestry had an image of a framework that rewrites itself after
a few years and one major version. So, actually, 5.7.0 will actually be
version 7.0 of the Tapestry 5 framework. This mass moving of classes won't
need to happen again, so I think having 6 as the major version isn't
necessary.


> Also if we're doing this change, maybe flatten existing interfaces left
> from previous releases, like Asset2, ServiceDef2, ServiceDef3, etc.?
>

I thought about that too, but didn't implement it. Good idea. Would you
volunteer to do that? :)

Cheers!


>
> Regards,
> Dmitry
>
> On Wed, Dec 9, 2020 at 1:38 AM Thiago H. de Paula Figueiredo <
> [hidden email]> wrote:
>
> > Hello, community!
> >
> > We're close to releasing Tapestry 5.7.0, which I'd love to have it
> released
> > before the end of year holidays to end this troubled year with something
> > nice. Since there's going to be larger changes than usual, I'd like to
> > invite the community to test it on their projects a bit to eventually
> catch
> > some regressions the team and the unit tests couldn't catch yet. You can
> > see a list of all changes in
> >
> >
> https://issues.apache.org/jira/issues/?jql=project%20=%20TAP5%20AND%20fixVersion%20=%205.7.0
> > until a proper release notes page is added to the website.
> >
> > Tapestry 5.7.0-SNAPSHOT JARs were uploaded to the ASF's Maven snapshots
> > repository at https://repository.apache.org/content/groups/snapshots/.
> >
> > Biggest change is making Tapestry easier to use in modularized (i.e. Java
> > 9+ modules) projects. The work on this was done in 2 major parts and a
> > small one:
> > * Avoiding split packages. In other words, packages that are present in
> > more than one JAR. We had to move lots of Tapestry classes around
> > JARs/subprojects since there were many and populous split packages.
> > * Providing automatic module names, all using the formula
> > "org.apache.tapestry.[adapted JAR name]", where [adapted JAR name] is the
> > current JAR name with 'tapestry-', dashes and the character '5' removed.
> > For example, tapestry5-annotations automatic module name is
> > org.apache.tapestry.annotations. Creation of module-info.java files are
> > left for the future.
> > * A simple migration tool to update fully qualified class names in Java
> > source files for classes which were moved and/or renamed. It's basically
> a
> > search-and-replace using a table of (old class name -> new class name)
> > extracted out of Git commits.
> >
> > To run this migration tool, download the JAR at
> >
> >
> https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/tapestry-version-migrator/5.7.0-SNAPSHOT/tapestry-version-migrator-5.7.0-20201208.195518-8.jar
> > and run "java
> > -jar tapestry-version-migrator-5.7.0-20201208.195518-8.jar upgrade 5.7.0"
> > (without quotes). It will process all .java files found in the current
> > folder and its subfolders, recursively.
> >
> > Since the stuff above was going to be needed anyway, I've also seized the
> > opportunity to separate the Tapestry request pipeline classes (i.d.
> > HttpServletRequestFilter, RequestFilter, Dispatcher, etc) into a new
> > subproject/JAR, tapestry-http, which can be used without tapestry-core,
> > which includes the page/component framework and the asset handling
> classes.
> >
> > The other breaking change in 5.7.0 is changing the TypeCoercer service
> from
> > having an unordered configuration to a mapped one. This was done so it's
> > very clear when a coercion is overriden. Here's a real example from
> > Tapestry itself: if you had a contribution method like this:
> >
> >     @Contribute(TypeCoercer.class)
> >     public static void provideCoercions(Configuration<CoercionTuple>
> > configuration)
> >     {
> >         configuration.add(CoercionTuple.create(String.class,
> > JSONObject.class, new StringToJSONObject()));
> >      }
> >
> > it should be changed to this:
> >
> >     public static void
> > provideCoercions(MappedConfiguration<CoercionTuple.Key, CoercionTuple>
> > configuration)
> >     {
> >         CoercionTuple<String, JSONObject> stringToJsonObject =
> > CoercionTuple.create(String.class, JSONObject.class, new
> > StringToJSONObject());
> >         configuration.add(stringToJsonObject.getKey(),
> stringToJsonObject);
> >     }
> >
> > 5.7.0 is built with Java 11 (first long-term support version after Java
> 9),
> > but targeting Java 8 bytecode, so It should be able to run on Java 8 to
> 14.
> >
> > Please post your findings here in the mailing list so we can coordinate
> the
> > creation of Jira tickets and get this new version ready to be voted and
> > released in the next 2 weeks.
> >
> > Thanks in advance! Happy testing!
> >
> > --
> > Thiago
> >
>
>
> --
> Dmitry Gusev
>
> AnjLab Team
> http://anjlab.com
>


--
Thiago
Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

Thiago H de Paula Figueiredo
In reply to this post by David Taylor
On Sat, Dec 12, 2020 at 2:20 AM David Taylor <[hidden email]>
wrote:

> Hi Thiago,
>

Hello, David!


> We ran into the same issue with our testing. Not unexpected, but we have
> had to rebuild our internal libraries and third-party tapestry libraries
> as well. Fortunately, we have patched versions of most of the
> third-party libraries and build them internally.
>

Thanks for the info! What are the third-party libraries? We could contact
the maintainers about that and even provide patches ourselves in case
they're not able to do that themselves.

Cheers!


>
> Best Regards,
> David
> emailsig
> On 12/11/2020 8:31 PM, Dmitry Gusev wrote:
> > Hi Thiago,
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

--
Thiago
Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

David Taylor
Hi Thiago,

The libraries in question are tapestry-resteasy and tapestry-security.
We have customized versions of these libraries that we maintain
internally since they were not being actively maintained at the time.
Mostly dependency updates, bug fixes and migration of the builds to gradle.

IIRC Kalle Korhonen has an active client using these libraries. Perhaps
he would be willing to provide official updates.

Best Regards,
David
On 12/13/2020 4:36 PM, Thiago H. de Paula Figueiredo wrote:

> On Sat, Dec 12, 2020 at 2:20 AM David Taylor <[hidden email]>
> wrote:
>
>> Hi Thiago,
>>
> Hello, David!
>
>
>> We ran into the same issue with our testing. Not unexpected, but we have
>> had to rebuild our internal libraries and third-party tapestry libraries
>> as well. Fortunately, we have patched versions of most of the
>> third-party libraries and build them internally.
>>
> Thanks for the info! What are the third-party libraries? We could contact
> the maintainers about that and even provide patches ourselves in case
> they're not able to do that themselves.
>
> Cheers!
>
>
>> Best Regards,
>> David
>> emailsig
>> On 12/11/2020 8:31 PM, Dmitry Gusev wrote:
>>> Hi Thiago,
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Let's test Tapestry 5.7.0-SNAPSHOT

Kalle Korhonen-2
I have continued maintaining tapestry-resteasy, tapestry-security and the
rest of tynamo libraries throughout the years, sometimes more actively and
some other times less so depending on how busy I am with other things. I'm
always disappointed to hear people making customized versions to fix some
things for themselves without contributing back after taking and using the
work of so many others that have put the effort into sharing their work
with all.

Kalle

On Mon, Dec 14, 2020 at 8:20 PM David Taylor <[hidden email]>
wrote:

> Hi Thiago,
>
> The libraries in question are tapestry-resteasy and tapestry-security.
> We have customized versions of these libraries that we maintain
> internally since they were not being actively maintained at the time.
> Mostly dependency updates, bug fixes and migration of the builds to gradle.
>
> IIRC Kalle Korhonen has an active client using these libraries. Perhaps
> he would be willing to provide official updates.
>
> Best Regards,
> David
> On 12/13/2020 4:36 PM, Thiago H. de Paula Figueiredo wrote:
> > On Sat, Dec 12, 2020 at 2:20 AM David Taylor <
> [hidden email]>
> > wrote:
> >
> >> Hi Thiago,
> >>
> > Hello, David!
> >
> >
> >> We ran into the same issue with our testing. Not unexpected, but we have
> >> had to rebuild our internal libraries and third-party tapestry libraries
> >> as well. Fortunately, we have patched versions of most of the
> >> third-party libraries and build them internally.
> >>
> > Thanks for the info! What are the third-party libraries? We could contact
> > the maintainers about that and even provide patches ourselves in case
> > they're not able to do that themselves.
> >
> > Cheers!
> >
> >
> >> Best Regards,
> >> David
> >> emailsig
> >> On 12/11/2020 8:31 PM, Dmitry Gusev wrote:
> >>> Hi Thiago,
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [hidden email]
> >> For additional commands, e-mail: [hidden email]
> >>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>