types-ddd icon indicating copy to clipboard operation
types-ddd copied to clipboard

About v3 and v4 - Deprecate v3?

Open 4lessandrodev opened this issue 4 months ago • 3 comments

          @4lessandrodev Before starting, please feel free to reach out to me for any improvement requests.

And once again, a huge thank you for your work and for this library, truly! I use it in many projects and on a daily basis.

Here are some ideas for improvements and greater clarity.

Dependency Management

So, I don’t know exactly how Lerna works (I’m a user of Turbo created by Vercel), but for example, with Turbo, you have two strategies for managing dependencies:

  • Either you assume that all your packages can access your dependency (in this case, rich-domain), so you just need to add the dependency in the root package.json (and not in the individual package.json files of the packages).
  • Or the dependency is used only by one package (or 2 or 3, but not all packages), in which case, you should add the dependency only in the package.json of the specific package (and not in the global package.json of the repository).

For version 4, I noticed that all your packages contain rich-domain except the logger package. If you were using Turbo, it would be wise to remove the rich-domain dependency from the packages and keep it in the root package.json of the repository.

Even if logger could technically use rich-domain (which wouldn’t make sense), it won’t affect the build or the size of this package's build.

I don’t know if Lerna adopts the same strategies as Turbo, but if it does, I would advise keeping the dependency only in the root package.json, which will make version upgrades easier instead of having to change every package.json.

Managing v3 and v4

If v3 and v4 offer the same features and it’s just a matter of restructuring the repository into packages, then it might be wise to consider deprecating types-ddd and communicating the migration to @type-ddd/core, to stop maintaining both versions. If necessary, you could provide documentation for migrating from v3 (types-ddd) to v4 (@type-ddd/core).

Example App Based on types-ddd and @type-ddd/core

I’m not sure if it would be beneficial to consolidate your example repositories (finance-project-ddd, simple-ddd-app-example, ddd-app, ddd-demo-youtube) into an examples folder in your repository or to add links to all these repositories in your documentation (currently, only the link to ddd-app is there).

Because from my own experience, I had to look through your GitHub profile to find the examples and see how each mechanism of your library works in different contexts (especially to implement a Domain Events system with Redis Queue or SQS in my use case).

What do you think about that?

Originally posted by @GaetanCottrez in https://github.com/4lessandrodev/type-ddd/issues/444#issuecomment-2367596702

4lessandrodev avatar Sep 24 '24 17:09 4lessandrodev