WP Ultimo 1.9.0 is out! Domain Reseller integration with OpenSRS, new pricing structure, and development roadmap strategy for 2.0 features

Hello, everyone.

This post is going to be HUUUGE, so I apologize in advance.

It announces a couple of very important things. The Table of Contents below is your friend. Use it to navigate this huge mess! This post talks about:

  1. I’m releasing a new version of WP Ultimo: 1.9.0 (and new patch releases of some add-ons to make them compatible with 1.9.0);
  2. I’m also releasing one of the most requested features of 2.0, a domain reseller integration with OpenSRS (with a framework in place to implement other providers in the future);
  3. I’m going to take a different approach to 2.0 feature developments and I need your help;
  4. WP Ultimo prices will change and we’ll switch to a subscription model for new purchases, starting in December.

WP Ultimo version 1.9.0

In this release, I replaced a huge chunk of old legacy code that was holding us back. I completely rewrote the admin page framework to be based entirely on WordPress dashboard widgets (which will make it so much easier for developers to add things to our admin pages). This should also have a positive impact on the performance of WP Ultimo admin pages.

Your experience should remain unchanged on the admin panels though, as the changes were designed to look and feel exactly like they worked before and to be backwards compatible (if you have developed custom code for the admin pages, they should continue to work normally).

The goal with this release is to make sure we didn’t break anything while implementing those changes.

New Features of 1.9.0

“Contact Us” as a price option for Plans

You can now add a “Contact Us” message and a link to the pricing tables for a given plan instead of having a definite price.

Plan Duplication

You can now duplicate plans with just one click, directly from the Plans list table.

New Plan signup URL format

Up until this point, the Shareable URL for plans followed an ugly admin-ajax format. Although we still support that to make it backwards compatible, the shareable URLs for plans now have a more elegant look: yournetwork.com/yourregisterpageslug/frequency/planslug e.g. mynetwork.com/register/1/pro. You can edit the plan slug on the Plan edit screen.

In order to work, this feature requires that you have pretty permalink activated and a custom slug set for the registration page on WP Ultimo Settings Network Settings.

Option to link to an external Terms page

If you prefer to host your term pages elsewhere (for example, on the main site suing a normal page to keep the look and feel of your brand), that’s now possible on the Network Settings options page.

Bug Fixes

This version addresses a number of annoying issues some users were having, including the need to re-select templates on the plan edit page, errors on the template previewer, a fix for the WooCommerce setup redirect taking precedence over the WP Ultimo payment screen and a number of other things. The complete changelog can be found here.

Some users were reporting problems with the updater and the add-on installer. This was also fixed.

WP Ultimo version 1.9.0 also includes other new “features” that are tied together to our new development strategy for 2.0. We’ll talk about them below

What about 2.0?

My original plan for 2.0 was quite simple: I would simply add the features I had in mind all at once, release consecutive alpha and beta versions to validate them, while continuing to provide support to 1.8.0 with patch releases on a different code branch.

While this looked good on paper to me, it became unsustainable in a matter of weeks. Fixes for 1.8.0 were touching parts of the code I was rewriting for 2.0 and mergeability suffered greatly.

To make things even more complicated, engagement on the Beta Program has not reached the levels I (naively) anticipated. Don’t get me wrong, I’m not blaming you guys. You have already a lot on your plate making sure your networks are running smoothly and that your clients are happy.

It was clear to me that this approach was going to lead nowhere. I had to take some time to rethink the plan and I think I came up with a better solution: Feature Plugins.

Don’t worry, I was able to extract off a good portion of the features I had already implemented to 2.0 and you’ll start to see them roll out soon (starting today! keep reading for more =P).

How do Feature Plugins work?

The idea is simple, and it’s not new. The WordPress core development team has been using it for ages now (which just makes me feel stupid from not using this from day one – specially since we had the add-ons infrastructure already in place).

How do feature plugins work, then? You basically develop a desired feature as an external plugin and only after it is tested and it works with the core product you bring the code inside.

This is what is being done right now with Gutenberg and it is one of the reasons why development on it is taking place in such a rapid pace. Another example that not a lot of people know about is the flat look of the admin panel, introduced in WP version 3.7, which was once a hidden plugin in the repository called MP6.

