sybrew / the-seo-framework

The SEO Framework WordPress plugin.
https://theseoframework.com/
GNU General Public License v3.0
417 stars 46 forks source link

Migrate SEO Data #548

Closed sybrew closed 1 year ago

sybrew commented 4 years ago

Currently, we rely on SEO Data Transporter to handle migrating SEO data.

We need to move away from that and integrate a transporter in The SEO Framework. Here's why:

  1. SEO Data Transporter has a bug we reported and fixed, but this seems to be backlogged.
  2. SEO Data Transporter doesn't support migrating from Rank Math.
  3. We want to change how our metadata is registered. We can't rely on third parties accommodating changes in a timely manner.
  4. Joost was added as an author of that plugin. Cooperating with the competition doesn't always sit well with me.
  5. One is never served so well as by oneself.

We do not want to add another menu to the WordPress interface to support this one-time thing. Instead, I want to do it in this manner:

  1. On plugin activation, perform a simple test for migratable data. When this is found, add a "Migrate now" persistent notification. Users can navigate to this page via /wp-admin/admin.php?page=theseoframework-migrate
  2. (Maybe) add a link to the migration tool within the "plugin links".

We should considermust also convert title and description syntaxes while we're at it. See #420.

iasgharalikhan commented 4 years ago

Looking forward to this being implemented with TSF, had issues migrating data and especially if the site big then the transporter gets stuck.

black-eye commented 3 years ago

Definitely a good move. I've just had to use SEOPress for replacing the Yoast on an old site just because the import to TSF didn't work. I still have several old sites with Yoast which I'm willing to remove and smooth transition would be a big timesaver.

jdevalk commented 3 years ago

Joost was added as an author of that plugin. I do not believe that my competition has our users' interest at heart.

That's... going far @sybrew. I was added because I did pull requests and fixed the plugin when it was broken. Because I believe people should be able to switch.

sybrew commented 3 years ago

Hi @jdevalk! My Hanlon's Razor has become quite dull after Rank Math entered the scene. I did not mean to attribute this to you personally, but as a general statement about competing in FOSS I've experienced lately — it's becoming rather frustrating.

I'll adjust the wording, sorry about that!

jdevalk commented 3 years ago

@sybrew RankMath copied most of their code from us, so I kinda know what you feel.

jmzolezzi commented 3 years ago

Even the migration steps from Rank Math to The SEO framework are a bit painful, we did this on several sites already, including ours, and WordPress feels fast again, a huge drop on MySQL queries and server usage.

Kudos on your incredibly lightweight plugin!

guyinpv commented 2 years ago

I would like to migrate about 40 sites off Yoast to the Framework. I'm not feeling the most secure using that SEO migrate plugin which is now 2 years outdated.

bonakor commented 2 years ago

Hi. One thing I'm not sure the plugin handles is moving social optimization data. This would be a really nice benefit. Because right now, not being able to migrate this data stops me from migrating.

u4ushare commented 2 years ago

Hope this feature comes out soon. Fed up with the bugs of RankMath.

sybrew commented 2 years ago

Transport

I will deliver this feature via a new free extension for Extension Manager: Transport.

Support for Yoost SEO and Rank Math is coming in the extension's first "beta" release. Support for other SEO plugins will follow soon™.

It will transform titles and descriptions

Transport will include the transformation of %%title%%, %description%, and #other syntax, akin to how other SEO plugins do it. For example, it will transform %%title%% to the actual title of the page. This process cannot be reversed (unless you have a backup).

As I developed this feature, I discovered about 30 bugs in the other software, all of which I fixed via a cleanroom redesign here. So, the transformation will work more accurately than the plugin whence you came. Here's a list of supported Yoost SEO transformation syntax, and an addendum for Rank Math's (yes, it's only 1 SLOC for they stole Yoost SEO's code).

Not everything will be transformed. Some plugin-specific syntax (WooCommerce, ACF) still needs to be developed, and some syntax was impossible to transform accurately without actually visiting the page. For example, This is %%page%% of %%pagetotal%% would cause problems when transformed (we cannot predict %%page%%). These issues could be addressed alongside the release of another planned extension, see #140.

To help you find these untransformed titles and descriptions, The SEO Framework v4.0.5 already brought a feature that detects Yoost SEO's syntax. Using that, the SEO Bar warns you about what isn't (entirely) transformed. With what I learned creating Transport, I'll expand that syntax detection in the next major update of TSF, with Rank Math support forthcoming.

All this I will explain succinctly on the (upcoming) extension page.

Marked as beta

The Transport extension is marked as a beta because I'm not confident enough to say it'll work flawlessly 100% of the time... yet. And since we're working with live website data, I think the "beta" marker will cause more users to make a precautionary/obligatory backup.

Pains of development

Thus far, this was one of the most challenging extensions to develop because I set the ludicrous requirement of adding a real-time logger, and since many shared hosting platforms don't support SOCKETs, I had to reinvent the wheel. For mostly a gimmick, 300+ hours spent developing is excessive [1] [2]. Still, if the transportation fails, you'll instantly know which post or term caused an issue.

I also tried to anticipate the many esoteric methods of how other SEO plugins handle data, but even accounting for the absurd, I still had to write bespoke workarounds.

The result

image

Here you can inspect the code.

Logo

I spent another three days making this most critical asset: data points (little blocks) coming in from all sides, going into TSF (plus), after which you rank up (arrow). The arrow also signifies movement, ergo transportation. Brilliant.

image

(Logo code)

sybrew commented 1 year ago

Closing as completed. Transport is now available for free as part of Extension Manager v2.6.0.