Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
illumos 
State of the Community 
POSIX Update 
Garrett D’Amore 
Advanced Micro Devices, Inc.
illumos is… 
• Open Source System V (Solaris) Derived 
• Development home for DTrace and ZFS 
• Kernel + core for OmniOS, ...
Recent Developments 
• Network Virtualization 
• Virtualization (LX brand, Bhyve, etc.) 
• Persistent L2ARC 
• SMB2 / SMB3...
Pace 
• Good stuff happening 
• But, 
• without the frenetic churn 
• this is a good thing 
• but, 
• its also a concern
State of POSIX in Tree 
• Mostly complete support for POSIX.1-2001, SUSv3 
• Failings are in user land mostly (e.g. more, ...
Driving Real $$ 
• Standbys: Nexenta, Joyent, Delphix, OmniTI 
• New comers: RackTop, Pluribus Networks 
• “Stealthy” play...
Challenges & 
Opportunities
No “Formal” 
Organization
things we lack 
• Bounties 
• Governance (?!?) 
• Ownership 
• Marketing 
• Legal presence
Opportunities for non- 
Gurus 
• Write & improve documentation 
• Localization 
• Test development 
• Marketing
~150 Contributors
~0 ♀ Contributors
Where are the 
women?
Hire a Female Kernel 
Engineer. Today.
Groupthink. 
— people are sheeple
Linux 
—“easy” choice
FUD. 
(Not Elmer.)
Drift & Divergence
Lots of private forks
less is more
less(1) is more(1)
less bloat is more 
(better)
less (compatible) is more 
(compatible)
less talking is more coding
illumos-core
illumos-core vision 
• focus on code 
• standards compliant - by default 
• less is more 
• self-hosting 
• self-testing 
...
Standards 
• SunOS 4.x (and 3.x) is truly ancient (32-bit SPARC only!) 
• XPG3 - this is really, really old 
• POSIX is re...
Ancient & Useless Stuff 
• htable, gettable - last possible use was in 1990 (DNS anyone?!) 
• Wireless USB. DOA. 
• 16-bit...
readdir_r(3c) case study 
• Standardized by POSIX in 1995 (IEEE Std. 1003.1c-1995) 
• Earlier Draft version (Draft 6) supp...
readdir_r(3c) case study 
• struct dirent *readdir_r(DIR *, struct dirent ***); 
• unless… 
• _POSIX_C_SOURCE - 0 >= 19950...
readdir_r(3c) resolution 
• struct dirent *readdir_r(DIR *, struct dirent ***); 
• unless… 
• _POSIX_C_SOURCE - 0 >= 19950...
accomplishments so far 
• less(1) is more(1) 
• uname & puname 
• fexecve(2), O_TTY_INIT, O_DIRECTORY 
• removed a lot of ...
uname(2) 
• uname -s == “illumos” 
• uname -r == 0.9.x (x == months since Aug 2010) 
• puname(1) utility 
• puname -S unam...
uname breakage 
• 64-bit Studio (checks for SunOS > 5.7) 
• hald - fixed (in separate git repo), breaks X 
• config.guess ...
Remaining Compliance Work for C APIs 
• System Interfaces (POSIX.1-2008) 
• memory streams 
• dprintf (universe explodes…)...
Shell & Utilities Work 
• pax (not star, thank you very much) 
• modernize (slightly) awk 
• lots of minor updates (mv, cp...
Can I Help? 
YES! YOU CAN!
• Code & Documentation reviews 
• Testing 
• Help upstreaming 
• Code contributions (pull requests!) 
• http://bitbucket.o...
Thank you!!
Upcoming SlideShare
Loading in …5
×

Surge2014 talk - illumos State of the Community & POSIX Update

768 views

Published on

I presented a community update and details about POSIX and my illumos-core side effort at SurgeCon 2014, in Washington DC.

Published in: Technology
  • Be the first to comment

Surge2014 talk - illumos State of the Community & POSIX Update

  1. 1. illumos State of the Community POSIX Update Garrett D’Amore Advanced Micro Devices, Inc.
  2. 2. illumos is… • Open Source System V (Solaris) Derived • Development home for DTrace and ZFS • Kernel + core for OmniOS, SmartOS, NexentaStor • Four years on its own, but really ~25 years old
  3. 3. Recent Developments • Network Virtualization • Virtualization (LX brand, Bhyve, etc.) • Persistent L2ARC • SMB2 / SMB3 • Hardware drivers • POSIX & Compatibility
  4. 4. Pace • Good stuff happening • But, • without the frenetic churn • this is a good thing • but, • its also a concern
  5. 5. State of POSIX in Tree • Mostly complete support for POSIX.1-2001, SUSv3 • Failings are in user land mostly (e.g. more, pax, etc.) • Minimal support for POSIX 2008 updates. Largest of which is locale_t (newlocale(3c)& friends) • Some 2008 interfaces present, but not exposed, and many removed interfaces exposed
  6. 6. Driving Real $$ • Standbys: Nexenta, Joyent, Delphix, OmniTI • New comers: RackTop, Pluribus Networks • “Stealthy” players: e.g. Tegile • Total “market” value: > $100M (perhaps >>)
  7. 7. Challenges & Opportunities
  8. 8. No “Formal” Organization
  9. 9. things we lack • Bounties • Governance (?!?) • Ownership • Marketing • Legal presence
  10. 10. Opportunities for non- Gurus • Write & improve documentation • Localization • Test development • Marketing
  11. 11. ~150 Contributors
  12. 12. ~0 ♀ Contributors
  13. 13. Where are the women?
  14. 14. Hire a Female Kernel Engineer. Today.
  15. 15. Groupthink. — people are sheeple
  16. 16. Linux —“easy” choice
  17. 17. FUD. (Not Elmer.)
  18. 18. Drift & Divergence
  19. 19. Lots of private forks
  20. 20. less is more
  21. 21. less(1) is more(1)
  22. 22. less bloat is more (better)
  23. 23. less (compatible) is more (compatible)
  24. 24. less talking is more coding
  25. 25. illumos-core
  26. 26. illumos-core vision • focus on code • standards compliant - by default • less is more • self-hosting • self-testing • cross-platform • illumos coding standards (RTI ready by default)
  27. 27. Standards • SunOS 4.x (and 3.x) is truly ancient (32-bit SPARC only!) • XPG3 - this is really, really old • POSIX is really, really old (1988) • XPG4 - is also really old • SUS - aka XPG4v2 - also old • SUSv2 - UNIX98 • SUSv3 - POSIX.1 2001 • SUSv4 - POSIX.1 2008 - work in progress
  28. 28. Ancient & Useless Stuff • htable, gettable - last possible use was in 1990 (DNS anyone?!) • Wireless USB. DOA. • 16-bit PCMCIA. Seriously?!? • SunOS 4.x a.out support • kssl - no TLS support • NCA/NL7C - Global Zone only, actually slows all other traffic down • LMS (AMT/HECI) - Can you say security risk/pointless?
  29. 29. readdir_r(3c) case study • Standardized by POSIX in 1995 (IEEE Std. 1003.1c-1995) • Earlier Draft version (Draft 6) supported in Solaris 2.6 - 11 • By default • Solaris is the only common operating system to still do this
  30. 30. readdir_r(3c) case study • struct dirent *readdir_r(DIR *, struct dirent ***); • unless… • _POSIX_C_SOURCE - 0 >= 199506L or… • _POSIX_PTHREAD_SEMANTICS or… • _LP64 or… • _FILE_OFFSET_BITS != 32 • in which case… • int readdir_r(DIR *, struct dirent *, struct dirent **); • note that return value semantics are different!
  31. 31. readdir_r(3c) resolution • struct dirent *readdir_r(DIR *, struct dirent ***); • unless… • _POSIX_C_SOURCE - 0 >= 199506L or… • _POSIX_PTHREAD_SEMANTICS or… • _LP64 or… • _FILE_OFFSET_BITS == 32 or… • !_SUNOS_SOURCE • in which case… • int readdir_r(DIR *, struct dirent *, struct dirent **); • (note that you now get POSIX compliant by DEFAULT!)
  32. 32. accomplishments so far • less(1) is more(1) • uname & puname • fexecve(2), O_TTY_INIT, O_DIRECTORY • removed a lot of bloat (~200KLOC) • suppression and updates for POSIX 2008 symbols we already had (-D_XOPEN_SOURCE=700) • s/awk/nawk/ • no more dbus or hal dependencies • rich self tests for POSIX (and non-POSIX) interfaces (>3000 tests) • 85 separate bugs/features integrated (started Aug 14, approx 2 per day) • vi(1) is real vi, not vim(1)
  33. 33. uname(2) • uname -s == “illumos” • uname -r == 0.9.x (x == months since Aug 2010) • puname(1) utility • puname -S uname -s -r == “SunOS 5.11” • puname -S uname -v == “alternate-uname” • puname -U to restore • implemented as new flag in process uarea
  34. 34. uname breakage • 64-bit Studio (checks for SunOS > 5.7) • hald - fixed (in separate git repo), breaks X • config.guess (auto*) - can override in configure command line • pkgdepend - (fixed?) via terminatorlib/cwd.py • DTrace printf test (test checks uname == SunOS)
  35. 35. Remaining Compliance Work for C APIs • System Interfaces (POSIX.1-2008) • memory streams • dprintf (universe explodes…) • pthreads changes • C11 support • interfaces to improve security
  36. 36. Shell & Utilities Work • pax (not star, thank you very much) • modernize (slightly) awk • lots of minor updates (mv, cp, ls, etc.) • replace ksh93 with dash + libedit • Test suite development, Standard(s) trolling
  37. 37. Can I Help? YES! YOU CAN!
  38. 38. • Code & Documentation reviews • Testing • Help upstreaming • Code contributions (pull requests!) • http://bitbucket.org/gdamore/illumos-gate • “core” branch
  39. 39. Thank you!!

×