I’ve been using the NextGen plugin on my WordPress photo portfolio site for a few years now. Sadly, I’m going to have to move away from it. Fortunately, the NextCellent Gallery page plugin forms a very compatible migration path.
Now, this may – at first look – seem to be a retrograde step. NextCellent doesn’t update as often, doesn’t have as much functionality, and is based on an old version of NextGen.
But – from my perspective – the change has some real plus points.
Maintenance of the core NextGen code has now been taken over by Photocrati.
NextCellent was created – from NextGen v 1.19 – to give a more stable migration path. Perhaps initially conceived as a short-term project, it’s now gaining some legs, and the progenitors are putting some effort into documenting the product.
Maintenance
Top of the list – I can read the code. And maintain it. And code around it.
I quite like having control of my own code – it’s not always possible, but I’ve chosen my own lightbox and slider tools, and I’m happy with them.
Since version 2, NextGen has been built using their framework development tool – known as Pope. I’m sure that it is possible to find out how this works, but I could only find one, two-page tutorial, and no worked examples of how to use the specific classes used in the plugin.
Now, I understand that this is a bit atypical for NextGen users, most of whom (probably) just want a turnkey solution. And – from Photocrati’s point of view – I can understand that (with their massive user base) they only want to support the current release. Fair enough. But I’ve done a bit more to embed the software into my theme.
Stability
NextGen version 2 (in mid-2013) was quite traumatic. This was the first release with the new framework, and there were a lot of problems. For my site – which mainly used the back-end database functions – this was sorted fairly easily. Most of the legacy code was untouched, so I just had a few problems with script conflicts, which were resolved in a couple of weeks.
Then came release 2.0.67. The old legacy code (specifically, a file called ngg-db.php) was re-engineered using Pope. And released with very little warning. Sadly, none of the lessons which could have been learned from release 2 seem to have been implemented.
Fortunately, I’d decided to test the release, and discovered that some functions I’d embedded in my theme behaved differently – and not in the way specified in the documentation. I logged the issue, and in the next release – the function was deleted altogether! The Pope replacement apparently has a solution, but the documentation is really minimal.
Now, I don’t mind putting a bit of work on my site, but I do like to be able to plan ahead if there’s going to be some significant changes.
And I really can’t be doing with functions disappearing – or being deprecated – without easily-adopted alternatives.
Philosophical
I could have worked around some of the problems, but when I stepped back, I found I had some philosophical issues with the way NextGen has evolved.
I bought into the WordPress ecosystem because I believe in Open Source. Not just because it’s less expensive, but because I feel comfortable knowing that I can’t be held to ransom for my own data, that lots of individuals have had eyes on the code – and will pitch in on developing (or fixing) if necessary. Software releases happen because there’s a reason – not because of a marketing schedule.
But when you lock software into what is (effectively) a proprietary system, then you lose that community of support. Few will have the patience to learn a framework and figure out how the code works. So all of my eggs would be in one basket.
Compatibilities
There are a few incompatibilities between NextGen and NextCellent – not surprisingly.
The most noticeable is that I had to rebuild my albums (re-attaching the galleries).
NextGen now has a few more WordPress filters, so I had to work around those.
NextCellent has some styles assigned, which were over-riding my own css. I set the NextCellent styles to “default.css”, which sorted that out.
Perhaps the biggest problem was with my lightbox plugin – “Lightbox plus Colorbox”. I found a way around that using the thumb action to add the “data-lightboxplus=”lightbox” (in my theme), and everything hooked together.
Everything works now.
And the nice chaps at NextCellent have even taken the time to put together a NextCellent Reference Guide.