From 9526004101d1a051675916e8b1c694e34996f304 Mon Sep 17 00:00:00 2001 From: Niels Braczek Date: Tue, 9 Apr 2024 14:48:44 +0200 Subject: [PATCH 1/2] Initial proposal --- index.md | 18 ++++---- proposed/entities-meta.md | 86 +++++++++++++++++++++++++++++++++++++++ proposed/entities.md | 17 ++++++++ 3 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 proposed/entities-meta.md create mode 100644 proposed/entities.md diff --git a/index.md b/index.md index 8e2a4d3..f8a9fa7 100644 --- a/index.md +++ b/index.md @@ -35,15 +35,16 @@ The sponsor is responsible for managing the review stage and votes. ### Pre-Draft -| Num | Title | Editor | Sponsor | -|:---:|--------------------------------|----------------------------------|-------------------| -| N/A | [Content Elements][contentelements] | Niels Braczek | N/A | -| N/A | [Authorisation Service][authorisation] | Niels Braczek | N/A | -| N/A | [Joomla Command Line][joomla-cli] | Roland Dalmulder | N/A | -| N/A | [Mobile App][mobile-app] | Elisa Foltyn | N/A | +| Num | Title | Editor | Sponsor | +|:---:|------------------------------------------|----------------------------------|-------------------| +| N/A | [Content Elements][contentelements] | Niels Braczek | N/A | +| N/A | [Authorisation Service][authorisation] | Niels Braczek | N/A | +| N/A | [Joomla Command Line][joomla-cli] | Roland Dalmulder | N/A | +| N/A | [Mobile App][mobile-app] | Elisa Foltyn | N/A | | N/A | [Simplify Admin Views*][simplify-admin] | Elisa Foltyn | N/A | -| N/A | [Simplify Admin Views*][simplify-admin2] | Astrid Günther | N/A | -| N/A | [Composer support][composer] | Astrid Günther | N/A | +| N/A | [Simplify Admin Views*][simplify-admin2] | Astrid Günther | N/A | +| N/A | [Composer support][composer] | Astrid Günther | N/A | +| N/A | [Entities][entities] | Herman Peeren | Niels Braczek | *) Two different proposals on the same target, need to be merged @@ -83,3 +84,4 @@ _**Legend:** A = Accepted | D = Draft | P = Pre-Draft | R = Review | X = Depreca [form-admin]: https://github.com/joomla/rfc/pull/31 [simple-cck]: https://github.com/joomla/rfc/pull/26 [append-form]: https://github.com/joomla/rfc/pull/18 +[entities]: https://github.com/joomla/rfc/pull/41 diff --git a/proposed/entities-meta.md b/proposed/entities-meta.md new file mode 100644 index 0000000..028d614 --- /dev/null +++ b/proposed/entities-meta.md @@ -0,0 +1,86 @@ +# Entities Meta Document + +## 1. Summary + +This Specification addresses a significant gap in Joomla's current architecture: the absence of an Object-Relational +Mapping (ORM) system or a comprehensive implementation of relations between entities. Historically, JTable was intended +to fulfill this role within Joomla, yet it lacks the capabilities to manage complex entity relationships effectively. A +notable attempt to bridge this gap was made during Google Summer of Code (GSoC) 2018 with the creation of an entities +package for the Joomla Framework, inspired by Laravel's Eloquent AR (Active Record) implementation. However, this +solution remains unfinished and does not include a tree-implementation, which is crucial for fully replacing JTable and +JTableNested functionalities. + +## 2. Why Bother? + +The integration of an ORM system or a robust mechanism for handling entity relationships is critical for several +reasons: + +* **Complex Data Handling**: Joomla's current limitations in managing complex data relationships hinder its ability to + support advanced and dynamic web applications. An ORM system would allow for more sophisticated data interactions and + business logic implementation. + +* **Developer Productivity and Satisfaction**: The lack of an efficient way to manage entity relationships adds + unnecessary complexity and overhead for developers. Providing a more intuitive and powerful solution could + significantly enhance developer experience and productivity. + +* **Modernizing Joomla's Architecture**: Adopting ORM technology or similar solutions would be a substantial step + forward in modernizing Joomla's architecture, making it more competitive with other content management systems and + frameworks that already offer these capabilities natively. + +* **Improving Performance and Scalability**: Efficiently managing entity relationships can lead to better performance + and scalability of Joomla applications, as it allows for optimized database queries and data handling strategies. + +## 3. Scope + +The goals and non-goals set a clear framework for the specification, focusing on enhancing Joomla's capability in +managing complex data relationships through the adoption or integration of ORM technologies, while ensuring the +flexibility and adaptability of the CMS to meet modern web development needs. + +### 3.1 Goals + +This specification aims to provide a cohesive strategy for integrating an Object-Relational Mapping (ORM) system or a +comparable solution into Joomla, to effectively manage and enhance relations between entities within the CMS. It seeks +to evaluate existing implementations, such as the entities package developed during GSoC 2018, and explore the adoption +of established ORM technologies like Doctrine. The specification will also consider the development of necessary +extensions, such as a tree-implementation, to ensure comprehensive support for Joomla's data structures. Ultimately, +this specification will guide the future development of Joomla's entity relationship management, aligning it with modern +web development standards and practices. + +### 3.2 Non-Goals + +It is not a goal to forcibly replace all current implementations of entity management in Joomla with a new ORM system. +The focus is on providing a more efficient alternative that can coexist with or gradually replace existing mechanisms. + +Fully integrating an ORM system or completing the development of the entities package and its required extensions within +a single release cycle is not expected. The goal is to outline a phased approach for integration. + +## 4. Approaches + +## 5. Design Decisions + +## 6. People + +### 6.1 Editor(s) + +* Herman Peeren, + +### 6.2 Sponsors + +* Niels Braczek, + +### 6.3 Contributors + +* N/A + +## 7. Votes + +* **Entrance Vote:** _(not yet taken)_ +* **Acceptance Vote:** _(not yet taken)_ + +## 8. Relevant Links + +_**Note:** Order descending chronologically._ + +## 9. Errata + +... diff --git a/proposed/entities.md b/proposed/entities.md new file mode 100644 index 0000000..3627e5e --- /dev/null +++ b/proposed/entities.md @@ -0,0 +1,17 @@ +# Entities + +This specification adresses the definition of entities and the handling of entity relations in Joomla. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be +interpreted as described in [RFC 2119][]. + +[RFC 2119]: http://tools.ietf.org/html/rfc2119 + +### References + +- [RFC 2119][]: Key words for use in RFCs to Indicate Requirement Levels + +## 1. Specification + +## 2. Interfaces From 91cc93baaf5333ba7725c3debeca9b682b8fc157 Mon Sep 17 00:00:00 2001 From: Niels Braczek Date: Tue, 9 Apr 2024 15:04:02 +0200 Subject: [PATCH 2/2] Add link to the entities repository --- proposed/entities-meta.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposed/entities-meta.md b/proposed/entities-meta.md index 028d614..9f455d9 100644 --- a/proposed/entities-meta.md +++ b/proposed/entities-meta.md @@ -5,10 +5,10 @@ This Specification addresses a significant gap in Joomla's current architecture: the absence of an Object-Relational Mapping (ORM) system or a comprehensive implementation of relations between entities. Historically, JTable was intended to fulfill this role within Joomla, yet it lacks the capabilities to manage complex entity relationships effectively. A -notable attempt to bridge this gap was made during Google Summer of Code (GSoC) 2018 with the creation of an entities -package for the Joomla Framework, inspired by Laravel's Eloquent AR (Active Record) implementation. However, this -solution remains unfinished and does not include a tree-implementation, which is crucial for fully replacing JTable and -JTableNested functionalities. +notable attempt to bridge this gap was made during Google Summer of Code (GSoC) 2018 with the creation of an [entities +package for the Joomla Framework](https://github.com/joomla-framework/entities), inspired by Laravel's Eloquent AR +(Active Record) implementation. However, this solution remains unfinished and does not include a tree-implementation, +which is crucial for fully replacing JTable and JTableNested functionalities. ## 2. Why Bother?