-
-
Notifications
You must be signed in to change notification settings - Fork 26.2k
Description
Scikit-Learn developers have long been debating about improving the developer utilities (see #15801 and #20657). The current discussion revolves around the adoption of a specific syntax to differentiate the develop API from the common user API. Here, I'd like to propose an alternative solution: package layering.
The idea is to break scikit-learn into 2 separate packages, sklearn
and sklearn-core
, with the former depending on the latter and the latter providing common utilities for the former. The package sklearn
defines the user-level API for common users, and the package sklearn-core
defines the develop-level API for developers (including the third-party ones).
I see this solution as a neater one than using a specific syntax. The decomposition of the package explicitly and unambiguously defines the develop API rather than implicitly. It also encourages the core developers to think more carefully when developing scikit-learn. In addition, it has an extra benefit for third-party packages: they can now depend on the light-weight sklearn-core
than the heavy-duty sklearn
.