[BACK]Return to innovations.html CVS log [TXT][DIR] Up to [local] / www

Annotation of www/innovations.html, Revision 1.59

1.1       schwarze    1: <!DOCTYPE html>
1.34      schwarze    2: <html lang="en">
1.1       schwarze    3: <head>
                      4: <meta charset="UTF-8"/>
1.33      tj          5: <title>OpenBSD: Innovations</title>
1.31      deraadt     6: <meta name="viewport" content="width=device-width, initial-scale=1">
                      7: <link rel="stylesheet" type="text/css" href="openbsd.css">
1.35      tb          8: <link rel="canonical" href="https://www.openbsd.org/innovations.html">
1.1       schwarze    9: </head>
                     10:
1.31      deraadt    11: <body bgcolor= "#ffffff" text= "#000000">
                     12:
                     13: <h2>
1.59    ! job        14:     <a href="index.html">
        !            15:         <i><font color="#0000ff">Open</font></i><font color="#000084">BSD</font></a>
        !            16:     <font color="#e00000">Innovations</font>
1.32      tj         17: </h2>
1.31      deraadt    18: <hr>
1.32      tj         19: <p>
1.59    ! job        20:     This is a list of software and ideas developed or maintained by the OpenBSD
        !            21:     project, sorted in order of approximate introduction. Some of them are
        !            22:     explained in detail in our <a href="events.html">research papers</a>.
        !            23: </p>
1.32      tj         24: <hr>
1.1       schwarze   25:
1.59    ! job        26: <h3>Concepts</h3>
1.1       schwarze   27:
                     28: <ul>