This approach offers several advantages:

  • For me:
    • It makes sure WP Ultimo is as extensible as possible, since we need to be able to modify pretty much every core behavior from an external plugin. This is something crucial if we are to have a strong third-party extensions ecosystem in the future (it is already starting to happen and building this ecosystem is going to be a main priority in the coming months);
    • I can bring on developers to the team without requiring them get familiar with the entirety of the WP Ultimo codebase before contributing meaningful code;
  • For you:
    • One of the problems with a huge, all-new-code 2.0 release was the fear of completely breaking users’ networks. This was something that was getting into my head, adding an immense amount of pressure on me. Later, I realized that this is something that was making a lot of you nervous as well. You battled days and nights to get your network to work just right and although it might be good to have that one new feature, if that meant that your whole project could go to space, installing 2.0 was going to be a huge source of stress and maybe some of you wouldn’t even do it. Feature Plugins remove (or at least greatly diminish) this fear.

This also gives me time to think if a given feature is something fit to be in Core.

The domain selling feature, for example. It seemed to be a good idea to have a feature like that on the Core plugin, but after implementing it and realizing how huge that is on its own (and how it will continue to grow when we add support to other providers), I realized that it might be a better idea to have it as an add-on. This is up for discussion, though. Be sure to leave your opinions in the comments below. Ahh, it wouldn’t be a paid add-on because there is no such thing as a paid add-on anymore. Read the pricing change section for more info on that.

The new plan: walking our way up to 2.0

Once you install the 1.9.0 update, in addition to the Add-ons panel WP Ultimo always had, you’ll see a new menu item called Feature Plugins. On that panel, you’ll be able to see a list of all the available Feature Plugins (just one for now). You can install them directly from that page. Once activated, your install will have the feature in question enabled.

I’ll use this mechanism to release most of the new features posted on the roadmap. Of course, some of those will require additions to WP Ultimo code itself. We’ll release those additions as 1.9.X versions.

Feature plugins that get mature enough will be brought into Core if it is where they belong (will be converted to add-ons otherwise). Eventually, in a gradual and subtle manner, all the major pieces will be in place and we’ll reach 2.0.

With all that said, I need your help in two ways:

Enable automatic error reporting

A better error reporting system

While the Beta Program, the forums, and the Intercom chat are all good to have, they are an active feedback system. It means that you need to go out of your way to install the beta software or to write a bug report and send it to me. That all takes time, a lot of time, and if the issue at hand can be “resolved” by simply turning WP_DEBUG and error_display off, I won’t ever get to know it even existed in the first place.

To address this and make sure we don’t add a single error line to your log files we are introducing a new passive way to report bugs. All it does is send to me any WP Ultimo error that happens on your network. It does not send over any sensitive data, or your API keys, or anything like that. Just your network URL, the WP Ultimo version you are running and some environmental variables (PHP version, MySQL version etc).

This is what we see on our end when you encounter an error

This is an opt-in program. You can turn it on at WP Ultimo Settings General.

It doesn’t add any overhead to your network install.

Help me prioritize!

Our current roadmap does not do a great job of letting me know what you guys really need on your networks. I’m looking for a way of gathering meaningful data on what to prioritize and you’ll probably receive a poll in the next weeks asking a few questions about WP Ultimo features and your networks.

It would be awesome if you could participate on that =)

Allow your clients to register domains right from the signup flow

Our first Feature Plugin: Domain Selling directly on the signup flow!

One of the features I was able to extract from the 2.0 codebase was the domain selling integration with OpenSRS. It was built with expandability in mind. This means that the framework to add new providers in the future (like Namecheap and others) is already in place.

This feature plugin implements a pretty straight-forward flow:

  1. You select which plans support domain registrations;
  2. WP Ultimo adds a new step on the signup flow, called “Custom Domain”;
  3. Your users search for an available domain that they like and select it;
  4. Then, you have two choices:
    1. Allow the registration to happen right after the signup is done, which means that as soon as the account gets created WP Ultimo will send the purchase request to OpenSRS (aka, money will be deducted from your balance over there right away), OR…
    2. You can configure WP Ultimo to only place the domain purchase order when you receive the first payment confirmation from the user, which is advisable.
  5. WP Ultimo will then add the mapping as an inactive mapping on the users’ site and start to periodically check for DNS propagation;
  6. Once WP Ultimo detects that the domain is pointing to the right IP address (your network’s), the mapping will be activated and the user site will be accessible via the mapped domain.

