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