1.59    ! job        29:     <li>
        !            30:         <a href="https://man.openbsd.org/ipsec.4">ipsec(4)</a>:
        !            31:         Started by John Ioannidis, Angelos D. Keromytis, Niels Provos, and
        !            32:         Niklas Hallqvist, imported February 20, 1997.  OpenBSD was the first
        !            33:         free operating system to provide an IPSec stack.
        !            34:     </li>
        !            35:     <li>
        !            36:         <a href="https://man.openbsd.org/inet6.4">inet6(4)</a>:
        !            37:         First complete integration and adoption of IPv6 led by
        !            38:         "Itojun" (Dr. Junichiro Hagino) [WIDE/KAME], Craig Metz [NRL], and
        !            39:         Angelos D. Keromytis starting Jan 6, 1999.
        !            40:         Almost fully operational Jun 6, 1999 during the
        !            41:         <a href="hackathons.html">first OpenBSD hackathon</a>.
        !            42:         OpenBSD 2.7.
        !            43:     </li>
        !            44:     <li>
        !            45:         <strong>Privilege separation</strong>:
        !            46:         First implemented by
        !            47:         <a href="http://www.citi.umich.edu/u/provos/ssh/privsep.html">Niels Provos</a>
        !            48:         and Markus Friedl in OpenSSH in March 2002, released with OpenBSD 3.2.
        !            49:         The concept is now used in many OpenBSD programs, for example
        !            50:         <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>,
        !            51:         <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>,
        !            52:         <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>,
        !            53:         <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
        !            54:         <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
        !            55:         <a href="https://man.openbsd.org/file.1">file(1)</a>,
        !            56:         <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>,
        !            57:         <a href="https://man.openbsd.org/iked.8">iked(8)</a>,
        !            58:         <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
        !            59:         <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
        !            60:         <a href="https://man.openbsd.org/mountd.8">mountd(8)</a>,
        !            61:         <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
        !            62:         <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>,
        !            63:         <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
        !            64:         <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
        !            65:         <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
        !            66:         <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>,
        !            67:         <a href="https://man.openbsd.org/man8/relayd.8">relayd(8)</a>,
        !            68:         <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
        !            69:         <a href="https://man.openbsd.org/script.1">script(1)</a>,
        !            70:         <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
        !            71:         <a href="https://man.openbsd.org/syslogd.8">syslogd(8)</a>,
        !            72:         <a href="https://man.openbsd.org/tcpdump.8">tcpdump(8)</a>,
        !            73:         <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>,
        !            74:         <a href="https://man.openbsd.org/xconsole.1">xconsole(1)</a>,
        !            75:         <a href="https://man.openbsd.org/xdm.1">xdm(1)</a>,
        !            76:         <a href="https://man.openbsd.org/Xserver.1">Xserver(1)</a>,
        !            77:         <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>,
        !            78:         <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>,
        !            79:         etc.
        !            80:     </li>
        !            81:     <li>
        !            82:         <strong>Privilege revocation</strong>:
        !            83:         Related to the work on privilege separation, some programs were refactored
        !            84:         to drop privileges while holding onto a tricky resource such as a raw socket,
        !            85:         reserved port, or modification-locked bpf(4) descriptor,
        !            86:         for example
        !            87:         <a href="https://man.openbsd.org/ping.8">ping(8)</a>,
        !            88:         <a href="https://man.openbsd.org/traceroute.8">traceroute(8)</a>,
        !            89:         etc.
        !            90:     </li>
        !            91:     <li>
        !            92:         <strong>Stack protector</strong>:
        !            93:         Developed since 2001 as "propolice" by Hiroaki Etoh. Integrated, and
        !            94:         implemented for additional hardware platforms, by Miod Vallat and Theo
        !            95:         de Raadt.  OpenBSD 3.3 was the first operating system to enable it
        !            96:         systemwide by default.
        !            97:     </li>
        !            98:     <li>
        !            99:         <strong>W^X</strong>:
        !           100:         First used for sparc, sparc64, alpha, and hppa in OpenBSD 3.3.
        !           101:         Strictly enforced by default since OpenBSD 6.0: a program can only
        !           102:         violate it if the executable is marked with <code>PT_OPENBSD_WXNEEDED</code>
        !           103:         and it is located on a filesystem mounted with the <code>wxallowed</code>
        !           104:         <a href="https://man.openbsd.org/mount.8">mount(8)</a> option.
        !           105:     </li>
        !           106:     <li>
        !           107:         <strong>GOT and PLT protection</strong> by ld.so:
        !           108:         first done as part of the W^X work in OpenBSD 3.3, by Dale Rahn and
        !           109:         Theo de Raadt. The GOT and PLT regions are read-only outside of ld.so
        !           110:         itself. Extended to the .init/.fini sections (constructors and
        !           111:         destructors) in OpenBSD 3.4.
        !           112:     </li>
        !           113:     <li>
        !           114:         <strong>ASLR</strong>:
        !           115:         OpenBSD 3.4 was the first widely used operating system to
        !           116:         provide it by default.
        !           117:     </li>
        !           118:     <li>
        !           119:         <a href="https://man.openbsd.org/gcc-local.1">gcc-local(1)</a>
        !           120:         __attribute__((__bounded__)) static analysis annotation
        !           121:         and checking mechanism:
        !           122:         Started by Anil Madhavapeddy on June 26, 2003
        !           123:         and ported to GCC 4 by Nicholas Marriott.
        !           124:         First released with OpenBSD 3.4.
        !           125:     </li>
        !           126:     <li>
        !           127:         <a href="https://man.openbsd.org/malloc.3">malloc(3)</a>
        !           128:         randomization implemented by Thierry Deval. Guard pages and randomized (delayed) free added by Ted Unangst.
        !           129:         Reimplemented by <a href="papers/eurobsdcon2009/otto-malloc.pdf">Otto Moerbeek</a>
        !           130:         for OpenBSD 4.4.
        !           131:     </li>
        !           132:     <li>
        !           133:         <strong>PIE</strong>:
        !           134:         OpenBSD 5.3 was the first widely used operating system to enable it
        !           135:         globally by default, on seven hardware platforms.
        !           136:     </li>
        !           137:     <li>
        !           138:         <strong>Random-data memory</strong>:
        !           139:         the ability to specify that a variable should be initialized at load
        !           140:         time with random byte values was implemented in OpenBSD 5.3 by Matthew
        !           141:         Dempsky.
        !           142:     </li>
        !           143:     <li>
        !           144:         <strong>Stack protector per shared object</strong>:
        !           145:         using the random-data memory feature, each shared object was given its
        !           146:         own stack protector cookie in OpenBSD 5.3 by Matthew Dempsky.
        !           147:     </li>
        !           148:     <li>
        !           149:         <strong>Static-PIE</strong>:
        !           150:         Position-independent static binaries for /bin, /sbin and ramdisks.
        !           151:         First released with OpenBSD 5.7.
        !           152:     </li>
        !           153:     <li>
        !           154:         <strong>SROP</strong>
        !           155:         (<a href="https://man.openbsd.org/sigreturn.2">sigreturn(2)</a>
        !           156:         oriented programming) mitigation: Researched by
        !           157:         <a href="http://www.cs.vu.nl/~herbertb/papers/srop_sp14.pdf">Eric Bosman</a>
        !           158:         and Herbert Bos in 2014, implemented by Theo de Raadt in May 2016,
        !           159:         enabled by default since OpenBSD 6.0.
        !           160:     </li>
        !           161:     <li>
        !           162:         <strong>Library order randomization</strong>:
        !           163:         In <a href="https://man.openbsd.org/rc.8">rc(8)</a>, re-link
        !           164:         <code>libc.so</code>, <code>libcrypto</code>, and <code>ld.so</code>
        !           165:         on startup, placing the objects in a random order.
        !           166:         Theo de Raadt and Robert Peichaer, May 2016,
        !           167:         enabled by default since OpenBSD 6.0 and 6.2.
        !           168:     </li>
        !           169:     <li>
        !           170:         Kernel-assisted lazy-binding for W^X safety in multi-threaded programs.
        !           171:         A new syscall <a href="https://man.openbsd.org/kbind.2">kbind(2)</a>
        !           172:         permits lazy-binding to be W^X safe in multi-threaded programs.
        !           173:         Implemented for OpenBSD 5.9 by Philip Guenther in July 2015.
        !           174:     </li>
        !           175:     <li>
        !           176:         Process layouts in memory tightened to remove execute permission from
        !           177:         all segmented, non-instruction data and to remove write permission from
        !           178:         data that is only modified during loading and relocation.
        !           179:         By combining the RELRO (Read-Only after Relocation) design from the
        !           180:         GNU project with the original ASLR work from OpenBSD 3.3 and
        !           181:         strict lazy-binding work from OpenBSD 5.9, this is applied to not
        !           182:         just a subset of programs and libraries but rather to all programs
        !           183:         and libraries.
        !           184:         Implemented for OpenBSD 6.1 by Philip Guenther in August 2016.
        !           185:     </li>
        !           186:     <li>
        !           187:         Use of <strong>fork+exec in privilege separated programs</strong>. The
        !           188:         strategy is to give each process a fresh &amp; unique address space for
        !           189:         ASLR, stack protector -- as protection against address space discovery attacks.
        !           190:         Implemented first by
        !           191:         Damien Miller (<a href="https://man.openbsd.org/sshd.8">sshd(8)</a> 2004),
        !           192:         Claudio Jeker (<a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>, 2015),
        !           193:         Eric Faurot (<a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>, 2016),
        !           194:         Rafael Zalamena (various, 2016), and others.
        !           195:     </li>
        !           196:     <li>
        !           197:         <strong>trapsleds</strong>:
        !           198:         Reduction of incidental NOP instructions/sequences in the instruction
        !           199:         stream which could be useful potentially for ROP attack methods to
        !           200:         innaccurately target gadgets. These NOP sequences are converted into
        !           201:         trap sequences where possible. Todd Mortimer and Theo de Raadt, June
        !           202:         2017.
        !           203:     </li>
        !           204:     <li>
        !           205:         <strong>Kernel relinking at boot</strong>:
        !           206:         the .o files of the kernel are relinked in random order from a
        !           207:         link-kit, before every reboot. This provides substantial interior
        !           208:         randomization in the kernel's text and data segments for layout and
        !           209:         relative branches/calls.  Basically a unique address space for each
        !           210:         kernel boot, similar to the userland fork+exec model described above
        !           211:         but for the kernel.  Theo de Raadt, June 2017.
        !           212:     </li>
