New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discussion: Joomla 4 support, what do do with Joomla 3? #2122

Open
mahagr opened this Issue Sep 21, 2017 · 10 comments

Comments

Projects
None yet
5 participants
@mahagr
Copy link
Member

mahagr commented Sep 21, 2017

While the schedule of Joomla 3.9/4.0 is still somewhat open, I would like to start a discussion on the future support for the Joomla -- which versions should we support and how.

Joomla 4 will be incompatible with Joomla 3 in both the code (namespaces) and the template (Bootstrap 4). This means that no extensions and templates written for Joomla 3 will work out of the box in Joomla 4.

Joomla will be providing forward compatibility layer in Joomla 3.9, which will allow the same code to work in both versions of Joomla, but with the caveat that templating will still be Bootstrap 2.3 vs 4.0 depending on which version you are in. This will allow easier migration between the versions as you can do the migration in two much easier steps rather than one big jump.

Gantry 5 has the benefit over most of the other templates out there that Gantry templates do not use any version of Bootstrap for the main layout, which means that supporting Joomla 4 can be done much easier by just updating the Bootstrap specific CSS just for the components and modules.


Back to the question: which versions of Joomla 3 should we still be supporting? The obvious answer is that Joomla 3.9 should be supported, but what about the older versions between J3.4 and J3.8? Should we drop the support for all of those older versions when Joomla 4 releases? Are there any users who are not able to update to Joomla 3.9?

We have basically 3 options how to move forward (easiest first):

  1. raise minimum requirement to Joomla 3.9
  2. ship with two distinct packages, one for J3 and another for J4
  3. add compatibility layer and keep supporting all the older versions

Dropping support for older versions of Joomla means that you will not get any updates to Gantry until you upgrade to J3.9.

@JoomFX

This comment has been minimized.

Copy link
Contributor

JoomFX commented Sep 21, 2017

Hey Matias,

In my opinion, the best way to go is Option 3 (Compatibility Layer and keep supporting everything from J3.4 up).
Of course, this would be the best option if there is not too much bloat (redundant code) that needs to be there for the compatibility layer.

As you know, "Backward Compatibility" is the thing that almost killed Joomla and that got WordPress ruling the CMS world.

It is up to you to take the decision, I just think that Option 2 is the worst option. We already have enough packages for G5, adding even more will bring additional complexity and... frustration ;)

@RyanMPierson

This comment has been minimized.

Copy link
Member

RyanMPierson commented Sep 21, 2017

The problem we ran into with Gantry 4 was that it was carrying compatibility layers dating back four generations. Gantry 4 is still a solid framework, but I couldn't imagine it being usable with yet another compatibility layer.

The question we face now is whether or not we want Gantry 5 to suffer the same fate or to continue to be what it is now... sleek, slim, and optimized.

@JoomFX

This comment has been minimized.

Copy link
Contributor

JoomFX commented Sep 25, 2017

@RyanMPierson Hey Ryan,

I don't really know what is involved in adding a compatibility layer for the older versions (J3.4 to J3.8) but if it is just few conditional statements then I think it is worth it.
And some day, when Joomla 5 is released, the Joomla 3.x support can be dropped and the code can be cleaned up. I say when Joomla 5 is released because since then most of the users will already be on Joomla 4 and most of the extensions will be re-written for Joomla 4 (Bootstrap 4).
And as far as I know, the only major change that needs to be made for the compatibility layer is to load a different version of Bootstrap which can be achieved easily by adding couple of if/else statements in page_head.html.twig:

