|
| 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! |
0 commit comments