Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[help/feature] Support for multiple versions of Dissonance in one Unity app #113

Closed
haydenjameslee opened this issue Aug 29, 2018 · 6 comments

Comments

@haydenjameslee
Copy link

Since our product involves enterprise realtime meetings, we need to minimize the impact of backwards incompatible updates. We cannot force our customers to update since their enterprise systems put limitations on software installs along with it being frustrating to delay a meeting by 5 or so minutes while waiting for the update.

With that context out of the way, to prevent any backwards incompatibility issues we would like to include multiple versions of Dissonance in our build. Once a reasonable percentage of customers have updated to the new version then (via a software switch on our server) we can tell all clients to use the newer version.

So the question is: can we currently support multiple versions of Dissonance in one build? If so, how? And if not, would this be possible to add?

@martindevans
Copy link
Member

So you basically want to be able to have the updated version of Dissonance in the application (but not in use) and then switch to using it remotely? I think the best way to do that would probably be to use assembly definitions to isolate the two version of Dissonance from each other (check out this issue for some details on using asmdefs with Dissonance). Then everywhere you interact with Dissonance you'd need to add in a switch which checks the version and uses the correct Dissonance version.

Alternatively if you have all of Dissonance isolated in another DLL (through asmdefs) you could try swapping the Dissonance dll created by your assembly definitions. In principle that should just work (tm) but I'm not sure how well that would work in reality with Unity.

However I'm not sure this is necessary for Dissonance. Although it's not impossible that we would make a breaking network protocol change it's very unlikely - we've frozen the network protocol and will try to ensure that all changes are done in a backwards and forwards compatible manner (i.e. old can speak to new, and new can speak to old).

@haydenjameslee
Copy link
Author

Just for reference, here's a link to the thread on backwards compatibility: #84

@haydenjameslee
Copy link
Author

Yes you're understanding of what we want to do is correct. The immediate concern is with the breaking change mentioned in #84 however we'll have to evaluate if its worth the tradeoff of extra dev time to prevent forcing customers to update.

I'll look into what's involved for the asmdefs.

@martindevans
Copy link
Member

Ah yes if you're before 6.0.2 this is a problem, we only decided to freeze the protocol after that came up as a problem. Besides asmdefs to split things up I think the best I can do is to say that we are very unlikely to break network compatibility after this, so if you do force the update at least it should only be one time.

@haydenjameslee
Copy link
Author

Cool, that's good to know.

@martindevans
Copy link
Member

I'm going to close this issue for now. We've added the asmdef support with Dissonance 6.2.5 which I think will help you solve this issue yourself. Please don't hesitate to re-open the issue if you still have problems with this :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants