Current state: Under Discussion
ISSUE:
PRs:
Keywords:
Released:
Summary
Currently we have 2 python SDKs for Milvus, PyMilvus and ORM (short for PyMilvus-ORM). Both of them have a unique repository on GitHub and a unique package on PYPI.
This proposal is about
Merging 2 repositories of
Deciding which set of APIs to keep and which package name to keep,
pymilvus
orpymilvus-orm
The details on how to merge these 2 repos.
Motivation
Release is complicated: ORM requires PyMilvus, thus we have to release PyMilvus first and then release ORM.
Features and bug fixes is done only if both repos are updated: A bug fix on PyMilvus needs a update on ORM.
Complexity on maintaining: We have to maintain 2 repositories, 2 sets of CI pipeline, 2 GitHub actions.
Design Details
A. Which repository to keep?
GitHub repo(2021.7.15) | PyMilvus | PyMilvus-ORM |
---|---|---|
Stars | 264 | 9 |
Forks | 110 | 23 |
Issues(not closed) | 25 | 6 |
Contributors | 24 | 18 |
Used by(repositories) | 106 | 5 |
Used by(packages) | 21 | 1 |
Obviously (of course ) PyMilvus repository is more valuable.
Plan A1 (Recommended) : Merge ORM codes into PyMilvus repository.
Pros: Keep the values of PyMilvus repository.
Cons: Not see any.
Plan A2: Merge PyMilvus codes into PyMilvus-ORM repository.
Pros: Not see any.
Cons: Lose all the values on PyMilvus repository.
B. Which set of APIs to keep and which package name to keep?
Plan B1 : Keep PyMilvus APIs and the ORM APIs
Pros:
1 More APIs for users to choose from.
2 Easier to merge 2 repos
Cons:
1 APIs have duplicate functionality.
2 Complexity on maintaining new features, debugging, bug fixes, and CI pipeline is not reduced.
3 ORM's APIs depend on PyMilvus's API.
4 No much difference to two repos, except one package less.
Package Name: In this case, I prefer pymilvus
package name.
1 It's more like an "enhanced" pymilvus.
Plan B2 (Recommended): Keep ORM APIs and remove PyMilvus APIs
Pros:
1 Reduce the complexity on maintaining the repository.
2 Removing PyMilvus APIs means the 2 repositories' codes can combine deeper, reducing unnecessary function calling and object transferring.
Cons:
1 Merging is more complicated and needs more time.
Package Name: In this case, I prefer pymilvus-orm
package name.
1 We keep ORM APIs, pymilvus-orm
is more compatible with the APIs
2 Milvus 1.x users won't be confused, Milvus 2.0.0RC users won't be confused.
Plan B3 (Not Recommended): Keep PyMilvus APIs and remove ORM APIs
Cons: All the efforts on ORM are wasted.
C. How to merge 2 repos?
Plan C-A1: