@skenow did you create a ticket for this search optimisation on github?
I think imBlogging and news more or less have the same use case? Perhaps we should prioritise one of the two. We use news on the impresscms site for example, but it should be possible to do a conversion from one to the other.
I also know which modules I will prioritize -
I do need to figure out what to do with forms (Formulize), and decide on which news module. A downloads module, a links module, and iForum are also on my list.
Loosely based on what I use normally on my sites:
Just choice 10 modules for now.
All these stats are cool but not possible right now.
To be honest, the feature was a bit wonky, so it would need a bit more work to bring back 😁
Might be a good subject for a newsletter.
It would have been nice if that feature stayed active. I know we used a different server instance for gathering the data.
We could put up a survey and capture information via Google Forms. Download information is always another option to get a sense of what people are trying.
How can we capture our top must have modules?
We had something in that direction several years back, with the heartbeat functionality each time impresscms was installed. Short term, we could look into a similar system that sends the modules and the versions once every month with a autotask. Setting up the receiving end will be the hardest (Google Docs perhaps?)
On the longer term, we can look at the installation statistics from packagist when our modules are installed using composer.
I agree - progress in the core cannot and should not be held back by the lack of module development. And the core should not get so far ahead that no one can follow.
What we do not have is a good sense of what modules are being used, other than what we are using ourselves. Some have alternatives that could be used in place of the module selected. In those situations, when the alternative is compliant with the core and the underlying architecture, we proceed. In cases where there are limited options and the module is highly used, we need to work together to improve the core and the module.
What I see as the outcome of this next release is a way to gauge what modules are active and will be updated. We will be better off as a community when we all have a path forward together.
How can we capture our top must have modules?
I made a new milestone for this release called new 2.0
This will make it easier to follow up what should be finalised before releasing the final release.
You're correct there @Mekdrop. And that is the difficulty : we have no idea what situation most of our users are in. I think Skenow is one of the user with most active sites a the moment, and I know of a few users in Germany that are awaiting newer PHP support because of the shutdown of PHP 7.4 by hosting companies there (they try to be up-to-date).
But other than that, it's a big unknown.
I'm trying to get htmlpurifier 4.15.0 standalone updated but Git is giving me some dificulties with unchanged files that it keeps marking as changed. And I'm still waiting for the PRs for 1.5.x to be approved in order to be able to continue.
I think the answer to the question about PHP compatibility and icms is same as 'what modules should run on newer PHP?'. Because there is no quick way to fix everything. So at least for now ICMS should run at least something that is required by most users.
This all depends on requirements and how far we want to go here. Getting this release out sooner, while it is not yet fully 8.0 compliant could be an option. However once that branch is out, I don't intend to focus much more time on it, so further releases to polish up this branch would be mostly up to you then. This renumbering has had too much of an impact already on the development of the next version (former 2.0 branch).
If I spend time on modules, it will first of all be to rewrite them to be compliant with the next version. I might do bugfixes for the older version, but there are so many modules that need attention that I cannot commit to php version upgrades or feature improvements.
I would expect you could say that 2.0 will only upgrade from 1.4.4, partly because of the difficulty to get everything to run on such a wide range of PHP versions. But I'm not in that situation that I need to upgrade from sites older than 1.4.2.
According to PHP Code Sniffer and the PHP Compatibility rule, our current 1.5.x branch will have errors below PHP5.6. The changes to make ImpressCMS run on PHP7+ haven't raised the minimum required version as of this point.
There still are some things that need to be addressed to eliminate errors when running under PHP7.0 - PHP7.4. Some are external libraries, as @fiammybe noted, and some are in code that won't get used (mysql extenstions aren't used when PDO is the db connection type, but the code is still there) or get used often (mostly in external libraries).
We do need to become PHP8+ compliant ASAP. Will having another release come sooner get us more testing with the various environments everyone is using? Will it help get other modules updated to be compliant with the newer versions of PHP faster?
Once we have a proper scope, we can better estimate the timeline to deliver.
PHP7.4 is deprecated - that doesn't mean every site and server are running at that version. How many sites are still running under PHP5.6 or less? Even getting to that version could be an adventure. I've found a number of ImpressCMS sites that will have to take extra steps before they upgrade, some of mine are included in this list.
At a minimum, they will have to upload the new version and switch their server to the new version of PHP in order to complete the upgrade. If they haven't switched to PDO, they will have to do that, too, before they proceed. I use Formulize which implemented PDO independent of the core and activating PDO for the site causes problems with the module.
These changes are to be expected - I feel we need to be very open about what needs to happen and help them anticipate and navigate the requirements.
I've been thinking about a pre-upgrade script that could be uploaded to their site, or added as a custom block, that will do check the preliminaries a little more closely. We can't really do this in the current system block because they would have to upgrade to get the added tests. It could also scan for the use of deprecated functions and methods that were removed in 1.4 and the upcoming 1.5. The deprecated messages showing when debug is turned on is also a good place to make sure you're ready to move ahead.
For the time being, nothing changes to the github setup, even though it may be a bit confusing. The 1.5.x branch is being prepped to work under PHP 8.0. From the number of changes that need to be done, we accumulated quite a bit of technical debt there.
@skenow asked the question if we shouldn't just release the new version with PHP 7.4 support only, but I have some issues with officially releasing a version for an already deprecated PHP version
For those of you that are adventurous : the current codebase works perfectly well under PHP 7.4
Things I'm currently doing is upgrading the external libraries. Some of them (like HTMLPurifier) need a version upgrade to be PHP8 compatible.
Granted, this 8.0 requirement is turning out to be much more than anticipated, but I'm confident that it is a step that we need to take. It will give us better code overall, which is always a good thing stability-wise.
I agree that can be done but I think is much harder.
From what I see @jegestaff added only automated tests. Idk how much time would need to require to add add also automatic dependencies upgrading and other time-saving tasks.
Yes, maybe there is a way but at least for now I don't see something that would look easy.
In any case @skenow if you wish to maintain 1.x I don't mind but I just don't see any way how to keep up always with the required updates (run on newer PHP/MySQL and be secure) and that code.
4th attempt to reply from my phone. Not a good user experience. Blank pages, getting blocked by Protector, and then not knowing how I got sent back to reading and not replying. This is what we really have to address. At least CKEditor works on mobile devices.
Regarding CI - @jegelstaff implemented it in Formulize and ImpressCMS 1.0. It can be done.
I thought about that a bit and I think maybe for now we could just make 1.5.x default branch.
Still, I think that 1.x days are numbered just because some PHP libs that are used core (f.e. Smarty) don't have non-breaking upgrades available.
And then comes another question how to make sure that all modules are working correctly after these upgrades? I here only two possible solutions: a) try to grow our community that would test everything for us b) write some tests and use CI/CD to test all needed variants. Sadly modules with ICMS 1.x are not easily tested with (b) variant and for (a) variant we are still struggling.
Also because it's hard for CI/CD to be implemented for testing modules with ICMS 1.x more manpower is needed to keep up with some required libs for modules upgrades. We can't use Dependabot and still make sure that everything runs correctly.
Maybe there are some other ways how to achieve that but right now I don't see any.
After thinking a bit more on this, perhaps it would be beneficial to split off the 2.x branch in a separate github codebase. It would make life much easier for everyone I think when we no longer have 2 versions running in parallel in the same github project.