-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome","text":"<p>Welcome to the codebase interface documentation!</p> <p>The codebase interface is a set of principles and practices that allow us to identify and understand all perspectives of interacting with a codebase, including contributors, users, operators, AI agents, and build agents.</p> <p>By providing specific interfaces for each audience perspective, we can ensure that everyone has a clean and maintainable experience when interacting with a codebase.</p>"},{"location":"#support","title":"Support","text":"<p>If your codebase uses codebase principles please support the initiative by starring the Codebase Interface GitHub repository and placing the below markdown in your repo.</p>"},{"location":"#badges","title":"Badges","text":""},{"location":"#primary","title":"Primary","text":"<pre><code>[](https://codebaseinterface.org)\n\n> This repository follows the **Codebase Interface Principles** \u2014 for a better experience for everyone who works with it.\n</code></pre>"},{"location":"#simple","title":"Simple","text":"<pre><code>[](https://codebaseinterface.org)\n</code></pre>"},{"location":"#footer","title":"Footer","text":"<pre><code>_Follows the [Codebase Interface Principles](https://codebaseinterface.org)._\n</code></pre>"},{"location":"benefits/","title":"Benefits","text":"<p>Benefits can be broken down per codebase audience type as they have been defined up-front. This is a benefit in itself as it allows to be considerate and then specific about the needs of each audience.</p>"},{"location":"benefits/#users","title":"Users","text":"<ul> <li>Users expect to interact with the codebase via a specific entry point that is the README.</li> <li>Users get a consistent experience across codebases and have expectations that can either be met or missed.</li> <li>Users understanding when expectations are missed promotes feedback and improvement.</li> <li>Users should be able to interact with the service based on the good user interface provided by the codebase.</li> </ul>"},{"location":"benefits/#contributors","title":"Contributors","text":"<ul> <li>Contributors expect to interact with the codebase via a specific entry point that is the README.</li> <li>Contributors get a consistent experience across codebases and have expectations that can either be met or missed.</li> <li>Contributors understanding when expectations are missed promotes feedback and improvement.</li> <li>Contributors should be able to make changes to the code base based on the good contributor interface provided by the codebase.</li> </ul>"},{"location":"benefits/#operators","title":"Operators","text":""},{"location":"benefits/#ai-agents","title":"AI Agents","text":""},{"location":"benefits/#build-agents","title":"Build Agents","text":""},{"location":"examples/","title":"Examples","text":"<ul> <li>Codebase Interface</li> </ul>"},{"location":"principles/","title":"Principles","text":"<ol> <li>Identify and empathise with all audience perspectives on the codebase - contributors, users, operators, AI agents, Build agents.</li> <li>Provide specific interfaces for each audience perspective.</li> <li>Ensure each audience interface is clean and remains maintainable.</li> <li>Provide a consistent abstraction over languages and frameworks.</li> <li>Provide a codebase experience that can be replicated by any audience, anywhere and on any platform.</li> <li>Do not be constrained by current technology and tools - provoke change to how we would like to interact with codebases over current constraints.</li> <li>Utilise cross platform and cross IDE tools and technologies to provide the interfaces.</li> <li>Empathise with your own future self who could become any of the audience perspectives at any time.</li> </ol>"},{"location":"tooling/","title":"Tooling","text":""},{"location":"tooling/#abstractions","title":"Abstractions","text":"<ul> <li>Taskfile - A simple and easy to use task runner / build tool that aims to be a simpler and more powerful Make alternative. It is written in Go and uses a YAML file to define tasks. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be run from the command line.</li> <li>Makefile - A build automation tool that automatically builds executable programs and libraries from source code by reading files called Makefiles which specify how to derive the target program. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be run from the command line.</li> <li>Justfile - A command runner that allows you to define and run commands in a simple and easy to use way. It is written in Rust and uses a simple syntax to define commands. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be run from the command line.</li> </ul>"},{"location":"tooling/#ide-agnostic-files","title":"IDE Agnostic Files","text":"<ul> <li><code>.editorconfig</code> - A file format and collection of text editor plugins for maintaining consistent coding styles between different editors and IDEs. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports the EditorConfig file format.</li> <li><code>.env</code> - A plain text file that contains environment variables for a project. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports environment variables.</li> </ul>"},{"location":"tooling/#git","title":"Git","text":"<ul> <li><code>.gitignore</code> - A plain text file that tells Git which files and directories to ignore in a project. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports Git.</li> <li><code>.gitattributes</code> - A plain text file that tells Git how to handle certain files in a project. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports Git.</li> <li><code>.gitmessage</code> - A plain text file that contains a template for commit messages. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports Git.</li> </ul>"},{"location":"tooling/#docker","title":"Docker","text":"<ul> <li><code>.dockerignore</code> - A plain text file that tells Docker which files and directories to ignore when building an image. It is cross platform and works on Windows, MacOS and Linux. It is also IDE agnostic as it can be used with any text editor or IDE that supports Docker.</li> </ul>"},{"location":"audiences/ai_agents/","title":"AI Agents","text":""},{"location":"audiences/build_agents/","title":"Build Agents","text":""},{"location":"audiences/contributors/","title":"Contributors","text":""},{"location":"audiences/operators/","title":"Operators","text":""},{"location":"audiences/users/","title":"Users","text":""},{"location":"interfaces/agents/","title":"Agents","text":"<ul> <li>Primary Audience: AI Agents</li> </ul>"},{"location":"interfaces/changelog/","title":"Changelog","text":"<ul> <li>Primary Audience: Users</li> <li>Secondary Audience: Contributors, Operators</li> </ul>"},{"location":"interfaces/contributing/","title":"Contributing","text":"<ul> <li>Primary Audience: Contributors</li> </ul>"},{"location":"interfaces/language/","title":"Language","text":"<ul> <li>Primary Audience: All Audiences</li> </ul>"},{"location":"interfaces/readme/","title":"Readme","text":"<ul> <li>Primary Audience: Users</li> <li>Secondary Audience: Contributors, Operators</li> </ul>"},{"location":"interfaces/runbook/","title":"Runbook","text":"<ul> <li>Primary Audience: Operators</li> </ul>"}]}
0 commit comments