1.17      mlarkin   213: </ul>
1.1       schwarze  214:
1.59    ! job       215: <h3>Functions</h3>
1.1       schwarze  216:
                    217: <ul>
1.59    ! job       218:     <li>
        !           219:         <a href="https://man.openbsd.org/arc4random.3">arc4random(3)</a>:
        !           220:         David Mazieres, December 28, 1996, OpenBSD 2.1
        !           221:     </li>
        !           222:     <li>
        !           223:         <a href="https://man.openbsd.org/bcrypt.3">bcrypt(3)</a>:
        !           224:         Implemented by <a href="https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html">Niels Provos and David Mazieres</a>
        !           225:         Imported February 13, 1997 and first released with OpenBSD 2.1.
        !           226:     </li>
        !           227:     <li>
        !           228:         <a href="https://man.openbsd.org/strlcpy.3">strlcpy(3)</a>,
        !           229:         <a href="https://man.openbsd.org/strlcat.3">strlcat(3)</a>:
        !           230:         Todd Miller and Theo de Raadt, July 1, 1998, OpenBSD 2.4
        !           231:     </li>
        !           232:     <li>
        !           233:         <a href="https://man.openbsd.org/strtonum.3">strtonum(3)</a>:
        !           234:         Ted Unangst, Todd Miller, and Theo de Raadt, May 3, 2004, OpenBSD 3.6
        !           235:     </li>
        !           236:     <li>
        !           237:         <a href="https://man.openbsd.org/imsg_init.3">imsg</a>:
        !           238:         Message passing API, written by Henning Brauer.
        !           239:         In libutil since May 26, 2010, OpenBSD 4.8;
        !           240:         used by various daemons before that.
        !           241:     </li>
        !           242:     <li>
        !           243:         <a href="https://man.openbsd.org/timingsafe_bcmp.3">timingsafe_bcmp(3)</a>:
        !           244:         Damien Miller, July 13, 2010, OpenBSD 4.9
        !           245:     </li>
        !           246:     <li>
        !           247:         <a href="https://man.openbsd.org/explicit_bzero.3">explicit_bzero(3)</a>:
        !           248:         Ted Unangst and Matthew Dempsky, January 22, 2014, OpenBSD 5.5
        !           249:     </li>
        !           250:     <li>
        !           251:         <a href="https://man.openbsd.org/ohash_init.3">ohash</a>:
        !           252:         Written and maintained by Marc Espie.
        !           253:         In libutil since May 12, 2014, OpenBSD 5.6;
        !           254:         used by make(1) and m4(1) before that.
        !           255:     </li>
        !           256:     <li>
        !           257:         <a href="https://man.openbsd.org/asr_run.3">asr</a>:
        !           258:         Replacement resolver written and maintained by Eric Faurot.
        !           259:         Imported April 14, 2012; activated on March 26, 2014, OpenBSD 5.6.
        !           260:     </li>
        !           261:     <li>
        !           262:         <a href="https://man.openbsd.org/reallocarray.3">reallocarray(3)</a>:
        !           263:         Theo de Raadt and Ted Unangst, April 22, 2014, OpenBSD 5.6
        !           264:     </li>
        !           265:     <li>
        !           266:         <a href="https://man.openbsd.org/getentropy.2">getentropy(2)</a>:
        !           267:         Matthew Dempsky and Theo de Raadt, June 13, 2014, OpenBSD 5.6
        !           268:     </li>
        !           269:     <li>
        !           270:         <a href="https://man.openbsd.org/sendsyslog.2">sendsyslog(2)</a>:
        !           271:         Theo de Raadt, July 10, 2014, OpenBSD 5.6
        !           272:     </li>
        !           273:     <li>
        !           274:         <a href="https://man.openbsd.org/timingsafe_memcmp.3">timingsafe_memcmp(3)</a>:
        !           275:         Matthew Dempsky, July 13, 2014, OpenBSD 5.6
        !           276:     </li>
        !           277:     <li>
        !           278:         <a href="https://man.openbsd.org/pledge.2">pledge(2)</a>:
        !           279:         Theo de Raadt, July 19, 2015, OpenBSD 5.9
        !           280:     </li>
        !           281:     <li>
        !           282:         <a href="https://man.openbsd.org/getpwnam_shadow.3">getpwnam_shadow(3)</a>,
        !           283:         <a href="https://man.openbsd.org/getpwuid_shadow.3">getpwuid_shadow(3)</a>:
        !           284:         Ted Unangst and Theo de Raadt, November 18, 2015, OpenBSD 5.9
        !           285:     </li>
        !           286:     <li>
        !           287:         <a href="https://man.openbsd.org/recallocarray.3">recallocarray(3)</a>:
        !           288:         Otto Moerbeek, Joel Sing and Theo de Raadt, March 6, 2017, OpenBSD 6.1
        !           289:     </li>
        !           290:     <li>
        !           291:         <a href="https://man.openbsd.org/freezero.3">freezero(3)</a>:
        !           292:         Otto Moerbeek, April 10, 2017, OpenBSD 6.2
        !           293:     </li>
1.16      deraadt   294: </ul>
                    295:
1.59    ! job       296:
        !           297: <h3>Programs and subsystems</h3>
1.16      deraadt   298:
                    299: <ul>
