Developer Welcome to MidnightBSD Development

Update: June 2015

0.7-CURRENT and 0.6-p2 contain new ZFS support for TRIM on solid state drives. It is enabled by default. The mport utility now supports locks in current. With this feature, you can disable delete or update commands on packages that are installed in the system. This can prevent accidents or upgrades during a system-wide update.

Update: (November 2013)

Post 0.4-RELEASE, several issues were detected with mport tools. We're working on several improvements to these for 0.5. We're also working on some changes to mports to facilitate easier installation of desktop environments. This is the most common feature request we've received in relation to 0.4.

We've moved mports and our website into subversion recently. The src module will move by the end of the year.

Users running 0.4-RELEASE should pull changes from CVS on the RELENG_0_4 branch and rebuild. This fixes bugs with mport and also includes security patches.

Update: (February 2012)

Our current big project is replacing sysinstall with a modified version of bsdinstall from FreeBSD 9.0-RELEASE. As part of this project, several major changes have been made to GEOM in the kernel. MidnightBSD now supports it's own GPT partition schemes, and understands GPT types from several other operating systems including Microsoft Windows, Apple Mac OS X (and Apple TV), Linux, FreeBSD and NetBSD.

mport has had several improvements. An article on mport tools appeared in the February 2012 issue of BSD Magazine.

The OpenBSD sensors framework code was updated to use fine grain locking along with many sysctl's in 0.4-CURRENT. This should improve performance.

Apple's mDNSResponder 330.10 was recently imported.

Several stability problems have been corrected in the 0.4-CURRENT kernel introduced in November. CURRENT kernels now have WITNESS and INVARIANTS enabled by default. This slows down performance, but allows us to catch a lot of subtle problems. Historically, this was disabled after a buggy patch was introduced to the TCP network stack years ago. This code was replaced during development of 0.3.

