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

Horizontal Components #39

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

Horizontal Components #39

wants to merge 2 commits into from

Conversation

nibra
Copy link
Member

@nibra nibra commented Apr 9, 2024

1. Summary

Horizontal Components, within the context of software architecture and design, refer to modular parts of a system
that provide shared services or functionality across different areas of that system. Unlike vertical components, which
are designed to address specific business requirements or user stories from top to bottom, horizontal components are
focused on common capabilities that can be utilized by multiple verticals or layers within the application. This
approach helps in reducing redundancy, improving maintainability, and ensuring consistency across the application.

This specification seeks to address the critical issue of code entanglement within our Content Management
System (CMS), particularly focusing on features such as Tags, Workflow, Access Control Lists (ACL), Custom Fields, and
others that are currently tightly coupled with the core codebase.

2. Why Bother?

The entanglement of key features within the CMS codebase presents significant challenges to the system's
maintainability, scalability, and flexibility. The current state not only makes it difficult to introduce new features
or modify existing ones but also increases the risk of bugs and complicates the debugging process. By addressing this
issue, we aim to achieve several critical objectives:

  • Enhance Maintainability: Reducing code entanglement will make the system easier to understand, modify, and extend.
    This is crucial for the long-term sustainability of the CMS, as it reduces the effort required to implement new
    features or update existing ones.

  • Improve Scalability: A modular architecture allows for the system to be scaled more easily. Components can be
    developed, tested, and deployed independently, facilitating a more agile development process and enabling the system
    to adapt to changing requirements.

  • Increase Flexibility: By adopting orthogonal components, we can create a more flexible architecture that allows
    for the easy integration of new technologies and methodologies. This flexibility is key to staying competitive and
    meeting the evolving needs of our users.

  • Reduce Technical Debt: Moving away from "poor man's composition" and towards a cleaner, more structured approach
    to code organization will significantly reduce technical debt, making our CMS more robust and reliable.

  • Foster Innovation: By simplifying the process of modifying and extending the CMS, we can more easily explore new
    ideas and innovations, ultimately leading to a better product for our users.

Through this RfC, we invite contributors to share their insights, ideas, and proposals for how best to achieve these goals, ensuring that our CMS remains a powerful, efficient, and user-friendly platform.

@nibra nibra marked this pull request as draft April 9, 2024 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant