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

Multi-version capability #132

Open
martinmcclure opened this issue Apr 8, 2023 · 0 comments
Open

Multi-version capability #132

martinmcclure opened this issue Apr 8, 2023 · 0 comments
Assignees
Labels
essential Issues that _must_ be resolved

Comments

@martinmcclure
Copy link
Member

Currently, Sparkle depends on having identical versions of Sparkle installed in the GemStone server and the Pharo client. In a scenario where an organization has many stones running and many developers using Sparkle, this requirement could be difficult to satisfy. Add the likelihood that the stones will be of different versions and that different versions of Pharo could be in use by different developers, and using the same Sparkle code across an organization can easily become impossible. So...

Sparkle needs to support multiple Sparkle versions concurrently. The main pieces of this are

  • Allow one Sparkle load support more than one version of remote Sparkle
  • Provide a way for the client and server to negotiate a compatible version to use upon login.

To implement this:

  • Use version-specific subclasses of presenters, RSR services, and tools so that all the code can coexist.
  • Each release of Sparkle will also include code for some (not necessarily all) previous versions.
  • Versions will be numbered with integers corresponding to Sparkle releases, starting with 1.
    • There will also be a pseudo-version "dev" for unreleased code.
  • Upon connection, the server and client will negotiate a common version to use.
    • By default, the highest-numbered version the client and server have in common will be used.
    • There is also API to request a specific version, numbered or "dev."
    • If there are no versions in common between client and server, or an explicitly-requested version does not exist on both client and server, the connection is terminated with a version mismatch error.
    • Numbered versions should always functionally match. However, the "dev" version is a moving target, intended for use in the development and testing of Sparkle. The "dev" version should not be requested unless the requestor knows that the server and client code are identical.
  • After connection, once a version is selected Sparkle will assemble the appropriate subclasses to be used for that connection.
@martinmcclure martinmcclure added the essential Issues that _must_ be resolved label Apr 8, 2023
@martinmcclure martinmcclure self-assigned this Apr 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
essential Issues that _must_ be resolved
Projects
None yet
Development

No branches or pull requests

1 participant