Create New Versions of Your Plug-Ins

Let's start with a simple case. Your filter is named “Kablammo”:

Suppose that you need to do one of the following:

  1. Make a few changes to the composition, without publishing any new parameters or deleting existing ones
  2. Make minor changes to existing parameters that don't involve, for example, changing the valid range of a slider or the number of items available in a popup menu.
  3. Only update commercial deployment options, such as the product's watermark, requirements, assets, etc.
  4. Make more significant changes, which will involve creating one or more new parameters, or rearranging existing parameters in a different order 1).

Items 1 to 3 in the above list can be done “in place”. That means you can (and should) make changes to your existing plug-in, and simply bump up its version number:

If your filter happens to be the main feature of your FxPack (perhaps it is the only plug-in in there?) then you should also bump up the version number for the product as a whole:

If you need to do Item 4, which means adding new parameters that weren't there before, I recommend that you ask beforehand if it can be done safely. Why is adding new parameters such a big deal? Well it isn't for Motion, After Effects and Final Cut Pro 7. But if you add the wrong parameter in the wrong place, it will simply crash Final Cut Pro 6.

A good rule of thumb: always think of Final Cut Pro as a 80-year old man who doesn't like change. It hates change, and it makes a mental note of how your plug-in “looked like” when you saved the project (what parameters were visible, what menu items were available in popup menus, etc.) Even if you make changes to a plug-in, Final Cut Pro will ignore those changes and display to the user only what it “remembers”.

Hard Case: Major Update

Suppose instead that you are planning a pretty significant update to your plug-in. Whether you want to add a few features or completely redesign the product, the end result is the same: don't mess with the existing plug-in, but create a new one instead.

Let's go back to the “Kablammo” filter. You want to offer a new version, but you obviously don't want to upset your existing users by making all previous projects incompatible with the new version. Here's what you should do:

  1. Select the plug-in, and choose the Edit > Duplicate command:

    You'll notice that FxFactory will create a copy of your plug-in that is identical in every respect except one: it uses a different “Unique ID”. To the host, “Kablammo 2” looks like a completely different plug-in:

    I prefer (my taste, yours may differ) to keep names identical, and instead to use the version number to keep track of stuff:

Remember, our goal was to preserve backwards compatibility. The fact that Kablammo 1.0 is still there satisfies that requirement. However, it won't look very elegant if the user sees two “Kablammo” plug-ins under the same menu. To fix this, select the old plug-in, Kablammo 1.0, and mark is as obsolete:

When you mark a plug-in as obsolete, it will still be available when the user opens up an old project (no missing plug-in errors for the user) but it will not be visible in the host UI. This is like having the best of both worlds. This feature requires some “cooperation” from the host, and it's available in all versions of After Effects, as well as Final Cut Pro 7 and Motion 4.

What if one or two users actually want to use the “obsolete” version again? It's no longer available in the host menus, so how should they access it? Users can simply disable the “Hide obsolete plug-ins” option in the FxFactory Preferences:

Disabling this option makes all obsolete plug-ins magically available again inside host menus.

The bottom line: whatever changes you are planning to a product, it makes sense to work inside the same FxPack, whether it's a small or major update. Resist the temptation to start with a new FxPack: there is little to be gained from doing that (and much to lose, since backwards compatibility is a pretty big deal for users).

Even a seemingly innocuous task such as rearranging parameters can “confuse” and crash Final Cut Pro 6 if the plug-in is using custom parameters, and most plug-ins do.