Watch the video here: http://bit.ly/11wK25T.
These are the slides for Jordan Hubbard's presentation, "FreeBSD: The Next 10 Years", given at MeetBSD California 2014 in San Jose.
Visit us at www.iXsystems.com or www.FreeNAS.org to learn more.
3. FreeBSD 1.0
From jkh@whisker.lotus.ie Tue Nov 2 14:51:38 1993
Path: sran230!sranhd!sranha!wnoc-tyo-news!nec-tyo!nec-gw!sgiblab!
spool.mu.edu!agate!agate!usenet
From: jkh@whisker.lotus.ie (Jordan K. Hubbard)
Newsgroups: comp.os.386bsd.announce
Subject: FreeBSD 1.0 RELEASE now available
Followup-To: poster
Date: 1 Nov 1993 16:12:20 -0800
Organization: Lotus Development Ireland
Lines: 61
Sender: cgd@agate.berkeley.edu
Approved: 386bsd-announce-request@agate.berkeley.edu
Message-ID: <JKH.93Oct31223943@whisker.lotus.ie>
NNTP-Posting-Host: agate.berkeley.edu
The first "official" release of FreeBSD 1.0 is now available, no more
greek letters - this is the "production" release ...
12. Commercial interests
20 years ago
• Internet Service Providers (large and small)
• SOHO web servers / routers (very DIY)
• Major services like Yahoo!, Hotmail, etc.
• Basic developer desktop machines
• Majority of FreeBSD machines were physical PCs
that ran off of AC power
Key take-away: FreeBSD’s role was fairly overt
13. 20 years later...
New install media: 64GB USB thumb drive. Holy crap!
14. 20 years later...
RB-Pi: SBC Far more powerful than my first FreeBSD
machine. Cost: Under $50 (with storage card)
15. 20 years later...
My dream laptop has evolved (BSD instead of Windows)
16. 20 years later...
• FreeBSD release version is up to 10.1
• Over 24000 ports (vs 70!)
• Hundreds of committers, from both academia and
commercial backgrounds
• Sources of long-term funding (Foundation, other
sponsors)
• … But the commercial interests and overall market
have changed significantly
17. Hey BSD: Let’s see that license again!
The GPL experience
The GPLv3: Scaring the crap out of lawyers since 2007
18. Commercial interests
Today
• FreeBSD is the underlying OS technology for routers,
load balancers, security monitors, file servers, etc.
• Basis for “software appliances” like pfSense, FreeNAS
and quite a few others
• Even the base OS for a very popular gaming console
• “Embedded” market is morphing and exploding
Key take-away: FreeBSD’s role, and even its name, is now fairly covert
20. Even in the Enterprise…
• “BYOD” movement has slowed desktop growth
and fundamentally changed IT department mission
• “Cloud” software / storage / computational
resource consolidation have all but killed the DIY
datacenter
• Much better automation choices (*stack, chef,
puppet) gives rise to the “2 guys with their laptops
in a coffee shop” startup model
21. The rise of virtualization
• VMWare, Xenserver, Hyper-v, bhyve - all acceptable
hypervisors. Majority of OS deployments (and
devices) are no longer physical
• Automation tools work hardest to erase the notion
of machine personality (and put it elsewhere)
• Being virtual and/or automated means the entire
environment becoming far less human-centric
22. What is an Operating System?
A set of lego blocks
23. What do OS designers like to build?
Things they think are cool
24. We have to change our
definition of what is cool
(Building blocks are cool)
25. More about mobile
• More Unix machines are running on batteries than
are plugged into AC by several orders of magnitude
• Talking to one or more radios has replaced physical
cables
• The obvious: Power consumption and dynamic
interface / connection management is important
• Less obvious: High-level debugging and telemetry
technology become critical to success
27. What does this all mean?
• We need to be open to fundamentally new
approaches and ruthlessly cull what is no longer
demonstrably useful to the 99%
• We need to be willing to shamelessly steal^H^H^H^H
adopt things that are working well for others
• We need to take on some big-picture challenges that
will appeal to the next generation of hackers (where’s
the next mountain?)
28. One Project Idea
All OS / App configuration data
• We need a lingua franca format yesterday!
• Whether it be XML, YAML or JSON, we also
need a single API to read / write / abstract away
the details of finding config data.
• Existing tools /services need to convert their
legacy formats into this one and use the same
API or the tower of babel will persist
29. Working Example
• All OS and app configuration data in OS X and iOS are XML
plist files, even GNU emacs and X11.org’s preferences!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SULastCheckTime</key>
<date>2014-02-09T02:45:56Z</date>
<key>cache_fonts</key>
<true/>
<key>done_xinit_check</key>
<true/>
<key>no_auth</key>
<false/>
<key>nolisten_tcp</key>
<true/>
</dict>
</plist>
30. One Project Idea
A centralized event notification system
• You just can’t deal with:
• Radios powering up and down at odd times
• Network configuration changing rapidly
• A node changing its identity almost entirely on the fly
• Critical system caches needing invalidation
… without a centralized way of being able to know about
these sorts of events!
31. Working Example
• notify(3) APIs in OS X / iOS and corresponding notifyd daemon
• Send it a SIGUSR1 on OS X and you will see a huge number of notification names
and their subscribers in /var/run/notifyd_pid.status - it has become insanely useful!
"com.apple.system.lowdiskspace.system" uid=0 gid=0 333
17 32 port
"com.apple.system.timezone" uid=0 gid=0 333 slot 7 = 1
1018 1 memory
1011 10 port
1011 8 memory
1011 6 port
"com.apple.system.powermanagement.SystemLoadAdvisory" uid=0 gid=0 333 slot 13 = 19
406 44 port
944 12 port
406 35 memory
"com.apple.system.config.network_change" uid=0 gid=0 333 slot 39 = 129
190 17 memory
845 28 memory
845 26 memory
"ids-device-nearby-0FC85E3A-7779-4EAA-AD02-70292707A33C" uid=0 gid=0 333
229 30 port
402 19 port
257 30 port
242 23 port
32. One Project Idea
Service startup and wrangling
• /etc/rc.d is quite sophisticated for what it does,
but the paint on /etc/rc is obvious
• Too many things need to know explicitly about
dependencies (when can I start? What has to
start before me?)
• Power wrangling and automation depend on being
able to start and stop services easily and at will
33. Working Example
• I’m trying really hard not to suggest launchd here (so I won’t)
• The idea of registering everything up-front with a broker and
then letting IPC / timers / HW events start things from there (in
cascade fashion) is still the right architecture
• Even the linux die-hards have essentially grasped the necessity
of systemd (even though they’re going to hate on it for awhile
longer)
34. One Project Idea
Telemetry & Remote Debugging
• We really need a centralized way of being able
to collect data from appliances / mobile devices
• The NSA don’t need our help (they already do
this upstream) but FreeBSD downstream end-users
DO
• Debugging the software stack on mobile devices
is hard. It’s time for remote debugging support
35. One Project Idea
Reference phone / tablet ports
• Running on SBCs is excellent for bootstrapping,
but there’s no “real world” hardware to support
(displays, radios, accelerometers, etc)
• Running on hardware you can actually use and
carry around validates power / telemetry work
• Real Hardware forces you to think about the
entire software stack
36. In summary
• We need to become more lego-like (and toss those
legos we don’t need out of the box) in our
architecture
• The hardware platforms we choose need to be
genuinely relevant in terms of mass appeal
• We need to be more willing to learn from those
who have gone before us in these emerging markets
(BSD has a bit of a “rep” there)