Avaiga / taipy

Turns Data and AI algorithms into production-ready web applications in no time.
https://www.taipy.io
Apache License 2.0
10.94k stars 775 forks source link

Migration to Monorepo - Next Steps #499

Closed joaoandre-avaiga closed 5 months ago

joaoandre-avaiga commented 9 months ago

Monorepo Migration

At this point in time we are moving the code from all the repositories into Taipy. After the move is done, there's a bit of work into making all the linters, actions and processes standard for all the repositories. I'll give a little more detail on the next steps bellow:

Testing

One of the steps in the migration proccess is to move all the unit tests from inside the package folder src/taipy/core/tests for example to tests/core. This enables the current test action on taipy to run all the unit tests in every PR. To improve on this, the proposal is:

  1. Have a test action for each taipy package(core, rest, gui, etc) that will trigger when a PR contains changes on a path related to the package, this is to make sure that the package is tested in an isolated environment, without interference from other unit tests.
  2. Have a global test action that will run all the unit tests. This can be triggered on each PR, or on merge to the develop/release branchs, to be decided.

Packaging

Each taipy package will remain as a independent package when built, each of them will keep their setup.py, Pipfile and related project files. This is what needs to be checked on packaging after the merge is done:

  1. Create a package/release action for each package.
  2. Change the setup.py in each package. Currently the setup.py points to a version.json file that was moved in the merge process, before it was situated in the same level as the src folder and after the merge the file will be in the same level as setup.py.
  3. Create a global release action that will call the release for each package(there are steps that probably will need to be done before this, like including the test.pypi.com into our release worflow)

Cleanup

In each package we have a lot of equal files, normally related to documentation or project configuration. The merge process brought everyone of them together, so that makes them redundant.

  1. Merge all the documentation files(CONTRIBUTING.md, LICENSE, MANIFEST.in, etc) into the root level of the taipy folder.
  2. Merge all the linter and configuration files(.coveraverc, .pre-commit-config.yaml, .flake8, etc) into the root level of the taipy folder

Archive

After everything is done, all the old taipy repositories should be archived on github with a message on their readme informing that everything migrated to taipy.

jrobinAV commented 9 months ago

Before archiving each repo, we should set a Warning message on each repo to be merged to notify potential contributors that the code will move. Actually, we can do it right now.

At the top of each README.md, for example. Something like: "WARNING: Taipy team is performing a repository restructuration. This current repository (among others) is about to be merged into the main taipy repository. Once the merge is done, the current code base will be located in the taipy repository. "

What do you think?

joaoandre-avaiga commented 9 months ago

I think it's a great idea. 👍

trgiangdo commented 5 months ago

Can this ticket be closed as Done? cc: @jrobinAV @joaoandre-avaiga

jrobinAV commented 5 months ago

Indeed, I believe we can set this as done. @joaoandre-avaiga Is it ok for you?

joaoandre-avaiga commented 5 months ago

Yes!