1.59    ! job       300:     <li>
        !           301:         <a href="https://man.openbsd.org/ypbind.8">ypbind(8)</a>,
        !           302:         <a href="https://man.openbsd.org/ypset.8">ypset(8)</a>,
        !           303:         <a href="https://man.openbsd.org/ypcat.1">ypcat(1)</a>,
        !           304:         <a href="https://man.openbsd.org/ypmatch.1">ypmatch(1)</a>,
        !           305:         <a href="https://man.openbsd.org/ypwhich.1">ypwhich(1)</a>,
        !           306:         and libc support: Started by Theo de Raadt.
        !           307:         Imported April 26, 1993 and first released with NetBSD 0.9.
        !           308:     </li>
        !           309:     <li>
        !           310:         <a href="https://man.openbsd.org/ypserv.8">ypserv(8)</a>:
        !           311:         Started by Mats O. Jansson in 1994.
        !           312:         Imported October 23, 1995 and first released with OpenBSD 2.0.
        !           313:     </li>
        !           314:     <li>
        !           315:         <a href="https://man.openbsd.org/mopd.8">mopd(8)</a>:
        !           316:         Started by Mats O. Jansson in 1993.
        !           317:         Imported September 21, 1996 and first released with OpenBSD 2.0.
        !           318:     </li>
        !           319:     <li>
        !           320:         <a href="anoncvs.html">AnonCVS</a>:
        !           321:         Designed and implemented by Chuck Cranor and Theo de Raadt in 1995
        !           322:         (<a href="papers/anoncvs-paper.pdf">paper</a>,
        !           323:         <a href="papers/anoncvs-slides.pdf">slides</a>)
        !           324:     </li>
        !           325:     <li>
        !           326:         <a href="https://man.openbsd.org/aucat.1">aucat(1)</a>:
        !           327:         Started by Kenneth Stailey.
        !           328:         Imported January 2, 1997 and first released with OpenBSD 2.1.
        !           329:         Now maintained by Alexandre Ratchov.
        !           330:     </li>
        !           331:     <li>
        !           332:         <a href="https://www.openssh.com/">OpenSSH</a>
        !           333:         including <a href="https://man.openbsd.org/ssh.1">ssh(1)</a>,
        !           334:         <a href="https://man.openbsd.org/scp.1">scp(1)</a>,
        !           335:         <a href="https://man.openbsd.org/sftp.1">sftp(1)</a>,
        !           336:         <a href="https://man.openbsd.org/ssh-add.1">ssh-add(1)</a>,
        !           337:         <a href="https://man.openbsd.org/ssh-agent.1">ssh-agent(1)</a>,
        !           338:         <a href="https://man.openbsd.org/ssh-keygen.1">ssh-keygen(1)</a>,
        !           339:         <a href="https://man.openbsd.org/sshd.8">sshd(8)</a>,
        !           340:         <a href="https://man.openbsd.org/sftp-server.8">sftp-server(8)</a>:
        !           341:         Started by Aaron Campbell, Bob Beck, Dug Song, Markus Friedl,
        !           342:         Niels Provos, and Theo de Raadt
        !           343:         as a fork of SSH 1.2.12 by Tatu Ylonen.
        !           344:         Imported September 26, 1999 and first released with OpenBSD 2.6.
        !           345:         Now maintained by Markus Friedl, Damien Miller, Darren Tucker, and
        !           346:         Theo de Raadt.
        !           347:     </li>
        !           348:     <li>
        !           349:         <a href="https://man.openbsd.org/mg.1">mg(1)</a>:
        !           350:         Started by Dave Conroy in November 1986.
        !           351:         Imported February 25, 2000 and first released with OpenBSD 2.7.
        !           352:         Now maintained by Mark Lumsden.
        !           353:     </li>
        !           354:     <li>
        !           355:         <a href="https://man.openbsd.org/m4.1">m4(1)</a>:
        !           356:         Originally implemented by Ozan Yigit and Richard A. O'Keefe for 4.3BSD-Reno.
        !           357:         Considerably extended and maintained by Marc Espie since 1999.
        !           358:     </li>
        !           359:     <li>
        !           360:         <a href="https://man.openbsd.org/pf.4">pf(4)</a>,
        !           361:         <a href="https://man.openbsd.org/pfctl.8">pfctl(8)</a>,
        !           362:         <a href="https://man.openbsd.org/pflogd.8">pflogd(8)</a>,
        !           363:         <a href="https://man.openbsd.org/authpf.8">authpf(8)</a>,
        !           364:         <a href="https://man.openbsd.org/ftp-proxy.8">ftp-proxy(8)</a>:
        !           365:         Started by Daniel Hartmeier as a replacement for the non-free ipf by
        !           366:         Darren Reed. Imported June 24, 2001 and first released with OpenBSD
        !           367:         3.0. Now maintained by Henning Brauer.
        !           368:     </li>
        !           369:     <li>
        !           370:         <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.4">systrace(4)</a>,
        !           371:         <a href="https://man.openbsd.org/OpenBSD-5.9/systrace.1">systrace(1)</a>:
        !           372:         Started by Niels Provos.
        !           373:         Imported June 4, 2002 and first released with OpenBSD 3.2.
        !           374:         Deleted after OpenBSD 5.9 because
        !           375:         <a href="https://man.openbsd.org/pledge.2">pledge(2)</a> is even better.
        !           376:     </li>
        !           377:     <li>
        !           378:         <a href="https://man.openbsd.org/spamd.8">spamd(8)</a>:
        !           379:         Written by Bob Beck. Imported December 21, 2002 and first released with
        !           380:         OpenBSD 3.3.
        !           381:     </li>
        !           382:     <li>
        !           383:         <a href="https://man.openbsd.org/dc.1">dc(1)</a>:
        !           384:         Written and maintained by Otto Moerbeek.
        !           385:         Imported September 19, 2003 and first released with OpenBSD 3.5.
        !           386:     </li>
        !           387:     <li>
        !           388:         <a href="https://man.openbsd.org/bc.1">bc(1)</a>:
        !           389:         Written and maintained by Otto Moerbeek.
        !           390:         Imported September 25, 2003 and first released with OpenBSD 3.5.
        !           391:     </li>
        !           392:     <li>
        !           393:         <a href="https://man.openbsd.org/sensorsd.8">sensorsd(8)</a>:
        !           394:         Started by Henning Brauer.
        !           395:         Imported September 24, 2003 and first released with OpenBSD 3.5.
        !           396:         Reworked by Constantine A. Murenin.
        !           397:     </li>
        !           398:     <li>
        !           399:         <a href="https://man.openbsd.org/pkg_add.1">pkg_add(1)</a>:
        !           400:         Written and maintained by Marc Espie.
        !           401:         Imported October 16, 2003 and first released with OpenBSD 3.5.
        !           402:     </li>
        !           403:     <li>
        !           404:         <a href="https://man.openbsd.org/carp.4">carp(4)</a>:
        !           405:         Written by Mickey Shalayeff, Markus Friedl, Marco Pfatschbacher,
        !           406:         and Ryan McBride.
        !           407:         Imported October 17, 2003 and first released with OpenBSD 3.5.
        !           408:     </li>
        !           409:     <li>
        !           410:         <a href="http://www.openbgpd.org/">OpenBGPD</a>
        !           411:         including <a href="https://man.openbsd.org/bgpd.8">bgpd(8)</a>
        !           412:         and <a href="https://man.openbsd.org/bgpctl.8">bgpctl(8)</a>:
        !           413:         Written and maintained by Henning Brauer and Claudio Jeker,
        !           414:         and also maintained by Peter Hessler.
        !           415:         Imported December 17, 2003 and first released with OpenBSD 3.5.
        !           416:     </li>
        !           417:     <li>
        !           418:         <a href="https://man.openbsd.org/dhclient.8">dhclient(8)</a>:
        !           419:         Started by Ted Lemon and Elliot Poger in 1996.
        !           420:         Imported January 18, 2004 and first released with OpenBSD 3.5.
        !           421:         Reworked by Henning Brauer.
        !           422:         Now maintained by Kenneth Westerback.
        !           423:     </li>
        !           424:     <li>
        !           425:         <a href="https://man.openbsd.org/dhcpd.8">dhcpd(8)</a>:
        !           426:         Started by Ted Lemon in 1995.
        !           427:         Imported April 13, 2004 and first released with OpenBSD 3.6.
        !           428:         Reworked by Henning Brauer.
        !           429:         Now maintained by Kenneth Westerback.
        !           430:     </li>
        !           431:     <li>
        !           432:         <a href="https://man.openbsd.org/hotplugd.8">hotplugd(8)</a>:
        !           433:         Started by Alexander Yurchenko.
        !           434:         Imported May 30, 2004 and first released with OpenBSD 3.6.
        !           435:     </li>
        !           436:     <li>
        !           437:         <a href="http://www.openntpd.org/">OpenNTPD</a>
        !           438:         including <a href="https://man.openbsd.org/ntpd.8">ntpd(8)</a>
        !           439:         and <a href="https://man.openbsd.org/ntpctl.8">ntpctl(8)</a>:
        !           440:         Written and maintained by Henning Brauer.
        !           441:         Imported May 31, 2004 and first released with OpenBSD 3.6.
        !           442:         Portable version maintained by Brent Cook.
        !           443:     </li>
        !           444:     <li>
        !           445:         <a href="https://man.openbsd.org/dpb.1">dpb(1)</a>:
        !           446:         Started by Nikolay Sturm on August 10, 2004; first available for OpenBSD 3.6.
        !           447:         Rewritten and maintained by Marc Espie since August 20, 2010.
        !           448:     </li>
        !           449:     <li>
        !           450:         <a href="https://man.openbsd.org/ospfd.8">ospfd(8)</a>,
        !           451:         <a href="https://man.openbsd.org/ospfctl.8">ospfctl(8)</a>:
        !           452:         Started by Esben Norby and Claudio Jeker.
        !           453:         Imported January 28, 2005 and first released with OpenBSD 3.7.
        !           454:     </li>
        !           455:     <li>
        !           456:         <a href="https://man.openbsd.org/ifstated.8">ifstated(8)</a>:
        !           457:         Started by Marco Pfatschbacher and Ryan McBride.
        !           458:         Imported January 23, 2004 and first released with OpenBSD 3.8.
        !           459:     </li>
        !           460:     <li>
        !           461:         <a href="https://man.openbsd.org/bioctl.8">bioctl(8)</a>:
        !           462:         Started by Marco Peereboom.
        !           463:         Imported March 29, 2005 and first released with OpenBSD 3.8.
        !           464:     </li>
        !           465:     <li>
        !           466:         <a href="https://man.openbsd.org/hostapd.8">hostapd(8)</a>:
        !           467:         Written and maintained by Reyk Floeter.
        !           468:         Imported May 26, 2005 and first released with OpenBSD 3.8.
        !           469:     </li>
        !           470:     <li>
        !           471:         <a href="https://man.openbsd.org/watchdogd.8">watchdogd(8)</a>:
        !           472:         Started by Marc Balmer.
        !           473:         Imported August 8, 2005 and first released with OpenBSD 3.8.
        !           474:     </li>
        !           475:     <li>
        !           476:         <a href="https://man.openbsd.org/sdiff.1">sdiff(1)</a>:
        !           477:         Written by Ray Lai.
        !           478:         Imported December 27, 2005 and first released with OpenBSD 3.9.
        !           479:     </li>
        !           480:     <li>
        !           481:         <a href="https://man.openbsd.org/dvmrpd.8">dvmrpd(8)</a>,
        !           482:         <a href="https://man.openbsd.org/dvmrpctl.8">dvmrpctl(8)</a>:
        !           483:         Started by Esben Norby.
        !           484:         Imported June 1, 2006 and first released with OpenBSD 4.0.
        !           485:     </li>
        !           486:     <li>
        !           487:         <a href="https://man.openbsd.org/ripd.8">ripd(8)</a>,
        !           488:         <a href="https://man.openbsd.org/ripctl.8">ripctl(8)</a>:
        !           489:         Started by Michele Marchetto.
        !           490:         Imported October 18, 2006 and first released with OpenBSD 4.1.
        !           491:     </li>
        !           492:     <li>
        !           493:         <a href="https://man.openbsd.org/pkg-config.1">pkg-config(1)</a>:
        !           494:         Started by Chris Kuethe and Marc Espie.
        !           495:         Imported November 27, 2006 and first released with OpenBSD 4.1.
        !           496:         Now maintained by Jasper Lievisse Adriaanse.
        !           497:     </li>
        !           498:     <li>
        !           499:         <a href="https://man.openbsd.org/relayd.8">relayd(8)</a>
        !           500:         with <a href="https://man.openbsd.org/relayctl.8">relayctl(8)</a>:
        !           501:         Started by Pierre-Yves Ritschard and Reyk Floeter.
        !           502:         Imported December 16, 2006 and first released with OpenBSD 4.1.
        !           503:         Now maintained by Reyk Floeter and Sebastian Benoit.<br/>
        !           504:     </li>
        !           505:     <li>
        !           506:         <a href="https://man.openbsd.org/cwm.1">cwm(1)</a>:
        !           507:         Started by <a href="http://monkey.org/~marius/cwm/README">Marius
        !           508:             Aamodt Eriksen</A> in 2004.
        !           509:         Imported April 27, 2007 and first released with OpenBSD 4.2.
        !           510:         Now maintained by Okan Demirmen.
        !           511:         <a href="https://github.com/chneukirchen/cwm">Portable version</a>
        !           512:         maintained by Leah Neukirchen.
        !           513:     </li>
        !           514:     <li>
        !           515:         <a href="https://man.openbsd.org/ospf6d.8">ospf6d(8)</a>,
        !           516:         <a href="https://man.openbsd.org/ospf6ctl.8">ospf6ctl(8)</a>:
        !           517:         Started by Esben Norby and Claudio Jeker.
        !           518:         Imported October 8, 2007 and first released with OpenBSD 4.2.
        !           519:     </li>
        !           520:     <li>
        !           521:         <a href="https://man.openbsd.org/libtool.1">libtool(1)</a>:
        !           522:         Written by Steven Mestdagh and Marc Espie.
        !           523:         Imported October 28, 2007 and first available for OpenBSD 4.3.
        !           524:         Now maintained by Marc Espie, Jasper Lievisse Adriaanse,
        !           525:         and Antoine Jacoutot.
        !           526:     </li>
        !           527:     <li>
        !           528:         <a href="https://man.openbsd.org/snmpd.8">snmpd(8)</a>,
        !           529:         <a href="https://man.openbsd.org/snmpctl.8">snmpctl(8)</a>:
        !           530:         Started by Reyk Floeter.
        !           531:         Imported December 5, 2007 and first released with OpenBSD 4.3.
        !           532:         Maintained by Reyk Floeter and Bret Lambert.
        !           533:     </li>
        !           534:     <li>
        !           535:         <a href="https://man.openbsd.org/sysmerge.8">sysmerge(8)</a>:
        !           536:         Written and maintained by Antoine Jacoutot,
        !           537:         originally forked from mergemaster by Douglas Barton.
        !           538:         Imported April 22, 2008, first released with OpenBSD 4.4.
        !           539:     </li>
        !           540:     <li>
        !           541:         <a href="https://man.openbsd.org/ypldap.8">ypldap(8)</a>:
        !           542:         Started by Pierre-Yves Ritschard.
        !           543:         Imported June 26, 2008 and first released with OpenBSD 4.4.
        !           544:     </li>
        !           545:     <li>
        !           546:         <a href="https://www.opensmtpd.org/">OpenSMTPD</a>
        !           547:         including <a href="https://man.openbsd.org/smtpd.8">smtpd(8)</a>,
        !           548:         <a href="https://man.openbsd.org/smtpctl.8">smtpctl(8)</a>,
        !           549:         <a href="https://man.openbsd.org/makemap.8">makemap(8)</a>:
        !           550:         Started by Gilles Chehade.
        !           551:         Imported November 1, 2008 and first released with OpenBSD 4.6.
        !           552:         Now maintained by Gilles Chehade and Eric Faurot.
        !           553:     </li>
        !           554:     <li>
        !           555:         <a href="http://tmux.github.io/">tmux</a>,
        !           556:         <a href="https://man.openbsd.org/tmux.1">tmux(1)</a>:
        !           557:         Started in 2007 and maintained by Nicholas Marriott.
        !           558:         Imported June 1, 2009, first released with OpenBSD 4.6.
        !           559:     </li>
        !           560:     <li>
        !           561:         <a href="https://man.openbsd.org/ldpd.8">ldpd(8)</a>,
        !           562:         <a href="https://man.openbsd.org/ldpctl.8">ldpctl(8)</a>:
        !           563:         Started by Michele Marchetto.
        !           564:         Imported June 1, 2009 and first released with OpenBSD 4.6.
        !           565:         Now maintained by Claudio Jeker.
        !           566:     </li>
        !           567:     <li>
        !           568:         <a href="http://mdocml.bsd.lv/">mandoc</a>
        !           569:         including <a href="https://man.openbsd.org/mandoc.1">mandoc(1)</a>,
        !           570:         <a href="https://man.openbsd.org/man.1">man(1)</a>,
        !           571:         <a href="https://man.openbsd.org/apropos.1">apropos(1)</a>,
        !           572:         <a href="https://man.openbsd.org/makewhatis.8">makewhatis(8)</a>,
        !           573:         <a href="https://man.openbsd.org/mandoc/man8/man.cgi.8">man.cgi(8)</a>:
        !           574:         Started by Kristaps Dzonsons in November 2008.
        !           575:         Imported April 6, 2009, first released with OpenBSD 4.8.
        !           576:         Now maintained by Ingo Schwarze.
        !           577:     </li>
        !           578:     <li>
        !           579:         <a href="https://man.openbsd.org/ldapd.8">ldapd(8)</a>,
        !           580:         <a href="https://man.openbsd.org/ldapctl.8">ldapctl(8)</a>:
        !           581:         Written by Martin Hedenfalk.
        !           582:         Imported May 31, 2010 and first released with OpenBSD 4.8.
        !           583:     </li>
        !           584:     <li>
        !           585:         <a href="http://www.openiked.org/">OpenIKED</a>
        !           586:         including <a href="https://man.openbsd.org/iked.8">iked(8)</a>
        !           587:         and <a href="https://man.openbsd.org/ikectl.8">ikectl(8)</a>:
        !           588:         Started by Reyk Floeter.
        !           589:         Imported June 3, 2010 and first released with OpenBSD 4.8.
        !           590:         Now maintained by Reyk Floeter and Mike Belopuhov.
        !           591:     </li>
        !           592:     <li>
        !           593:         <a href="https://man.openbsd.org/iscsid.8">iscsid(8)</a>,
        !           594:         <a href="https://man.openbsd.org/iscsictl.8">iscsictl(8)</a>:
        !           595:         Written and maintained by Claudio Jeker.
        !           596:         Imported September 24, 2010 and first released with OpenBSD 4.9.
        !           597:     </li>
        !           598:     <li>
        !           599:         <a href="https://man.openbsd.org/rc.d.8">rc.d(8)</a>,
        !           600:         <a href="https://man.openbsd.org/rc.subr.8">rc.subr(8)</a>:
        !           601:         Written and maintained by Robert Nagy and Antoine Jacoutot.
        !           602:         Imported October 26, 2010 and first released with OpenBSD 4.9.
        !           603:     </li>
        !           604:     <li>
        !           605:         <a href="https://man.openbsd.org/tftpd.8">tftpd(8)</a>:
        !           606:         Written and maintained by David Gwynne.
        !           607:         Imported March 2, 2012 and first released with OpenBSD 5.2.
        !           608:     </li>
        !           609:     <li>
        !           610:         <a href="https://man.openbsd.org/npppd.8">npppd(8)</a>,
        !           611:         <a href="https://man.openbsd.org/npppctl.8">npppctl(8)</a>:
        !           612:         Started by Internet Initiative Japan Inc.
        !           613:         Imported January 11, 2010, first released with OpenBSD 5.3.
        !           614:         Maintained by YASUOKA Masahiko.
        !           615:     </li>
        !           616:     <li>
        !           617:         <a href="https://man.openbsd.org/ldomd.8">ldomd(8)</a>,
        !           618:         <a href="https://man.openbsd.org/ldomctl.8">ldomctl(8)</a>:
        !           619:         Written and maintained by Mark Kettenis.
        !           620:         Imported October 26, 2012 and first released with OpenBSD 5.3.
        !           621:     </li>
        !           622:     <li>
        !           623:         <a href="https://man.openbsd.org/sndiod.8">sndiod(8)</a>:
        !           624:         Written and maintained by Alexandre Ratchov.
        !           625:         Imported November 23, 2012 and first released with OpenBSD 5.3.
        !           626:     </li>
        !           627:     <li>
        !           628:         <a href="https://man.openbsd.org/cu.1">cu(1)</a>:
        !           629:         Written and maintained by Nicholas Marriott.
        !           630:         Imported July 10, 2012 and first released with OpenBSD 5.4.
        !           631:     </li>
        !           632:     <li>
        !           633:         <a href="https://man.openbsd.org/identd.8">identd(8)</a>:
        !           634:         Written and maintained by David Gwynne.
        !           635:         Imported March 18, 2013 and first released with OpenBSD 5.4.
        !           636:     </li>
        !           637:     <li>
        !           638:         <a href="https://man.openbsd.org/slowcgi.8">slowcgi(8)</a>:
        !           639:         Written and maintained by Florian Obser.
        !           640:         Imported May 23, 2013 and first released with OpenBSD 5.4.
        !           641:     </li>
        !           642:     <li>
        !           643:         <a href="https://man.openbsd.org/signify.1">signify(1)</a>:
        !           644:         Written and maintained by <a href="http://www.tedunangst.com/flak/post/signify">Ted Unangst</a>.
        !           645:         Imported December 31, 2013 and first released with OpenBSD 5.5.
        !           646:     </li>
        !           647:     <li>
        !           648:         <a href="https://man.openbsd.org/htpasswd.1">htpasswd(1)</a>:
        !           649:         Written and maintained by Florian Obser.
        !           650:         Imported March 17, 2014 and first released with OpenBSD 5.6.
        !           651:     </li>
        !           652:     <li>
        !           653:         <a href="https://www.libressl.org/">LibreSSL</a>:
        !           654:         Started by Ted Unangst, Bob Beck, Joel Sing, Miod Vallat, Philip Guenther,
        !           655:         and Theo de Raadt on April 13, 2014, as a fork of OpenSSL 1.0.1g.
        !           656:         First released with OpenBSD 5.6.
        !           657:         Portable version maintained by Brent Cook.
        !           658:     </li>
        !           659:     <li>
        !           660:         <a href="https://man.openbsd.org/httpd.8">httpd(8)</a>:
        !           661:         Started by Reyk Floeter.
        !           662:         Imported July 12, 2014 and first released with OpenBSD 5.6.
        !           663:         Maintained by Reyk Floeter and Florian Obser.
        !           664:     </li>
        !           665:     <li>
        !           666:         <a href="https://man.openbsd.org/rcctl.8">rcctl(8)</a>:
        !           667:         Written and maintained by Antoine Jacoutot.
        !           668:         Imported August 19, 2014 and first released with OpenBSD 5.7.
        !           669:     </li>
        !           670:     <li>
        !           671:         <a href="https://man.openbsd.org/file.1">file(1)</a>:
        !           672:         Rewritten from scratch and maintained by Nicholas Marriott.
        !           673:         Imported April 24, 2015 and first released with OpenBSD 5.8.
        !           674:     </li>
        !           675:     <li>
        !           676:         <a href="https://man.openbsd.org/doas.1">doas(1)</a>:
        !           677:         Written and maintained by Ted Unangst.
        !           678:         Imported July 16, 2015 and first released with OpenBSD 5.8.
        !           679:     </li>
        !           680:     <li>
        !           681:         <a href="https://man.openbsd.org/radiusd.8">radiusd(8)</a>:
        !           682:         Written and maintained by YASUOKA Masahiko.
        !           683:         Imported July 21, 2015 and first released with OpenBSD 5.8.
        !           684:     </li>
        !           685:     <li>
        !           686:         <a href="https://man.openbsd.org/eigrpd.8">eigrpd(8)</a>,
        !           687:         <a href="https://man.openbsd.org/eigrpctl.8">eigrpctl(8)</a>:
        !           688:         Written and maintained by Renato Westphal.
        !           689:         Imported October 2, 2015 and first released with OpenBSD 5.9.
        !           690:     </li>
        !           691:     <li>
        !           692:         <a href="https://man.openbsd.org/rebound.8">rebound(8)</a>:
        !           693:         Written and maintained by Ted Unangst.
        !           694:         Imported October 15, 2015 and first released with OpenBSD 5.9.
        !           695:     </li>
        !           696:     <li>
        !           697:         <a href="https://man.openbsd.org/vmm.4">vmm(4)</a>,
        !           698:         <a href="https://man.openbsd.org/vmd.8">vmd(8)</a>,
        !           699:         <a href="https://man.openbsd.org/vmctl.8">vmctl(8)</a>:
        !           700:         Written and maintained by Mike Larkin and Reyk Floeter.
        !           701:         Imported November 13, 2015 and first released with OpenBSD 5.9.
        !           702:     </li>
        !           703:     <li>
        !           704:         <a href="https://man.openbsd.org/pdisk.8">pdisk(8)</a>:
        !           705:         Originally written by Eryk Vershen in 1996-1998,
        !           706:         rewritten and maintained by Kenneth Westerback since January 11, 2016
        !           707:         and first released with OpenBSD 5.9.
        !           708:     </li>
        !           709:     <li>
        !           710:         <a href="https://man.openbsd.org/mknod.8">mknod(8)</a>:
        !           711:         Original version from Version 6 AT&amp;T UNIX (1975),
        !           712:         last rewritten by Marc Espie on March 5, 2016
        !           713:         and first released with OpenBSD 6.0.
        !           714:     </li>
        !           715:     <li>
        !           716:         <a href="https://man.openbsd.org/audioctl.1">audioctl(1)</a>:
        !           717:         Originally written by Lennart Augustsson in 1997,
        !           718:         rewritten and maintained by Alexandre Ratchov since June 21, 2016
        !           719:         and first released with OpenBSD 6.0.
        !           720:     </li>
        !           721:     <li>
        !           722:         <a href="https://man.openbsd.org/switchd.8">switchd(8)</a>,
        !           723:         <a href="https://man.openbsd.org/switchctl.8">switchctl(8)</a>:
        !           724:         Written and maintained by Reyk Floeter.
        !           725:         Imported July 19, 2016; released with OpenBSD 6.1.
        !           726:     </li>
        !           727:     <li>
        !           728:         <a href="https://man.openbsd.org/acme-client.1">acme-client(1)</a>:
        !           729:         Written by Kristaps Dzonsons, imported August 31, 2016; released
        !           730:         with OpenBSD 6.1.
        !           731:     </li>
        !           732:     <li>
        !           733:         <a href="https://man.openbsd.org/syspatch.8">syspatch(8)</a>:
        !           734:         Written and maintained by Antoine Jacoutot.
        !           735:         Imported September 5, 2016; released with OpenBSD 6.1.
        !           736:     </li>
        !           737:     <li>
        !           738:         <a href="https://man.openbsd.org/ping.8">ping(8)</a>:
        !           739:         Restructured to include IPv6 functionality and maintained by Florian Obser.
        !           740:         The separate
        !           741:         <a href="https://man.openbsd.org/OpenBSD-6.0/ping6.8">ping6(8)</a>
        !           742:         was superseded on September 17, 2016,
        !           743:         and the new, combined version was released with OpenBSD 6.1.
        !           744:     </li>
        !           745:     <li>
        !           746:         <a href="https://man.openbsd.org/xenodm.1">xenodm(1)</a>:
        !           747:         Cleaned-up fork of
        !           748:         <a href="https://man.openbsd.org/OpenBSD-6.0/xdm.1">xdm(1)</a>
        !           749:         maintained by Matthieu Herrb.
        !           750:         Imported October 23, 2016; released with OpenBSD 6.1.
        !           751:     </li>
        !           752:     <li>
        !           753:         <a href="https://man.openbsd.org/ocspcheck.8">ocspcheck(8)</a>:
        !           754:         Written and maintained by Bob Beck.
        !           755:         Imported January 24, 2017; released with OpenBSD 6.1.
        !           756:     </li>
        !           757:     <li>
        !           758:         <a href="https://man.openbsd.org/slaacd.8">slaacd(8)</a>:
        !           759:         Written and maintained by Florian Obser.
        !           760:         Imported March 18, 2017; released with OpenBSD 6.2.
        !           761:     </li>
