Leaving NextGen … into NextCellent

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.