I have couple of questions on extension licenses I hope someone can help with…
Does SU (2017 onward) sufficiently block users from using unlicensed extensions (as is indicated here) or is is still recommended, as per some comments in old posts, that the developer include checks within their code (e.g. in the main logic methods using Class: Sketchup::Licensing::ExtensionLicense)?
If an extension is made available for free (for 2017 onward), can the developer decide to pull it later on and, at this point, SU prevents all users from using the extension henceforth (via the license checks, see above)?
The Sketchup::Licensing module contains methods for extensions purchased from Extension Warehouse to check their licensing status. Since older than 3 years SU versions are “disconnected” from Extension Warehouse the licencing also won’t work. (See: End of Support Policy | SketchUp Help )
The non supported versions wont be able to download extensions from warehouse from within SU, only download using the web browser is possible. So if the licencing done via the warehouse Sketchup wont allow that extension to run.
If an extension is made available for free that version will work as it is until user decide to upgrade it to your new version.
You can remove this from the Extension Warehouse, but not from user machine.
__
However I’m not a licencing expert… I have no idea how does it exactly work, but certainly you can write your own licencing methods as well.
In the early days of the EW (back in 2013) the first developer agreement required that extensions be hosted for an indefinite time so as to support user’s upgrading to another computer or SketchUp versions.
This changed when it became clear that old versions of the web browser interface libraries could not support the newer features in EW v2, and still later (as Dezmo showed) when the web services support policy was finally changed to mesh with the version support policy.
However, the second part of your question is invalid, as free extensions do not use license checks. Ie, free extensions are not assigned user licenses, only commercial paid extensions have licenses.
So, once a user installs a free extension, they can use that version of the extension as long as they wish. Removal from the Extension Warehouse does not automatically uninstall the extension, nor does it switch it off on user’s machines.
And further, once a user has the RBZ archive for a free extension, they can copy it to other machines and install it manually.
Note that “free” does not mean the same as “free trial”. I know from experience that once a free trial expires the extension can not be run again, even from a fresh install, until you purchase a license.
Thanks for the responses. I thought I might summarise. Let me know if anything is wrong…
The SU API licensing module only works for ‘commercial’ (e.g. free trial/paid-for) extensions (not free extensions), distributed via EW.
To distribute a ‘commercial’ extension via EW, the developer must be a vendor.
If an extension is distributed for FREE via EW, it can be removed by the developer from EW or can be changed to a paid-for version in EW.
If an extension is distributed for FREE via EW, the developer CANNOT disable copies already installed on users’ machines.
If an extension is distributed as a FREE-TRIAL ‘commercial’ extension, the developer CAN disable copies already installed on users’ machines.
If an extension is distributed as a PAID-FOR ‘commercial’ extension, the developer CANNOT generally disable copies already installed on users’ machines (because they paid for it presumably).
Please can you clarify the following: -
Dan’s comment: “And further, once a user has the RBZ archive for a free extension, they can copy it to other machines and install it manually.” …If the RBE version is the one distributed by EW, how would they have the RBZ?
Is it necessary for the developer to include license checks within their code, or can SU be relied upon to police licensing?
What is the maximum length of a free-trial that the developer can set?
It depends upon whether it is a free or commercial extension. If it is free, it can be downloaded from the EW in an external browser. Even within SketchUp, the EW window must download the RBZ (zip) archive (to likely the temporary internet files folder, or the temp folder) before it can be installed.
If the extension is a paid commercial extension that is hosted on the EW (and therefore uses the EW licensing,) it can only be downloaded via SketchUp’s internal EW window. Meaning that the manual “Download” link does not appear when a person externally navigates to the extension product page in an external browser.
RBE is only a file encryption for .rb files within a RBZ archive. All extension hosted on the EW are within RBZ archives (which are zip files.)
However, once installed, the extension registrar and the extension subfolder of the same name are extracted to the user’s “Plugins” folder. A person can easily copy these back into a zip archive and rename it with a .rbz filetype. Or just manually copy them to next year’s “Plugins” folder.
Whether the licenses are that portable, I do not exactly know.
There is also a class on the EW called a “listing page”. This lists extensions that are hosted in other webstores, some of which are company/developer specific. If these are paid commercial extensions, they would use their own licensing system.
I am not sure if the same extension (talking the GUID for the extension) can be changed from free to paid. You might need to remove the old free one, then submit a new one so it gets a different ID number.
Not in the sense that there is some disable switch. What Steve meant was that the extension becomes unusable when the trial period runs out.
Also, a Trial extension only apply to paid commercial extensions hosted on the EW. There is no trial controlled by the EW for free extensions or those hosted on external webstores.
I think that your code does need to do license checks.
The system notifies you via the API calls whether the license is valid.