The release building architecture is undergoing significant changes to work with the new installer. Current documentation on this process is out of date and one should look at the src/Makefile, src/Makefile.inc1 and release/* for the current procoess.

Update: (September 2011)

ctriv@ started the libmport project several years ago. Today, we have a functioning replacement for pkg_tools on MidnightBSD. We're in the bug fixing phase for the next release.

Perl has been updated to 5.14 in CURRENT. We've got most of Gnome 2.32 working, KDE 3.5.10, X.org 7.4 (plus some updates), and I'm in the process of updating GNUstep to the latest version. Several Etoile ports are now on 0.4.1. Opera 11.51, Linux versions of Firefox 6 and Thunderbird 6 work on current with some minor problems, Flash 10, Chrome 5 (needs updating badly), and openjdk 6.

MidnightBSD gained a new search tool called msearch. This uses sqlite3 to index files on the system. It contains a list of files that can be searched with sql queries using sqlite3 or on the command line and a full text index of files on the system. The indexer runs out of periodic as nobody so really sensitive files can be hidden as necessary by changing the permissions. While gzip compression is used with the full text index and some logic with libmagic helps us avoid indexing some files, the database sizes can be rather large on some systems. It's recommended that one only use this if they have a large /var partition over 5GB.

Update: (March 2011)

MidnightBSD 0.3-RELEASE was shipped a little over a month ago. Since then, we've focused on getting contributed software up-to-date as well as work on mport tools. 0.4 will be the first release with mport tools as default.

Update: (May 2009)

ctriv@ has been testing libmport and the mport tools for the 0.3 release. We're currently working on importing GCC 4.2.1 into src. We now use bsdcpio and bsdtar, sudo 1.6.9p20, OpenSSH 5.2, OpenSSL .98, ZFS version 6, gjournal, pcc .99, Perl 5.10

With mports, we now have KDE 3.5.10 (still in progress for some parts), X.org 7.4, Gnome 2.20, GNUstep is working again, Etoile 0.2 (although this needs to be updated), unbranded F* browser as www/browser, Midori + webkit.

Update: (October 2007)

Seirei@ has imported Etoile 0.2 into our mports collection. You can test the window manager and many other features. We also offer KDE 3.5.4 and WindowMaker among other environments. About half of Gnome is in as well. We still plan to focus on GNUstep + Etoile.

0.1 Release shipped with WindowMaker and KDE on the CD as well as GNUstep. The installer did not automatically install the ports though. 0.1.1 Release will fix some bugs with the packages as well as enable "mports" by default. Work has begun on bringing X.org 7.3 into the tree, although 0.1.1 will continue to use 6.9.

Update: (March 2007)

We are planning on using WindowMaker until the Etoile Project is farther along with their work. Etoile is in mports as are many other GNUstep based software packages.

If you are interested in joining the MidnightBSD project, please contact questions@midnightbsd.org . We are looking for programmers with all types of skills, port maintainers, documentation and website maintainers, and people interested in mirroring.

Developer Resources

The project was originally available in cvs, then svn and now git. The legacy svn repos are still available for read-only use.

The operating system source code "src", mports and www are now located in git. Regular users may check these out over HTTPS.

Checkout MidnightBSD via Git

Users (src):

git clone https://github.com/midnightbsd/src.git

To change to other branches

git checkout stable/3.0

Developers (src):

git clone git@github.com:MidnightBSD/src.git

Users (mports):

git clone https://github.com/midnightbsd/mports.git

Developers (mports):

git clone git@github.com:MidnightBSD/mports.git

Users (www):

git clone https://github.com/midnightbsd/www.git

Users (mport package manager):

git clone https://github.com/midnightbsd/mport.git

Users (mport graphical package manager):

git clone https://github.com/midnightbsd/mport-manager.git

You can view code on GitHub

Legacy SVN checkouts

Users (src):

#0.6 svn co http://svn.midnightbsd.org/svn/src/stable/0.6 src # Current svn co http://svn.midnightbsd.org/svn/src/trunk src

Developers (src):

svn co svn+ssh://username@stargazer.midnightbsd.org/home/svn/repos/src/trunk src

Users (mports):

svn co http://svn.midnightbsd.org/svn/mports/trunk mports

Developers (mports):

svn co svn+ssh://username@stargazer.midnightbsd.org/home/svn/repos/mports/trunk mports

Developers (www):

svn co svn+ssh://username@stargazer.midnightbsd.org/home/svn/repos/www/trunk www

Source code and mports can also be viewed using ViewVC, and OpenGrok.

Building MidnightBSD

To build MidnightBSD, checkout the source code as stated above and cd into the directory. e.g. cd /usr/src

Run make buildworld, make buildkernel, mergemaster -p, make installkernel, reboot, go into single user mode, make installworld, and finally mergemaster. If the kernel fails to boot, you can go back to the old kernel by booting it up from the loader and replacing kernel with kernel.old in the /boot directory.

Background

MidnightBSD is based on FreeBSD 6.1 pre-release. The goal of the project is to create a BSD with ease of use and simplicity in mind. 0.3 RELEASE brought in enhancements from FreeBSD 7.0 and 0.4 included an infusion of FreeBSD 9.1 sources. MidnightBSD 1.x included enhancements from FreeBSD 10.4 and MidnightBSD 2.x includes features from FreeBSD 11 stable (somewhere between 11.3 and 11.4).

With MidnightBSD 3.0, features from FreeBSD 12-stable (June 17, 2022) between FreeBSD 12.3 and 12.4 were imported.

Goals

  • Create an easy to use desktop environment with basic functionality and a full graphical administration interface.
  • Create a unique window manager designed with ease of use in mind. We will not use full-blown desktop environments like KDE or Gnome.
  • (original goal, recently changed) Integrate GNUstep into the system, but maintain BSD licensing on our own code whenever possible. The kernel and most userland software must be BSD licensed.
  • Currently using Xfce desktop environment as our standard desktop.
  • Incorporate new technologies from other BSD projects that may interest desktop users. OpenBSD's OpenNTPD, OpenSSH, and wireless drivers are examples.
  • Create our own ports system based on FreeBSD's ports. The system would have a graphical interface and existing utilities would be merged into a library so identical functionality is maintained on the gui and command line.
  • Setup a binary update system so that users do no need to compile patches or new releases to get security updates or bug fixes.
  • Listen to user feedback to improve the system. At times, many open source projects fail to listen to users making systems more difficult to use and decreasing scope.

Initially for 1.0 release, I'd like to have a new installer (wheither it be DragonFlyBSD's or a new one) along with a basic graphical environment. WindowMaker, Firefox, Thunderbird, and a few other applications. From there, based on user feedback, I'd like to build on the solid base of FreeBSD.

During the 2.0.x release cycle, we switched desktop environments to Xfce. This was in part due to user feedback that GNUstep + windowmaker was feeling dated and also some integration issues. We may change the default desktop in the future again, but currently have no plans to do so. GNUstep + windowmaker is still available for users who prefer that.

To clarify, this is a fork of FreeBSD. I'm not creating a distro* like DesktopBSD or PC-BSD.

* distro is often used in the Linux community. Some BSD folks hate that term applied to other projects. My working definition is a system with core componets (kernel, large parts of userland) that are not developed by the entity releasing the operating environment. It is a collection of software grouped together possibly with an installer. This can be applied to Live CD projects, BSD firewall projects, PC-BSD, DesktopBSD, and non BSD projects like Fedora, Gentoo, and so on.