Action | Names | Terminology | Background | Work | Foundations | Projects | Wares | Artifacts | Words from the Chief Operator
Bisd.ro makes software to get the most out of FreeBSD.
Action
If you are interested in learning more about Bisd.ro or participating in its development, the primary project is Sidewalk. Check out the Forum and Chat there which are monitored by an operator weekdays 13:00-14:00 UTC.
Names
- BiSD.ro (sounds like bistro) - A way to say "BSD" that sounds like a familiar word
- S. Ross Gohlke - Chief Operator
- Kiz (aka Kitizin) - Hosting donor and provider, commercial FreeBSD support
Terminology
Frequently occuring terms
- artifact - Files bundled as a single, possibly compressed, file generated by a build process which may or may not involve compilation
- package - An artifact generated by pkg(8)
- image - Disk image - A file exposing a complete fileystem when mounted
- base - Files distributed by FreeBSD as source or release artifacts
- Pkgbase - Base distributed as packages instead of release artifacts
- ports - Files distributed by third parties through the Ports Collection as source or as a FreeBSD package
- trove - A collection of files managed by a version control utility such as Fossil
- repository - Unless otherwise noted, refers to a pkg(8) package repository
- ABI - Application Binary Interface - colon-delimited triplet indicating version and
processor architecture of a package
- FreeBSD:16:amd64
- FreeBSD:15:aarch64
Background
Bisd.ro began life as a redistribution of official FreeBSD release artifacts converted to a set of UZIP images, along with a suite of original utilities to compose them as the root filesystem on startup and run FreeBSD as a perpetual live system.
Work
Bisd.ro troves are being reorganized in preparation for submission to The FreeBSD Project and the Ports Collection and may be found in a state of disarray as a result.
Blacktop
Recent work has focused on migrating the login shell from Tcsh, which was the default in FreeBSD until recently when it was switched to Sh, to a modern shell -- Bash or Zsh.
- Sheldons - Automatically sets Sheldon resources based on runtime shell
- Sharc - SHell Automated Run Commands - Automatically adds and removes Bash and Zsh system plugins, for each shell invocation and sourcing stage, at runtime; provides plugins common to both shells
- Sharcs - Global RCS with Sharc support and Zsh-style sourcing for Bash
- Sharcz - Global RCS with Sharc support for Zsh
- Session, a Micro plugin - Saves and restores open tabs in Micro editor based on current working directory
Foundations
Bisd.ro is built on multiple technological foundations.
FreeBSD
FreeBSD is a freely available, permissively licensed, democratically governed, fully capable Operating System (OS) maintained by an international team of individuals from all backgrounds, but mostly professional developers. FreeBSD is used to run all types of workloads, including servers and desktops.
Bisd.ro is proof that anyone can learn to make FreeBSD do their bidding.
The FreeBSD Project
The FreeBSD Project is responsible for managing the FreeBSD source code.
Ports Collection
The Ports Collection provides an entire build system for enhancing the OS with third party software.
FreeBSD Foundation
The FreeBSD Foundation is a non-profit organization tasked with supporting the Project in various ways, including advocacy, fundraising and legal representation.
Fossil
All software, documentation, resources and assets of the Bisd.ro project are managed as Fossil repositories, or troves.
Fossil's Git translation layer enables exposing Bisd.ro projects as Git or Github.com repositories to poorly designed tools which demand them. However, all troves linked from this page are hosted natively by Fossil.
Browsing tips
Visitors accustomed to viewing repositories on Github.com may find the default Fossil interface jarring.
- Check the Timeline; change the right pulldown from "Check-ins" to "Any Type".
Technical implementation
Most Fossil troves are exposed as CGI services behind a front-end web proxy.
Freedesktop.org
Freedesktop.org maintains the standards, protocols and utilities that enable an open desktop.
Wayland
Wayland, the next generation open graphics protocol, underlies the desktop environments in which Bisd.ro is produced.
Projects
Bisd.ro work is divided into four main projects representing interest in different operational modes of FreeBSD, each with a separate trove.
| Project | PREFIX | Stack | Role | Graphics | Description |
|---|---|---|---|---|---|
| Sidewalk | / | FreeBSD | Administrator | Console | Perpetual live system |
| Backroad | /usr/local | Server | Administrator | Console | Web, mail, streaming |
| Blacktop | /usr/local | Console | User | Console | Textual desktop |
| Tarmac | /usr/local | Desktop | User | Display | Graphical desktop |
Naming scheme
bistro > sidewalk cafe > Sidewalk
From there, project names represent increasingly improved, from the traveller's perspective, transportation routes.
- Sidewalk is a paved path for walking.
- Backroad is an unpaved road for driving.
- Blacktop is a paved road for driving.
- Tarmac is a runway for flying.
Wares
Software
Bisd.ro authors original software in a variety of categories.
Artifacts
Bisd.ro publishes a variety of build artifacts, including disk images, for running FreeBSD. Artifacts are stored as unversioned -- not checked in -- files in Fossil troves.
Base
Bisd.ro images have several advantages.
- Complete base in less than 350MB
- Complete source in less than 350MB
- Further tuning brings boot device to less than 100MB
- Separate usr image, which can be loaded remotely
- Only modules defined in loader.conf(5) are installed, then compressed
- Minimal filesystem: /boot, /rescue, root.img.ulzma
- Immutable base filesystem
Layout
The point about a separate usr image alludes to the fundamental principle on which Bisd.ro images are based -- clean filesystem boundaries, enforced by rc(8), which enable successive mounting of root filesystem components as they become available.
| Fileystem | Name | Origin | Storage | Stage |
|---|---|---|---|---|
| /boot | Boot | Base | <disk> | boot |
| KERNEL | B | Base | B.img.ulzma | |
| / | Root | Base | root.img.ulzma | rc(8) FILESYSTEMS |
| /usr | Usr | Base | usr.img.ulzma | rc(8) NETWORKING |
| /usr/local | Ports | Ports | <disk> | rc(8) NETWORKING |
ABIs
Artifacts and images for each ABI supported by Bisd.ro are published to a dedicated trove. Presently, only FreeBSD:16:amd64 is regularly updated.
FreeBSD:16:amd64
- https://club.bisd.ro/world/freebsd/16/x86/64/official/stock/uvlist - Stock artifacts
- https://club.bisd.ro/world/freebsd/16/x86/64/official/base/uvlist - UZIP images
Present process
A utility called bisdi is used to generate images from artifacts.
B kernel
Bisd.ro maintains a custom kernel, B, based on MINIMAL-NODEBUG and GENERIC-MMCCAM, which is distributed with the images mentioned previously. Over the years, B kernel has served many purposes.
- Preserve sleep by allowing misbehaving modules to be loaded/unloaded during suspend/resume
- Pre-emptively and selectively test new FreeBSD features as they emerge
- Enable booting and running from SD
FreeBSD's file layout, build system and documentation make authoring kernel configurations a snap.
Pkgbase
Images are not being publicly updated at this time, although they are still being generated and used internally, while the implications of Pkgbase are investigated.
Bisd.ro is heavily invested in the existing workflow of fetching official release artifacts. In that sense, Pkgbase represents extensive unplanned work and was initially viewed with skepticism.
After initial investigation, the skepticism has evolved into equal parts wonder and confusion. The wonder is due to the sheer engineering feat and the brilliance of the idea. This is definitely a welcome development.
The confusion is due to the way Pkgbase breaks the longheld conventions regarding filesystem boundaries on which Bisd.ro is based.
Parity
The initial approach is generating release artifacts from installed Pkgbase packages.
doas pkg install FreeBSD-set-base
The actual process presently used is insanely involved, but it boils down to depositing the same files found in base.txz, uncompressed, outside the regular filesystem; the resulting files can be easily archived to replace the artifact.
Migration
Stay tuned.
Ports
Bisd.ro maintains package repositories for original titles not ready or appropriate for FreeBSD or the Ports Collection, as well as ports built with non-standard options.
- https://pkg.bisd.ro/FreeBSD/depot/uvlist - Non-ABI packages
- http://pkg.bisd.ro/FreeBSD:16:amd64/annex/uvlist - ABI packages for x86 CURRENT
Since Fossil does not allow ":" in URLs, the default URLs, and the underlying directory paths, use an alternate expression of ABI without colons, and the front-end proxy is responsible for translating the paths, allowing conventional $ABI variables to be used in package repository configurations.
Positions
- FreeBSD should be the reference platform for an open desktop based on pure Wayland.
- FreeBSD has an opportuntity to change computing with superior software management tools and practices.
Words from the Chief Operator
This is one version of my FreeBSD journey.
My formal training is in liberal arts. I graduated college at the dawn of the internet and spent the following summer teaching myself how to build websites using a borrowed dial-up connection to the local university, which was close to my residence, where I was house-sitting for a former English professor over the school break.
That experience landed me a job as the first "Internet guy" (it had a better formal title) at a local advertising agency. Eventually I struck out on my own, starting a business I described as an interactive agency.
I had the advantage of knowing the guys who ran the local Internet Service Provider (ISP), whom I had met through the ad agency but befriended on my own. Even though I had a hotline to the head honchos, it did not reduce the sting of having to tell customers I did not know when their websites would be back online.
One of those customers was a small commodities trading firm that published mountains of analysis daily on their website and essentially lived at the office, where they looked at the website constantly. This is before uptime was a thing, and I had my own early detection system. I realized that knowing why a website was down, and being directly accountable for it, represented a competitive advantage.
FreeBSD entered my frame through two simultaneous sources: a co-worker who was (at least) once questioned by the Feds about his hacking activities -- who, more importantly, may be the namesake of Morpheus -- and a mild-mannered Midwestern family man I met online while investigating an early Content Management System (CMS) called Frontier. The former taught me how to use FreeBSD, the latter taught me how to make it. I started operating my own servers running FreeBSD and never looked back.
Action | Names | Terminology | Background | Work | Foundations | Projects | Wares | Artifacts | Words from the Chief Operator