Since this uses the regular WP Ultimo domain mapping functionality, all the integrations already supported by WP Ultimo will support domains purchased during the signup flow as well. This means that if you are on a hosting provider that supports autoSSL, like Closte.com, for example, the entire domain registration and SSL certificate fetching flow is now covered by WP Ultimo.

The plugin only supports domain registration during the signup flow for now. There’s no UI for the user to purchase a domain from inside the WordPress dashboard. This also means that users that upgrade from a plan that does not support domain registration will not be able to register a domain after the upgrade. This is something I’ll address in the next releases.

As mentioned before, this Feature Plugin will be available to install on the Feature Plugins admin page as soon as you update to 1.9.0.

I also wrote a tutorial teaching how to configure OpenSRS in order for the plugin to work. You can read it here.

New Prices

WP Ultimo will be 2 years old this Nov 21. Time truly flies…

I coded the last lines of what was going to be version 0.0.1 on a library in Minnesota (where I was doing a semester abroad through one of my university’s exchange programs). I was so sure no one would trust some random guy from Brazil with their money that I placed a pretty low price tag on it and I made it a one time fee as some sort of competitive advantage.

The price I had back them is the exact same price we have today. We’re still rocking that one time fee. However, WP Ultimo is no longer the same product it was back then. Not by a long shot.

WP Ultimo now powers a considerable amount of businesses in more than 20 different countries. There are people quitting their jobs to focus full-time on their networks running WP Ultimo. There are fuc#!&ng multinationals with 9-digit annual revenue creating products on top of WP Ultimo. This is not something I could have ever imagined.

While this is incredibly awesome and professionally affirming, it does mean that there’s a lot more pressure over my work now. Taking a network down with a bug can mean taking away the only source of income of a family somewhere. Although a bit extreme, this is the kind of thought that goes through my mind these days.

With all that being said, my number one priority right now is making sure WP Ultimo is a sustainable business in the long run. I want to be able to continue to work on it for the next 5-10 years at least. I want to grow a huge community around it and to have a team helping me support you so you can do what you do best.

This means that I’ll no longer be able to offer the plugin at the same pricing point. This also means that we’ll be switching to a yearly subscription model, like most premium WP plugins do.

Starting on the 15th of December, WP Ultimo licenses will be sold at the following price points:

  • Starter – $99/year – 1 Network
  • Plus – $169/year – 3 Networks
  • Pro – $249/year – Unlimited Networks
  • Lifetime – $499 one-time payment – Unlimited Networks

Pro and Lifetime license holders will have access to all premium (currently, the paid add-ons) and free add-ons.

Starter and Plus plans will have access to the free add-ons.

“I already own a license, what does that mean to clients like me?”

You bought a lifetime license, so you’ll continue to have access to support and updates. In addition to that, starting from Dec 15, you’ll have access to all premium add-ons at no extra charge.

The network count limitations of your license will continue to apply, though. If you own a Single Network license, you have until Dec 14 – 23:59 to upgrade to the Unlimited Networks license paying the current price.

It’s all about community!

I know that Facebook seems to be the place to be when it comes to discussing WP Ultimo networks. Unfortunately, I still think I’m not ready to join you there (I spent a lot of time trying to get rid of Facebook as it was so disruptive to my work and I’m afraid of coming back). I’m doing my best to be able to do that in the future, though.

I do miss being able to be closer to people building networks using WP Ultimo. That’s why, starting on December, I’ll host biweekly hangouts. The idea is to have a space where we can all talk face to face, get to know each other, discuss WP Ultimo features and so on. This is not meant to be a webinar where I’d be talking and you’d be listening. The idea is to have a conversation.

I’m not sure if this is a good idea or not and I think there’s only one way to find out. I’ll let you guys know once I have more details, but I would love to hear what you think in the comments below!

I think that’s all I had to share today.

Hope you enjoy this release and the Domain Selling feature plugin!

Kind regards,

Arindo Duque.