You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Current state: Under Discussion

ISSUE: #597 Why we seperate pymilvus and pymivus-orm

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 PyMilvus and ORM,deciding which repository to keep.

  • Deciding which set of APIs to keep and which package name to keep, pymilvus or pymilvus-orm

  • The details on how to merge these 2 repos.

Motivation

  1. Release is complicated: ORM requires PyMilvus, thus we have to release PyMilvus first and then release ORM.

  2. Features and bug fixes is done only if both repos are updated: A bug fix on PyMilvus needs a update on ORM.

  3. 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)PyMilvusPyMilvus-ORM
Stars2649
Forks11023
Issues(not closed)256
Contributors2418
Used by(repositories)1065
Used by(packages)211

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:


Compatibility, Deprecation, and Migration Plan

Test Plan

Rejected Alternatives

References

  • No labels