1.1       schwarze  762: </ul>
                    763:
1.11      deraadt   764: <h3>Projects maintained by OpenBSD developers outside OpenBSD</h3>
1.1       schwarze  765:
                    766: <ul>
1.59    ! job       767:     <li>
        !           768:         <a href="http://www.sudo.ws/">sudo</a>:
        !           769:         Started by Bob Coggeshall and Cliff Spencer around 1980.
        !           770:         Imported November 18, 1999, first released with OpenBSD 2.7.
        !           771:         Now maintained by Todd Miller.
        !           772:     </li>
        !           773:     <li>
        !           774:         <a href="http://bulabula.org/femail/">femail</a>:
        !           775:         Written and maintained by Henning Brauer.
        !           776:         Started in 2005, port available since September 22, 2005.
        !           777:     </li>
        !           778:     <li>
        !           779:         <a href="http://www.midish.org/">midish</a>:
        !           780:         Written and maintained by Alexandre Ratchov.
        !           781:         Started in 2003, port available since November 4, 2005.
        !           782:     </li>
        !           783:     <li>
        !           784:         <a href="https://github.com/nicm/fdm">fdm</a>:
        !           785:         Written and maintained by Nicholas Marriott.
        !           786:         Started in 2006, port available since January 18, 2007.
        !           787:     </li>
        !           788:     <li>
        !           789:         <a href="https://github.com/ajacoutot/toad/">toad</a>:
        !           790:         Written and maintained by Antoine Jacoutot.
        !           791:         Started in 2013, port available since October 8, 2013.
        !           792:     </li>
        !           793:     <li>
        !           794:         <a href="http://jasperla.github.io/portroach/">portroach</a>:
        !           795:         Written and maintained by Jasper Lievisse Adriaanse,
        !           796:         originally forked from FreeBSD's portscout.
        !           797:         Started in 2014, port available since September 5, 2014.
        !           798:     </li>
        !           799:     <li>
        !           800:         <a href="https://github.com/yasuoka/cvs2gitdump">cvs2gitdump</a>:
        !           801:         Written and maintained by YASUOKA Masahiko.
        !           802:         Started in 2012, port available since August 1, 2016.
        !           803:     </li>
1.1       schwarze  804: </ul>
                    805:
                    806: </body>
                    807: </html>