Page MenuHomePhabricator

Introduce mechanisms to allow integrations / plugins /modules
Open, NormalPublic


We're getting to the point where some of our applications are complicated and delicate enough to require integrations for third party software, even when the third party is ourselves. We need to include into Spitfire a mechanism that makes it easy to include, fetch and enable a third party component.

In order for Spitfire to be able to support this, the application system needs to be revamped to provide a flexible set of tools that make creating and integrating apps simple and approachable.

Event Timeline

cesar triaged this task as Normal priority.Dec 4 2019, 3:49 PM
cesar created this task.
cesar created this object with visibility "Public (No Login Required)".

Spitfire's application model is in shambles. I need to start reviewing this, so I will start by 'hijacking' this task in order to document my efforts and requirements for the application model.

Any application that wishes to integrate with spitfire should be able to handle the following data:

  • input URL space: Spitfire will expect your application to create routes within the URL space it has available.
  • input Directory: Spitfire will let the application know where it's root directory is, this way it can perform all tasks relative to it's root dir.
  • output Namespace: the application will need to register it's namespace with Autoload so autoloading works.
  • output Assets: the application should be able to provide a directory or list of files that it needs to operate. Most of the time, applications are installed inside the bin directory that is not accessible by the webserver

Spitfire will provide the app with an asset() function that allows the application to receive a URL to the asset it generated. Assets are generally requested when building assets and are then placed in the assets folder. Spitfire will attempt to maintain the directory structure so it resembles the original structure as closely as possible.

cesar added a subtask: Unknown Object (Maniphest Task).Apr 15 2020, 6:39 PM

This can be directly taken over from CRM, which provides a module mechanism to integrate modules that it then uses to bootstrap the module.

cesar closed subtask Unknown Object (Maniphest Task) as Resolved.May 27 2020, 4:13 PM