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

Shrink Public API Surface for 1.0 (Umbrella Ticket) #452

Closed
11 tasks done
jenshalm opened this issue Jun 29, 2023 · 0 comments
Closed
11 tasks done

Shrink Public API Surface for 1.0 (Umbrella Ticket) #452

jenshalm opened this issue Jun 29, 2023 · 0 comments
Milestone

Comments

@jenshalm
Copy link
Contributor

jenshalm commented Jun 29, 2023

The major (or even sole) focus for 1.0.0-M2 will be to dramatically shrink the public API surface to ensure longterm binary-compatibility is feasible for the 1.x lifespan.

Many APIs are public "by accident", since it is the default access and earlier years did not put a major emphasis on bincompat anyway (it was an unrealistic goal as long as very large new sets of functionality were introduced). By now Laika has matured in a way that it makes sense to address these historic issues now.

The main public APIs that need to remain are:

  • The core APIs to configure and run a transformation.
  • The main extension APIs (everything reachable from the ExtensionBundle type).
  • The theme support and Helium configuration and types reachable from there.
  • The APIs of the included micro-libs, mainly parser combinators and config/hocon support.
  • The API entry point to launch a preview server.
  • The keys for settings and tasks in the sbt plugin as well as relevant helpers.

For everything else package-private should become the new default.

This will most likely leave behind some skeleton packages with only a few public types left. These will be "re-homed" later, but renaming and repackaging in general is left for the final milestone to keep the 0.19 maintenance branch largely in sync as long as possible.

To avoid a mega-PR the work will be split into the following sub-tasks (PRs will be linked here as soon as they are created):

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

1 participant