Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entities #41

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <[email protected]> | N/A |
| N/A | [Authorisation Service][authorisation] | Niels Braczek <[email protected]> | N/A |
| N/A | [Joomla Command Line][joomla-cli] | Roland Dalmulder <[email protected]> | N/A |
| N/A | [Mobile App][mobile-app] | Elisa Foltyn <[email protected]> | N/A |
| Num | Title | Editor | Sponsor |
|:---:|------------------------------------------|----------------------------------|-------------------|
| N/A | [Content Elements][contentelements] | Niels Braczek <[email protected]> | N/A |
| N/A | [Authorisation Service][authorisation] | Niels Braczek <[email protected]> | N/A |
| N/A | [Joomla Command Line][joomla-cli] | Roland Dalmulder <[email protected]> | N/A |
| N/A | [Mobile App][mobile-app] | Elisa Foltyn <[email protected]> | N/A |
| N/A | [Simplify Admin Views*][simplify-admin] | Elisa Foltyn <[email protected]> | N/A |
| N/A | [Simplify Admin Views*][simplify-admin2] | Astrid Günther <[email protected]> | N/A |
| N/A | [Composer support][composer] | Astrid Günther <[email protected]> | N/A |
| N/A | [Simplify Admin Views*][simplify-admin2] | Astrid Günther <[email protected]> | N/A |
| N/A | [Composer support][composer] | Astrid Günther <[email protected]> | N/A |
| N/A | [Entities][entities] | Herman Peeren <[email protected]> | Niels Braczek <[email protected]> |

*) Two different proposals on the same target, need to be merged

Expand Down Expand Up @@ -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
86 changes: 86 additions & 0 deletions proposed/entities-meta.md
Original file line number Diff line number Diff line change
@@ -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](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?

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, <[email protected]>

### 6.2 Sponsors

* Niels Braczek, <[email protected]>

### 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

...
17 changes: 17 additions & 0 deletions proposed/entities.md
Original file line number Diff line number Diff line change
@@ -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