Files
everest-web/docs/dev-docs.html
2026-04-07 10:52:25 -04:00

195 lines
8.1 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Documentation</title>
<link type="text/css" rel="stylesheet" href="../css/k2.css"/>
</head>
<body>
<!-- Navbar -->
<div class="sidenav">
<img src="../img/everest-k2.svg" alt="everest-logo" style="width: 185px; height: 185px;">
<a href="../index.html">Home</a>
<a href="../about.html">About</a>
<a href="../install.html">Install</a>
<a href="../packages.html">Packages</a>
<a href="../download.html">Downloads</a>
<a href="home.html">Documentation</a>
<a href="../errata.html">Security</a>
<a href="https://shop.everestlinux.org">Store ↗</a>
<a href="https://git.everestlinux.org">Git ↗</a>
</div>
<!-- Rest of page -->
<div class="main">
<link rel="stylesheet" href="../assets/js/styles/github-dark.css">
<script src="../assets/js/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<button onclick="window.location.href='home.html';">
Back to home
</button>
<h2>Developer Documentation</h2>
<p>This page contains developer-specific documentation.</p>
<h2>1 - AI Policy</h2>
<p>Large Language Models are tools, they should be used to aid a programmer and not replace them.</p>
<p>If LLMs must be used for a project, please ensure there is some degree of human input and oversight. Additionally, projects using LLM-generated code MUST place a disclaimer file in their source code tree.</p>
<fhead><strong>FILE:</strong> LLM_DISCLAIMER</fhead>
<div class="file">
<p>This project utilizes Large Language Model (LLM) generated code.</p>
<p>As required by the Everest Linux AI policy, all projects utilizing LLM generated code MUST provide this disclaimer alongside the program's source code.</p>
<p>Please contact the program's maintainer if you have questions.</p>
<p>Please contact copyright@everestlinux.org for copyright inquiries.</p>
</div>
<h2>2 - Security Policy</h2>
<p>All programs should periodically be audited by a member of the Everest Linux security team to ensure compliance with the distribution's design principle of security.</p>
<p>Patching security vulnerabilities should be considered a top priority, and are expected to be done in as timely of a manner as possible.</p>
<p>Please direct all questions to security@everestlinux.org.</p>
<h2>3 - Coding Style</h2>
<p><strong>3.1</strong> C</p>
<p><i>3.1.1</i> File Structure</p>
<p>Files should follow this format:<p>
<ul>
<li>Header comment, including program name and LICENSE</li>
<li>Headers</li>
<li>Macros</li>
<li>Types</li>
<li>Global variables</li>
<li>Functions</li>
<li><cil>main</cil> (if applicable)</li>
</ul>
<p>Note that function declarations should be defined in a separate header, ex:</p>
<p><cil>#include "project_name.h"</cil></p>
<p>Indentations should be a single tab and be equal to 8 characters for better readability.</p>
<p><i>3.1.2</i> Functions</p>
<p>Functions should have their return type on one line, their name and parameters one line down, and the bracket one line under the name and arguments.</p>
<p>Example:</p>
<bigcodehead><strong>CODE:</strong> Proper function formatting in C</bigcodehead>
<pre class="bigcode"><code style="all:unset;" class="language-c">
static void
usage(int argc, char *argv[])
{
printf("usage: %s [-a] [-b]\n", argv[0]);
}
</code></pre>
<p><i>3.1.3</i> Example Program</p>
<fhead><strong>FILE:</strong> prog.c</fhead>
<pre class="file"><code style="all:unset;" class="language-c">
/* Headers included from standard library */
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
/* Headers included locally */
#include "prog.h"
#include "somelib.h"
void
hello(void)
{
printf("Hello\n");
}
int
main(void)
{
hello();
return 0;
}
</code></pre>
<p></p>
<fhead><strong>FILE:</strong> prog.h</fhead>
<div class="file">
<p>#ifndef PROG_H_</p>
<p>#define PROG_H_</p>
<p>&nbsp;</p>
<p>void hello();</p>
<p>&nbsp;<p>
<p>#endif</p>
</div>
<p><i>3.1.4</i> common.h</p>
<p>For large programs which include many header files, it is perfectly acceptable to define these includes in a separate header and then include that in each file.</p>
<fhead><strong>FILE:</strong> common.h</fhead>
<div class="file">
<p>#ifndef COMMON_H_</p>
<p>#define COMMON_H_</p>
<p>&nbsp;</p>
<p>#include &lt;color.h&gt;</p>
<p>#include &lt;stdio.h&gt;</p>
<p>#include &lt;unistd.h&gt;</p>
<p>&nbsp;</p>
<p>#endif</p>
</div>
<p></p>
<fhead><strong>FILE:</strong> prog.c</fhead>
<div class="file">
<p>#include "common.h"</p>
<p>&nbsp;</p>
<p>int</p>
<p>main()</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("hello\n");
<p>}</p>
</div>
<p><strong>3.2</strong> Best Practices</p>
<ul>
<p><li>Avoid abbreviation and single letter variables.</li><p>
<p><li>Avoid deep nesting.</li></p>
</ul>
<p><i>3.2.1 Rationale for Best Practices</i></p>
<p>Readability is the primary rationale for both of these practices.</p>
<p>If nobody except you is able to read your code, it is unreadable.</p>
<p><i>3.2.2 Following Best practices</i></p>
<p>Single letter variables should be eliminated whenever possible.</p>
<bigcodehead><strong>CODE:</strong> Avoiding single letter variables</bigcodehead>
<pre class="bigcode"><code style="all:unset;" class="language-c">
/* The actual meaning of x is ambiguous without
* looking at its associated logic. */
int x;
/* Let's say x is referring to an x-coordinate
* on a coordinate plane. In this scenario, it
* would be appropriate to use a
* more descriptive name. */
int x_position;
</code></pre>
<h2>2 - Licensing</h2>
<p><strong>2.1</strong> Disclaimer</p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>This is not legal advice. If you are in doubt with licensing, please contact your lawyer.</p>
</div>
<p><strong>2.2</strong> Preferred Licenses</p>
<p>For all projects officially released under Everest, the GNU GPL family of licenses is preferred. It provides compatibility with all other existing Everest projects.</p>
<p>Most programs should be licensed under the standard GPL. For libraries, you might want to choose the LGPL, if you want to allow linking within proprietary programs. For web applications, always choose the AGPL.</p>
<p><strong>2.3</strong> Other Licenses</p>
<p>If you wish to use a non-GPL license for your project, that is perfectly permissible.</p>
<p>Before releasing your program, we ask that you add the following disclaimer to your README:</p>
<fhead><strong>FILE:</strong> README</fhead>
<div class="file">
<p>LICENSING DISCLAIMER:</p>
<p>This program is licensed under (LICENSE), and as such may be incompatible with other GPL-licensed Everest programs.</p>
<p>Please contact the program's maintainer if you have questions.</p>
</div>
<p>If you are an Everest developer and host a project on our Git server, but do not want it associated with Everest, please submit an electronically signed form stating the following:</p>
<fhead><strong>FILE:</strong> WAIVER</fhead>
<div class="file">
<p>Everest Linux Development Group hereby relinquishes all claims of ownership on program "foo" to developer "bar".
<p>Electronically signed by Foobar on 1/1/2024</p>
<p>Electronically signed by Everest Linux head developer on 1/1/2024</p>
</div>
<p><strong>2.3</strong> Proprietary Licenses</p>
<p>Programs hosted on our Git servers are never to be released under proprietary licenses.</p>
<p>Distributing obfuscated binaries (for instance, using <cil>shc</cil> to hide the contents of a shell script) is also not allowed.</p>
<p>There will be no further discussion.</p>
</div>
<footer>
<p>Page last updated 03/17/2025 @ 12:00</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p>
<p>Copyright (C) 2021-2026 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer>