Skip to content

Commit 8baca5a

Browse files
authored
Merge pull request #90 from ghostbsd/src-maintenance
Add GhostBSD versioning guide and src maintenance documentation
2 parents 15801de + e60f5a8 commit 8baca5a

27 files changed

+716
-240
lines changed

_static/dark_mode.css

Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,58 @@ body.dark-mode h3,
3030
body.dark-mode h4,
3131
body.dark-mode h5,
3232
body.dark-mode h6 {
33-
color: #ffffff; /* White headings */
33+
color: #ffffff !important; /* White headings */
34+
}
35+
36+
/* More specific rules for content headings */
37+
body.dark-mode .rst-content h1,
38+
body.dark-mode .rst-content h2,
39+
body.dark-mode .rst-content h3,
40+
body.dark-mode .rst-content h4,
41+
body.dark-mode .rst-content h5,
42+
body.dark-mode .rst-content h6 {
43+
color: #ffffff !important; /* White headings in content */
44+
}
45+
46+
/* Fix heading links that inherit link colors */
47+
body.dark-mode .rst-content h1 a,
48+
body.dark-mode .rst-content h2 a,
49+
body.dark-mode .rst-content h3 a,
50+
body.dark-mode .rst-content h4 a,
51+
body.dark-mode .rst-content h5 a,
52+
body.dark-mode .rst-content h6 a {
53+
color: #ffffff !important; /* White heading links */
54+
}
55+
56+
/* Target the specific toc-backref links in headings */
57+
body.dark-mode .rst-content a.toc-backref {
58+
color: #ffffff !important; /* White toc backref links */
59+
}
60+
61+
/* Target headerlink anchors in headings */
62+
body.dark-mode .rst-content a.headerlink {
63+
color: #ffffff !important; /* White header anchor links */
64+
}
65+
66+
/* Even more specific for document section headings */
67+
body.dark-mode .document h1,
68+
body.dark-mode .document h2,
69+
body.dark-mode .document h3,
70+
body.dark-mode .document h4,
71+
body.dark-mode .document h5,
72+
body.dark-mode .document h6 {
73+
color: #ffffff !important; /* White headings in document */
3474
}
3575

3676
body.dark-mode a {
3777
color: #4da8da; /* Light blue links */
3878
}
3979

80+
/* Only apply visited link color to content area, not navigation */
81+
body.dark-mode .rst-content a:visited {
82+
color: #bb86fc; /* Light purple for visited links */
83+
}
84+
4085
body.dark-mode a:hover {
4186
color: #66b3ff; /* Lighter blue on hover */
4287
}
@@ -47,6 +92,65 @@ body.dark-mode pre {
4792
border: 1px solid #3c3c3c;
4893
}
4994