{% block head_platform -%}
    {{ parent() }}
    {% if JoomlaVersion == 3.x %}
        {% if gantry.theme.joomla %}
            <link rel="stylesheet" href="{{ url('gantry-assets://css/bootstrap-gantry.css') }}" type="text/css" />
            <link rel="stylesheet" href="{{ url('gantry-engine://css-compiled/joomla.css') }}" type="text/css" />
            {% if gantry.page.direction == 'rtl' %}
            <link rel="stylesheet" href="{{ url('media/jui/css/bootstrap-rtl.css') }}" type="text/css" />
            {% endif %}
            <link rel="stylesheet" href="{{ url('media/jui/css/icomoon.css') }}" type="text/css" />
        {% endif %}
        {% if gantry.debug %}
            <link rel="stylesheet" href="{{ url('media/cms/css/debug.css') }}" type="text/css" />
        {% endif %}
    {% else %}
        {# The equivalent code for Joomla 4 and Bootstrap 4 #}
    {% endif %}
{%- endblock %}

The Installer will also need to be changed for Joomla 4 but if it can be achieved with couple of conditional statements then I think it should be fine.

The last few years I actually realized how important the Backward Compatibility is for the success of any given software. It is such a pain for the users/developers if they need to re-write their code or if they need to perform complicated migrations.

However, if adding a compatibility layer involves much more code that will make the framework heavier, bloated and more difficult for maintenance then yes, creating two packages will be the best option (one for J3 and another one for J4).

But raising the minimum requirements to Joomla 3.9 might be very frustrating for some users who are not able to update for one reason or another.

@mahagr

This comment has been minimized.

Copy link
Member

mahagr commented Sep 25, 2017

Adding support for J4 means to rewrite all the code to use the new API from Joomla 4.0 (which is backported to J3.9, making it work too). Basically, it is the same option as having 2 versions of Gantry, but instead of shipping 2 packages, we would just wrap everything into a single one. Joomla 3.7 and 4.0 have nothing in common -- every line of code integrating to Joomla needs to be rewritten, both in PHP and HTML/CSS. This is why Joomla will release 3.9 -- it will allow the same code to work in both.

All existing Joomla versions below J3.8 are already vulnerable to several security issues. It is not safe to use those versions anymore.

I disagree on backward compatibility: it means that you can safely update without getting any issues. It has nothing to do with being able to run the application on older environments. But I do get what you're saying.

@JoomFX

This comment has been minimized.

Copy link
Contributor

JoomFX commented Sep 25, 2017

@mahagr Alright Matias, so it seems that the best option is Option 2 (two packages).
Or you can raise the minimum requirement to Joomla 3.9...
You guys are the owners of the project so it is really up-to-you to decide.

Let's see what the other users (if any) will say...

@yellowwebmonkey

This comment has been minimized.

Copy link

yellowwebmonkey commented Sep 25, 2017

Our company manages 50 Joomla websites monthly. I would much prefer #2, having two separate packages. We love Gantry because it runs well, so wouldn't want #3 if developers think it will make it bloated. Having the minimum requirement raised creates a time cliff for us. All the sites will get upgraded but many sites have quite a bit of customization. So having separate packages means we have flexibility and don't have to drop all new projects to get 50 sites with custom components, etc all upgraded by ___ date.

@mahagr

This comment has been minimized.

Copy link
Member

mahagr commented Sep 25, 2017

@yellowwebmonkey My question is how long would you need to have J3.4-3.8 support? Also, remember that Joomla 3.9 will be supported for 2 years regardless of which path we take.

Also in every case, there will be one last version supporting Joomla 3.4+ just before Joomla 3.9/4.0 releases.

I guess I'm just going to try to justify Joomla <3.9 support -- with option 2 it is trivial to keep the support for a few months after Joomla 4.0 comes out, but as the time passes, the more work it will be to maintain 2 versions. This would favor option 3, but it is more work to implement and has performance implications, too.

All the options are compromises, and all of them are still open to me. Basically, it all comes down if we want to keep supporting older versions of Joomla and if we do, for how long.

@yellowwebmonkey

This comment has been minimized.

Copy link

yellowwebmonkey commented Sep 26, 2017

I have a really hard time planning because the Joomla roadmap doesn't have ballpark timelines on it, other than the 2yr EOL you mentioned. https://developer.joomla.org/roadmap.html

As a non-developer, I may be asking dumb questions, so please bear with me.

  • What is the actual definition of "supporting" a version? Just security releases or new features? If I am hanging out on an old version, I have no expectation of getting new features.

  • Are the changes in Joomla 3.9 going to "break" older extensions or if it works on 3.7, should it (in theory) function the same on 3.9? I have inherited many clients with custom extensions, most of which have just been duct-taped along the way.

  • At what point will Gantry5 require PHP 7.0+?

  • Do you think that most established extension companies will have their 4.0 compatible versions out in a timely matter? From 1.5 to 2.5 to 3.0, I had to wait several months for ZOO and a few others to come out. Unfortunately, I am thinking there will be developers that won't bother re-coding to 4.0 and then I will have to find replacement extension and migrate data over.

I would really prefer the separate versions over a bloated package. Many of my clients have a ton of 3rd party ads/scripts that slow their sites down a ton anyway. Not sure about others, but I would be okay with a paid version (within reason) of the older package to help offset the extra work.

I do not know much about the changes in Joomla 4, but it is making me very wary. I appreciate y'all getting input.

@mahagr

This comment has been minimized.

Copy link
Member

mahagr commented Sep 26, 2017

I don't think that even Joomla team knows when the release will be. I think it's about 6-12 months away.

  • By supported version I mean all the updates. Unsupported means no more releases -- except maybe security release, but we're really not had security issues this far.
  • Joomla 3.9 should be as good as any other Joomla 3 release -- it likely breaks something just like every other minor release before it did.
  • Gantry 5.5 will have PHP 5.5.9 as the minimum requirement. Right now there are no plans to raise the requirement to PHP7.
  • Historically it has taken about 6-12 months to port largest components to support J1.6 and later J3. This time the time will be shortened because of J3.8 already has the new classes. Though this will still leave Bootstrap 4 conversion, which can take some time. This is partly why Joomla has promised to keep supporting J3.9 for 2 years. It should give enough time to get all pieces together for J4.
@Bokelmann

This comment has been minimized.

Copy link

Bokelmann commented Dec 5, 2017

For Gantry 5 for I vote for "raise minimum requirement to Joomla 3.9" ...
All versions before that have major security issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment