Hi,
We have a cloud addon so I can share our experience.
1) Do the instances that havenât upgraded yet cache the old addon descriptor?
Customers are automatically upgraded when any descriptor changes that donât involve scope are detected. In your case, customers will not be automatically updated to the new descriptor because of the scope change
2) How do I identify JIRA instances that use the old version of a connect addon vs a new version?
You need to do more on the backend to track what descriptor versions a customer has, we have a probable overkill backend system monitoring console for our system where we can expose this information.
3) How do you maintain both versions at the same time? Some fancy internal routing? Different baseUrl in the descriptor for new vs old? (Something else?)
Ideally youâd leave legacy implementations present, so that the scope of their previous functionality described in your addon remained functional. New features would clearly not be available, providing some degraded behaviour would again be optimal. In our case, if the descriptor is not up to date, we are not able to do X, and customer instance may try to do Y (that is something we no longer implement, for example, due to deprecation by Atlassian (eg remote conditions)
4) How long are we supposed to maintain the old version and allow customers to continue using it?
As long as it makes commercial sense to do so. Usually customers donât upgrade because they donât know they need to. We are in this situation now, attempted to communicate with long time customers to advise them to upgrade the descriptor as they are missing âexciting new featuresâ etc!
5) How do you guys manage a âbetaâ release that should only go out to a small set of specific customers instead of everyone?
We have a separate private DEV addon, authorized by tokens. By keeping it private you can enable access to it entirely separately. We dont use this method as you describe fro exposure to customers, but it could be used in that way.
We deploy DEV versions to the DEV stack, the DEV descriptor is exposed over a different HTTPs server, all web-links and such end up with {{(DEV)}} after. The point, is that we can then (in DEV) install BOTH the public addon, AND the DEV addon, but co-located, which enables us to TEST what happens in production and compare against what the current DEV release does at the same time, in situ.
Alternatively, If you have ânewâ features you could have some flags on your AC_HOST table that could be used to enable them on a per-host basis.