Skip to content

[Announcement] Separate APCu and MongoDB adapters into dedicated packages to reduce maintenance overhead #136

@ackintosh

Description

@ackintosh

Background

Currently, Ganesha includes storage adapters for Redis, Memcached, APCu, and MongoDB within the main repository. While this provides convenience for users, it introduces several maintenance challenges:

  • Maintenance overhead: Some adapters (APCu, MongoDB) were contributed by community members, but I (@ackintosh) lack deep expertise in these storage systems, making it difficult to properly maintain, debug, and evolve these components (e.g., MongoDB adapter - SlidingTimeWindow support #88)
  • Testing complexity: CI/CD pipeline must test against multiple storage systems (e.g., Tweak ext-mongodb #134)
  • Dependency bloat: Maintainers must install dependencies for all storage backends in require-dev even when working on unrelated components

Proposal

I propose to extract the following adapters into separate, dedicated packages:

Keeping in core:

  • Redis adapter (most commonly used, stable, and within my expertise)
  • Memcached adapter (widely used, stable, and within my expertise)

Implementation Plan

Phase 1: Create separate packages

  1. Create ganesha-apcu-adapter repository
  2. Create ganesha-mongodb-adapter repository
  3. Each package will:
    • Implement the same AdapterInterface
    • Include its own test suite
    • Have dedicated CI/CD pipeline
    • Maintain backward compatibility
    • Be maintained by contributors with expertise in the respective storage systems
    • Alternatively, I am also considering transferring ownership of these separated adapters to motivated developers who are willing to take responsibility for their maintenance

Phase 2: Update core repository

  1. Mark APCu and MongoDB adapters as deprecated in core
  2. Update documentation to reference new packages
  3. Add migration guide for existing users

Phase 3: Remove from core

  1. Remove deprecated adapters in next major version
  2. Clean up related dependencies from composer.json
  3. Simplify CI/CD pipeline

Migration Path

Existing users can migrate seamlessly by:

# For APCu users
composer require ganesha-apcu-adapter

# For MongoDB users
composer require ganesha-mongodb-adapter

The API remains identical, ensuring zero breaking changes during migration.


Please feel free to comment if you have any questions or feedback.

CC: @MikkelPaulson @nikitaksv - I'm notifying you as the original contributors of the APCu and MongoDB adapters respectively, in case you're interested in maintaining the separated packages.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions