{
    "href": "/post/2026/05/08/front-interop-now-open-for-public-review/",
    "relId": "2026/05/08/front-interop-now-open-for-public-review",
    "title": "Front-Interop Now Open For Public Review",
    "author": "pmjones",
    "tags": [
        {
            "href": "/tag/programming/",
            "relId": "programming",
            "title": "Programming",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/php/",
            "relId": "php",
            "title": "PHP",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/interop/",
            "relId": "interop",
            "title": "Interop",
            "author": null,
            "created": "2025-02-03 20:11:59 UTC",
            "updated": [
                "2025-02-03 20:11:59 UTC"
            ],
            "markup": "markdown"
        }
    ],
    "created": "2026-05-08 12:00:00 UTC",
    "updated": [
        "2026-05-08 12:00:00 UTC",
        "2026-05-08 13:59:26 UTC",
        "2026-05-08 14:03:43 UTC",
        "2026-05-08 14:03:58 UTC",
        "2026-05-08 14:04:11 UTC",
        "2026-05-08 14:04:43 UTC",
        "2026-05-08 14:06:38 UTC",
        "2026-05-08 14:07:16 UTC",
        "2026-05-08 14:09:10 UTC",
        "2026-05-08 14:12:35 UTC"
    ],
    "markup": "markdown",
    "html": "<p>I am pleased to announce that the <a href=\"https://github.com/front-interop/interface\">Front-Interop</a> standard interface package is now open for public review.</p>\n<p>Front-Interop provides an interoperable package of standard interfaces for\nfront controller functionality in any execution context (HTTP, CLI, etc.). It\nreflects, refines, and reconciles the common practices identified within\n<a href=\"https://github.com/front-interop/interface/blob/1.x/README-RESEARCH.md\">several pre-existing projects</a>.</p>\n<p>The central interface is <a href=\"https://github.com/front-interop/interface#frontcontroller\"><em>FrontController</em></a>, which affords an entry point\ninto the outermost presentation layer. Its only method, <code>run()</code>, returns an\ninteger exit status code: <code>0</code> for success, <code>1</code> to <code>254</code> for non-success.</p>\n<p>Returning an exit status is a deliberate departure from the majority practice of returning <code>void</code> or a\nresponse object. Doing so allows the same\ninterface to be used across many different execution contexts:\nHTTP, command line, queue workers, CI runners, and long-running processes\nalike.</p>\n<p>The <a href=\"https://github.com/front-interop/impl/tree/1.x/src\">reference implementations</a> demonstrate the interface contract across different execution contexts:</p>\n<ul>\n<li>\n<p><a href=\"https://github.com/front-interop/impl/blob/1.x/src/RequestFrontController.php\"><em>RequestFrontController</em></a> reads <code>$_GET</code>, emits HTML, and sets <code>http_response_code()</code> for a traditional HTTP server context.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/front-interop/impl/blob/1.x/src/FrankenFrontController.php\"><em>FrankenFrontController</em></a> wraps <em>RequestFrontController</em> inside a <code>frankenphp_handle_request()</code> worker loop, demonstrating the same interface in a long-running <a href=\"https://frankenphp.dev/\">FrankenPHP</a> worker context.</p>\n</li>\n<li>\n<p><a href=\"https://github.com/front-interop/impl/blob/1.x/src/ConsoleFrontController.php\"><em>ConsoleFrontController</em></a> reads <code>$argv</code> and writes to injected <code>$stdout</code> and <code>$stderr</code> resources for a command line context.</p>\n</li>\n</ul>\n<p>These implementations are intentionally naive -- no router, no <a href=\"https://github.com/ioc-interop/interface\">IOC container</a>, no <a href=\"https://github.com/request-interop/interface\">request</a> or <a href=\"https://github.com/response-interop/interface\">response</a> -- to highlight the front controller specifics.</p>\n<p>Please offer your comments and criticism as <a href=\"https://github.com/front-interop/interface/issues\">issues or PRs out at Github</a>.</p>\n"
}