95+
/* Code blocks in dark mode */
96+
/*.dark-mode .highlight {*/
97+
/* background: #2b2b2b !important;*/
98+
/* border: 1px solid #444 !important;*/
99+
/*}*/
100+
101+
/* Inline code in dark mode */
102+
.dark-mode .rst-content code.literal,
103+
.dark-mode .rst-content tt.literal {
104+
background: #404040 !important;
105+
color: #f8f8f2 !important;
106+
border: 1px solid #555 !important;
107+
padding: 2px 4px !important;
108+
}
109+
110+
/* Syntax highlighting colors for dark mode */
111+
.dark-mode .highlight .c { color: #75715e !important; } /* comments */
112+
.dark-mode .highlight .k { color: #66d9ef !important; } /* keywords */
113+
.dark-mode .highlight .s { color: #e6db74 !important; } /* strings */
114+
.dark-mode .highlight .mi { color: #ae81ff !important; } /* numbers */
115+
.dark-mode .highlight .n { color: #f8f8f2 !important; } /* names */
116+
.dark-mode .highlight .nb { color: #f92672 !important; } /* builtins */
117+
.dark-mode .highlight .nf { color: #a6e22e !important; } /* functions */
118+
.dark-mode .highlight .o { color: #f92672 !important; } /* operators */
119+
.dark-mode .highlight .p { color: #f8f8f2 !important; } /* punctuation */
120+
.dark-mode .highlight .nn { color: #66d9ef !important; } /* imports/namespaces */
121+
.dark-mode .highlight .kn { color: #f92672 !important; } /* import keywords */
122+
.dark-mode .highlight .na { color: #a6e22e !important; } /* attribute names */
123+
.dark-mode .highlight .nc { color: #a6e22e !important; } /* class names */
124+
.dark-mode .highlight .nd { color: #a6e22e !important; } /* decorators */
125+
.dark-mode .highlight .ne { color: #a6e22e !important; } /* exceptions */
126+
.dark-mode .highlight .ni { color: #f92672 !important; } /* name indicators */
127+
.dark-mode .highlight .nl { color: #f92672 !important; } /* name labels */
128+
.dark-mode .highlight .nt { color: #f92672 !important; } /* name tags */
129+
.dark-mode .highlight .nv { color: #f8f8f2 !important; } /* name variables */
130+
.dark-mode .highlight .ow { color: #f92672 !important; } /* operator words */
131+
.dark-mode .highlight .w { color: #f8f8f2 !important; } /* whitespace */
132+
.dark-mode .highlight .mf { color: #ae81ff !important; } /* numbers float */
133+
.dark-mode .highlight .mh { color: #ae81ff !important; } /* numbers hex */
134+
.dark-mode .highlight .mo { color: #ae81ff !important; } /* numbers octal */
135+
.dark-mode .highlight .sb { color: #e6db74 !important; } /* string backtick */
136+
.dark-mode .highlight .sc { color: #e6db74 !important; } /* string char */
137+
.dark-mode .highlight .sd { color: #e6db74 !important; } /* string doc */
138+
.dark-mode .highlight .s2 { color: #e6db74 !important; } /* string double */
139+
.dark-mode .highlight .se { color: #ae81ff !important; } /* string escape */
140+
.dark-mode .highlight .sh { color: #e6db74 !important; } /* string heredoc */
141+
.dark-mode .highlight .si { color: #e6db74 !important; } /* string interpol */
142+
.dark-mode .highlight .sx { color: #e6db74 !important; } /* string other */
143+
.dark-mode .highlight .sr { color: #e6db74 !important; } /* string regex */
144+
.dark-mode .highlight .s1 { color: #e6db74 !important; } /* string single */
145+
.dark-mode .highlight .ss { color: #e6db74 !important; } /* string symbol */
146+
147+
148+
/* Code block container */
149+
/*.dark-mode .rst-content .highlight {*/
150+
/* margin: 1em 0 !important;*/
151+
/*}*/
152+
153+
50154
/* Optional: Style the toggle button */
51155
button {
52156
padding: 8px 16px;

conf.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,13 @@
3636
myst_enable_extensions = [
3737
'colon_fence',
3838
'attrs_inline',
39-
'linkify',
40-
'colon_fence'
39+
'linkify'
4140
]
4241

42+
# Configure linkify to only auto-link www.* and https://* patterns
43+
myst_linkify_fuzzy_links = False
44+
myst_url_schemes = ["https", "http"]
45+
4346
master_doc = 'index'
4447

4548
source_suffix = [".md"]
@@ -51,6 +54,7 @@
5154
# directories to ignore when looking for source files.
5255
# This pattern also affects html_static_path and html_extra_path.
5356
exclude_patterns = ['README.md']
57+
pygments_style = 'default'
5458

5559

5660
# -- Options for HTML output -------------------------------------------------
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
Getting Started
2+
===============
3+
4+
## Requirements
5+
6+
### Communication in English
7+
Our developers hail from all over the globe, and English is the common language we use to collaborate. You don’t need to be fluent, but you should be comfortable enough to understand and communicate ideas effectively.
8+
9+
If you're reading this, you're likely good to go!
10+
11+
### Familiarity with Git
12+
We use Git as our version control system to manage changes across all projects. It’s a cornerstone of our workflow, so understanding the basics is essential.
13+
14+
If you're new to Git, take a moment to learn it before diving in. Check out the [GitHub Docs](https://docs.github.com/en/get-started/start-your-journey) for a solid introduction. Focus on concepts like commits, branches, remotes, and pull requests.
15+
16+
### A GitHub Account
17+
We host our repositories on GitHub, so you’ll need an account to browse code, fork projects, and submit pull requests. If you don’t have one yet, sign up at [GitHub](https://github.com/) and explore the [GitHub Docs](https://docs.github.com/) to get familiar with the platform.
18+
19+
### Running GhostBSD
20+
For the best experience, run the latest stable version of GhostBSD on your development machine. While older versions or FreeBSD might work, the latest GhostBSD ensures compatibility with our tools and libraries.
21+
22+
You can download the latest ISO from the [GhostBSD website](https://www.ghostbsd.org/download) and install it on a physical machine or a virtual environment.
23+
24+
## Technologies We Use
25+
Here’s a quick rundown of the tools and languages you’ll encounter in GhostBSD development.
26+
27+
### Programming Languages
28+
GhostBSD projects use a mix of languages depending on the task. You don’t need to master them all—just focus on what’s relevant to your interests.
29+
30+
#### Python
31+
Most of our user-facing tools—like NetworkMgr, Update Station, and Software Station—are written in Python. It’s easy to learn, quick to develop with, and widely used in our ecosystem.
32+
33+
#### C
34+
The FreeBSD base system (which GhostBSD builds upon) and many libraries are written in C. It’s a low-level language that requires more effort to work with but delivers excellent performance and deep system access.
35+
36+
#### Bourne Shell (sh)
37+
Many scripts, including build tools like `ghostbsd-build` and utilities like `xconfig`, are written in Bourne shell script. It’s a lightweight way to automate tasks in the FreeBSD ecosystem.
38+
39+
### GUI Toolkit and Libraries
40+
Our graphical applications primarily use the [GTK3 toolkit](https://docs.gtk.org/gtk3/). We rely on GNOME libraries like GLib and GObject, often accessed through Python via [GObject Introspection](https://gi.readthedocs.io/).
41+
42+
#### Configuration Tools
43+
We use `dconf` for storing system configuration. You can interact with it via the `gsettings` command-line tool or the graphical `dconf-editor`.
44+
45+
Install `dconf-editor` for a visual interface:
46+
47+
```shell
48+
sudo pkg install dconf-editor
49+
```
50+
51+
## Setting Up Your Development Environment
52+
53+
54+
Let's get your machine ready for GhostBSD development.
55+
56+
### Install GhostBSD Base System Development Tools
57+
58+
GhostBSD doesn’t come with base system development tools preinstalled. To enable compiling code and ports, install the `GhostBSD*-dev` packages. These include essential build tools, compilers, and libraries:
59+
60+
```shell
61+
sudo pkg install -g 'GhostBSD*-dev'
62+
```
63+
64+
### Create a Development Directory
65+
Organize your work in a dedicated directory. A common spot is your home directory:
66+
67+
```shell
68+
mkdir -p ~/projects/ghostbsd
69+
````
70+
71+
Run cd `~/projects/ghostbsd` to jump in and start cloning repos. This keeps your repositories and files tidy.
72+
73+
### Development Tools
74+
#### Code Editors/IDEs
75+
Pick an editor or IDE you like—there’s no wrong choice! Here are some favorites:
76+
77+
* **PyCharm Community Edition:** Perfect for Python tools like NetworkMgr with built-in linting and debugging.
78+
```shell
79+
sudo pkg install pycharm-ce
80+
```
81+
* `Visual Studio Code:` Lightweight and extensible, great for general-purpose coding.
82+
```shell
83+
sudo pkg install vscode
84+
```
85+
* `Sublime Text:` Fast and minimalist with great plugin support.
86+
```shell
87+
sudo pkg install linux-sublime-text4
88+
```
89+
* `Neovim or Vim:` Lightweight for shell scripts or terminal fans.
90+
```shell
91+
sudo pkg install neovim
92+
```
93+
94+
For Python development, PyCharm stands out with built-in linting. If using another editor, set up a Pylint plugin (e.g., via VS Code’s marketplace or Sublime’s Package Control) to catch issues early. Try one that fits your style!
95+
96+
#### Version Control Tools
97+
We use Git for version control. Beyond the command line, these graphical tools help:
98+
99+
* **gitg:** A GTK-based interface to browse Git history.
100+
```shell
101+
sudo pkg install gitg
102+
cd ~/projects/ghostbsd
103+
git clone https://github.com/ghostbsd/ghostbsd-ports.git
104+
cd ghostbsd-ports
105+
gitg
106+
```
107+
* **Sublime Merge:** A sleek Git client, pairs well with Sublime Text.
108+
```shell
109+
sudo pkg install linux-sublime-merge
110+
```
111+
112+
Clone a repo first (e.g., `git clone https://github.com/ghostbsd/ghostbsd-ports.git`) to explore with these. Many editors also have Git plugins—check yours!
113+
114+
### How to Contribute to GhostBSD
115+
116+
We welcome all contributions! To get started, here's how to jump in:
117+
118+
- **Check the Roadmap**: See our [releases roadmap](https://github.com/orgs/ghostbsd/projects/4) or [current sprint](https://github.com/orgs/ghostbsd/projects/4/views/22) for priorities.
119+
- **Find a Task**: Browse the [issue tracker](https://github.com/orgs/ghostbsd/projects/4/views/21) for bugs or small features, or check [documentation tasks](https://github.com/orgs/ghostbsd/projects/5/views/1) for writing opportunities.
120+
- **Submit Your Work**: Fork the repo, make changes, and send a pull request via GitHub. For docs, contribute to [ghostbsd/documentation](https://github.com/ghostbsd/documentation).
121+
- **Join Us**: Hop into our [Telegram group](https://t.me/ghostbsd_dev) for guidance or to say hi and share what you're working on!

contributor/code/index.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Contributing Code
2+
3+
Welcome to code contribution for GhostBSD! Whether you're interested in Python applications, C system tools, or shell scripts, this section will help you get set up and contributing.
4+
5+
## What We Build
6+
7+
GhostBSD development spans several areas:
8+
9+
### User Applications (Python + GTK3)
10+
Our desktop tools are built with Python and GTK3:
11+
- **NetworkMgr** - Network connection management
12+
- **Update Station** - System update interface
13+
- **Software Station** - Package management GUI
14+
- **System tools** - Various configuration utilities
15+
16+
### System Components (C)
17+
Lower-level system integration with FreeBSD base:
18+
- **Kernel modules** - Hardware support and system features
19+
- **System utilities** - Command-line tools and daemons
20+
- **Libraries** - Shared code for applications
21+
22+
### Build and Configuration (Shell)
23+
Automation and system configuration:
24+
- **ghostbsd-build** - ISO building system
25+
- **Installation scripts** - System setup and configuration
26+
- **Package building** - Port compilation and packaging
27+
28+
## Getting Started with Code
29+
30+
- [Development Environment Setup](development-setup) – Set up your development machine and tools
31+
- [Python Development Guide](python-guide) – Contributing to our GTK3 applications
32+
- [C Development Guide](c-guide) – Working with system components
33+
- [Shell Scripting Guide](shell-guide) – Build tools and configuration scripts
34+
- [Testing and QA](testing) – How to test your changes
35+
- [Code Standards](standards) – Coding style and best practices

contributor/community/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Community Involvement
2+
3+
Get involved in the GhostBSD community! Whether you're providing user support, participating in development discussions, or helping newcomers, community involvement is a valuable way to contribute to GhostBSD.
4+
5+
- [Users Support](users-support.md) - Help other GhostBSD users by answering questions and providing support
File renamed without changes.

contributor/users-support.md renamed to contributor/community/users-support.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h1>Users Support</h1>
1+
# Users Support
22

33
Helping other users is a great way to contribute back, and it helps developers to focus on working on GhostBSD bugs and new features. Anyone with reasonable Linux/BSD experience and English skills can help.
44

File renamed without changes.

contributor/documentation.md renamed to contributor/documentation/getting-started.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
Documentation Contribution
2-
==========================
1+
# Getting Started with Documentation
32

4-
Writing documentation is a great way to start improving GhostBSD user experience and you will be helping a lot of GhostBSD users to better understand their desktop and applications. Anyone with reasonable English skills and good knowledge of FreeBSD, GhostBSD or MATE can help.
3+
Ready to contribute to GhostBSD documentation? This guide will help you get started with writing, editing, and improving our documentation to make GhostBSD more accessible to everyone.
4+
5+
Writing documentation is a great way to start improving GhostBSD user experience, and you will be helping a lot of GhostBSD users to better understand their desktop and applications. Anyone with reasonable English skills and good knowledge of FreeBSD, GhostBSD or MATE can help.
56

67
## Communicating with the team
78

@@ -14,7 +15,7 @@ Those three messaging platform are connected together. So whatever you use IRC,
1415

1516
## Getting the resources
1617

17-
In order to document GhostBSD projects, you will want to run a [recent GhostBSD build](https://www.ghostbsd.org/download#latest_builds), and to document third-party projects, you will also need a recent version of that program. We are use [Sphinx](https://www.sphinx-doc.org) with [MyST](https://myst-parser.readthedocs.io) to makes it easy to create our Documentation Hub. Any one that wants to help should start to be familiar with [Git](getting-started/getting-started.md#knowing-how-to-use-git), [GitHub](getting-started/getting-started.md#knowing-how-to-use-github) and [MyST Markdown syntax](https://myst-parser.readthedocs.io/en/latest/intro.html).
18+
To document GhostBSD projects, you will want to run a [recent GhostBSD build](https://www.ghostbsd.org/download#latest_builds), and to document third-party projects, you will also need a recent version of that program. We are use [Sphinx](https://www.sphinx-doc.org) with [MyST](https://myst-parser.readthedocs.io) to makes it easy to create our Documentation Hub. Any one that wants to help should start to be familiar with [Git](getting-started/getting-started.md#knowing-how-to-use-git), [GitHub](getting-started/getting-started.md#knowing-how-to-use-github) and [MyST Markdown syntax](https://myst-parser.readthedocs.io/en/latest/intro.html).
1819

1920
The instructions for install and setup can be found on the [GhostBSD Documentation GitHub](https://github.com/ghostbsd/documentation#local-development-server) repository.
2021

contributor/documentation/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Contributing Documentation
2+
3+
Welcome to the GhostBSD documentation contribution guide! Help us improve and expand our documentation to make GhostBSD more accessible to users and contributors.
4+
5+
- [Getting Started with Documentation](getting-started.md) - Learn how to contribute to GhostBSD documentation
6+
7+
This section covers the complete process of writing, editing, and maintaining GhostBSD documentation, from initial setup through publication.

0 commit comments

Comments
 (0)