FOSSLC is a non-profit organization that specializes in technology and know-how to record conferences with excellent quality. Click on the icons below to view great videos from communities we are actively involved with:

 

BSD

Articles related to the BSD family of licenses.

Maintaining a Customized FreeBSD Distribution

in BSDCan, BSDCan2010, FreeBSD, Programming, BSD
FreeBSD

Location

Ottawa, ON
Canada
45° 24' 41.6592" N, 75° 41' 53.4984" W

FreeBSD works great for many tasks out of the box. As an open source operating system, FreeBSD can be customized to optimally perform specialized tasks. This talk will cover some of the nuts and bolts of managing a customized version of FreeBSD. It is aimed at the server market rather than the embedded space. Topics will include strategies for maintaining local patches to the source tree, deploying unattended installs, and upgrading the OS version.

Event: 
BSDCan2010
Speaker: 
John Baldwin

Porting dummynet to Linux and Windows

in BSDCan, BSDCan2010, Programming, BSD

Location

Ottawa, ON
Canada
45° 24' 41.6592" N, 75° 41' 53.4984" W

Porting userland code to different platforms is a common practice. Porting kernel code is much less common for many reasons, including the absence of common APIs, a fact which often prevents code reuse and suggest complete rewrites. There are however areas (including pieces of the network stack) where such differences are less important and porting becomes attractive. Furthermore, writing code with portability in mind also helps running kernel code in user-space, which is a huge help in testing and performance analysis. In this talk we will discuss our experience in porting the ipfw and dummynet subsystems to Linux and Windows. We will describe how we dealt with the OS-specific features in the subsystems we used: packet representation, locking, timers and other OS services, compilers and build environments. The experience helped us a lot in the development of the new (ipfw3) version of these two subsystems, which runs almost the same code on all three platforms.

Event: 
BSDCan2010
Speaker: 
Luigi Rizzo

jbuild - next generation build tool for FreeBSD

in BSDCan, BSDCan2010, FreeBSD, Programming, BSD
FreeBSD

Location

Ottawa, ON
Canada
45° 24' 41.6592" N, 75° 41' 53.4984" W

This presentation will discuss a modified version of the FreeBSD make(1) utility named "jbuild". jbuild was originally developed by FreeBSD developer, John Birrell, to solve large scale software build issues by improving the dependency tracking of make(1). jbuild improves dependency tracking by tracing all file system reads and writes by programs invoked by fork(). This traced data is used to augment the dependency tracking in make(1).

This presentation will be an in-depth technical presentation of jbuild, and will discuss some possible ways in which it can be used to improve the software build of FreeBSD.
jbuild - next generation build tool for FreeBSD

The make(1) utility has been part of the FreeBSD base system since the beginning of the project. Before FreeBSD, the make utility was included with PWB/Unix 1.0 In FreeBSD, one of make(1)'s most important uses is used to build all the software that comprises the FreeBSD base system (userland and kernel).

Over time, the size of the FreeBSD codebase has grown, as has the number of architectures that it can build on. The scale of the software build requirements for FreeBSD has exposed some fundamental limitations in make(1) and the core sys.mk Makefile rules used to build FreeBSD. Some of the problems that end-users see due to these limitations include: -> Parallel builds with very high values of -j [n] often fail. -> "make universe" rebuilds a lot of the same software multiple times, and takes a very long time. Consequently most FreeBSD developers do not test their code against this target, so sometimes code changes are introduced which break the build on less frequently used machine architectures.

For the FreeBSD project, these problems are annoying, but may be somewhat tolerable. However, for commercial products that are derived from FreeBSD, with much larger codebases, these problems can result in huge productivity losses.

FreeBSD developer John Birrell saw many of these problems in the software build at his employer, Juniper Networks. John decided to address some of these fundamental software build problems by: (1) modifying FreeBSD's make(1) to trace all programs invoked from make(1) via fork(), in order to log all file system read and write calls (2) using this tracing information to generate dependency information which could be used by make(1) (3) writing core Makefile rules in sys.mk to make it easier to add new machine architectures to the build, and make it easy to test compilation of code across multiple architectures

John implemented his changes as a fork of the make(1) utility, named "build", and later "jbuild". The code for jbuild is available in a branch of the FreeBSD SVN repository.

This presentation will discuss some of technical details of jbuild, and also John's vision for how this utility could be applied to improving the FreeBSD build.

Event: 
BSDCan2010
Speaker: 
Craig Rodrigues

ClangBSD

in BSDCan, BSDCan2010, gcc, Programming, BSD

Location

Ottawa, ON
Canada
45° 24' 41.6592" N, 75° 41' 53.4984" W

Replacing gcc with clang as the FreeBSD system compiler

FreeBSD currently uses gcc as its system compiler. Because of a political decision on GPLv3 we are stuck with version 4.2.1. Recently a new possible candidate for system compiler arised - clang (based on LLVM). We are currently maintaining a branch of FreeBSD that uses clang as the system compiler for C/ObjC/C++. The talk aims to describe the history, current status and future possibilities of clang in FreeBSD as presented in the clangbsd branch.

The system compiler is integral and absolutely necessary part of the FreeBSD operating system. We have used gcc for almost the whole life of FreeBSD. It supports all of the architectures we need, it provides some tweaks we added over the time and generally serves us quite well. Unfortunatelly gcc switched to GPLv3 which is incompatible with FreeBSD, as decided by core, thus we are stuck with quite old gcc version 4.2.1. There are other problems with gcc, mostly awkward dealing with upstream. A very similar story goes on with the assembler and linker.

At first a students project that grew into industry supported solution, mostly backed by Apple, the LLVM emerged. One of the LLVM's subprojects is a C/ObjC/C++ compiler. The whole package of LLVM+clang reached the state when it can compile basically all of FreeBSD and a branch of FreeBSD integrating clang into it was established and is being maintained. The other interesting LLVM subproject is llvm-mc, the assembler and dissasembler based on LLVM. There's also compiler-rt, a possible replacement for libgcc.

This talk aims to introduce you to the current state of clang/llvm on FreeBSD, what it can do, what are the advantages over gcc and what are the last missing pieces. At last I'd like to discuss the possibility of integrating clang into FreeBSD as the system compiler.

Event: 
BSDCan2010
Speaker: 
Roman Divácký