eclipse / jnosql

Eclipse JNoSQL is a framework which has the goal to help Java developers to create Jakarta EE applications with NoSQL.
Other
229 stars 72 forks source link

Merge jnosql-communication-driver and jnosql-mapping-extension repositories into a single module[Proposal] #353

Closed otaviojava closed 1 year ago

otaviojava commented 1 year ago

This issue combines each database's communication and mapping layer into a single maven module.

Current Scenario:

Currently, JNoSQL has two repositories, jnosql-mapping-extension, and jnosql-communication-driver. Users must add two dependencies to their project to use both layers, which requires breaking the bounded context. Additionally, having separate repositories causes code design synchronization issues.

<dependency>
  <groupId>org.eclipse.jnosql.mapping</groupId>
  <artifactId>jnosql-mongodb-extension</artifactId>
  <version>1.0.0-b6</version>
</dependency>
<dependency>
  <groupId>org.eclipse.jnosql.communication</groupId>
  <artifactId>jnosql-mongodb-driver</artifactId>
  <version>1.0.0-b6</version>
</dependency>

Proposal:

We propose merging the two repositories into a single maven project so that the driver will have communication and mapping layers. This change will require users to add only one dependency instead of two, making it easier for them to use the framework. Additionally, we will add integration tests to both layers, and every time we modify the driver, we will adjust the mapping once both are on the same maven project. From the code perspective, it should be fine for the final user, as we will keep the same package name. However, it will impact the maven dependency perspective.

From this new perspective, the user will only need one:

<dependency>
  <groupId>org.eclipse.jnosql.databases</groupId>
  <artifactId>jnosql-mongodb</artifactId>
  <version>1.0.0-b6</version>
</dependency>

Impact:

We must also rename the driver repository to something generic, such as "jnosql-databases." This change will require updating the documentation and notifying users of the breaking change. The most significant impact of this change will be on the code design perspective for the engineering team and the maven dependency change.

Task:

To make the change easier to manage, we propose moving extension by extension to the driver instead of making a considerable pull request. Additionally, we must update and bring the documentation to the same repository. After the final merge, we will leave only the metamodel module on the JNoSQL extension. We will also update the breaking change documentation and request to rename the driver repository to something more generic.

:warning: this won't impact the spec; it is only to the implementation.

dearrudam commented 1 year ago

@otaviojava, IMHO, sounds like a good plan! I'm in! :+1:

mpredli01 commented 1 year ago

This sounds good to me, @otaviojava!

dearrudam commented 1 year ago

@otaviojava, may I help you with it?

otaviojava commented 1 year ago

Yes, you can, Max. I'll wait until today, March 31. If there is not an objection, we can move it forward.

otaviojava commented 1 year ago

Once there is no objection, let's start. I'll create an Issue task for this proposal.