Saturday, March 23, 2013

Thank You

A good friend mentioned in passing the other day that opensolaris.org would finally be decommissioned tomorrow. I could not help but reflect on how much things have changed since Friday the 13th. Since that time, my work with Solaris has ceased almost entirely. Professionally (and personally) I've moved on to other areas of interest, though OpenSolaris remains a fond memory. The community's response still astonishes and humbles me - 50,000 page views was far more than I ever expected.

In a somewhat bizarre twist of fate, Erin and I relocated to the Bay Area a couple of months after our daughter, Elizabeth was born. We settled a few blocks away from the old Sun headquarters in Santa Clara. The Coraid offices are also quite literally in the shadow of the Oracle campus in Redwood Shores. I still chuckle at the irony of it all.

Elizabeth

I will forever be grateful for the opportunities the OpenSolaris project has provided for my family and me. For a too brief moment in time, I was able to work shoulder-to-shoulder with some of the most brilliant engineers in our field (and had a hell of a lot of fun doing it). You know who you are. Thank you.

A couple of weeks ago, Erin, Elizabeth, and I were walking home from the park when something caught my eye. It was a discarded Solaris 11 Live CD lying by the side of the road. I simply cannot think of a more fitting way to end this post.

Discarded...

Thursday, October 28, 2010

efe(7D) integrated into illumos

[stallion@titan]:/export/illumos-clone> hg outgoing -v
running ssh anonhg@hg.illumos.org "hg -R illumos-gate serve --stdio"
comparing with ssh://anonhg@hg.illumos.org/illumos-gate
searching for changes

changeset:   13220:0e9358627086
tag:         tip
user:        Steven Stallion 
date:        Sun Oct 24 01:34:25 2010 -0400

description:
        9 Provide an open source implementation of spwr(7D)
        Reviewed by: garrett@nexenta.com, richlowe@richlowe.net
        Approved by: garrett@nexenta.com

modified:
   usr/src/uts/common/Makefile.files
   usr/src/uts/common/Makefile.rules
   usr/src/uts/intel/Makefile.intel.shared
   usr/src/uts/intel/os/master
   usr/src/uts/sparc/Makefile.sparc.shared
added:
   usr/src/pkg/manifests/driver-network-efe.mf
   usr/src/uts/common/io/efe/THIRDPARTYLICENSE
   usr/src/uts/common/io/efe/THIRDPARTYLICENSE.descrip
   usr/src/uts/common/io/efe/efe.c
   usr/src/uts/common/io/efe/efe.h
   usr/src/uts/intel/efe/Makefile
   usr/src/uts/sparc/efe/Makefile
The final webrev can be found here.

Thursday, October 21, 2010

newsprint.vim: A (pleasant) monochromatic color scheme for Vim

I spend over 90% of my time sitting in an editor.

Having switched to a dark-on-light terminal scheme years ago I could never find a color scheme in which I could be productive using a light background, so I stuck with my ancient light-on-dark color scheme for console editing. The effect is actually quite jarring; I use a number of terminal sessions during the day for any number of tasks (including editing). Perhaps it's simply a sign of getting older, but I've found that switching rapidly between sessions can not only cause eyestrain, it also wastes time waiting for my eyes to adjust to a radically different background.

I created a simple color scheme that works well with dark-on-light displays. I drew some inspiration from the google color scheme (notably the use of underlining for language keywords). Rather than saturate the screen with color, I opted for a simpler scheme using a grayscale pallete with bolding and underlining for emphasis. This scheme should work equally well on both color and GUI terminals.

The color scheme can be found here. Simply download and place under $HOME/.vim/colors/. You can select the scheme by issuing: :colorscheme newsprint once in Vim.

Obligatory screenshot:


Overall, I'm pleased with the result. Moving between sessions is a smoother and faster experience. While this scheme probably isn't suitable for long-term editing, it's certainly better for quick edits made from the console.

Enjoy!

Friday, August 20, 2010

"Who forgot to pay the water bill?"

As mentioned by Garrett D'Amore yesterday, the "tap" has indeed been turned off; code pushes are no longer being made to the ONNV repository. For the first time in four years, I was greeted with the following:

[stallion@titan]:/export/onnv-clone> hg pull
pulling from ssh://anon@hg.opensolaris.org/hg/onnv/onnv-gate
searching for changes
no changes found

Friday, August 13, 2010

OpenSolaris is Dead.

What follows is an email sent internally to Oracle Solaris Engineers which describes Oracle's true intentions toward the OpenSolaris project and the future of Oracle Solaris.

This concludes over four years that I (and many other external contributors) have worked on the OpenSolaris project. This is a terrible sendoff for countless hours of work - for quality software which will now ship as an Oracle product that we (the original authors) can no longer obtain on an unrestricted basis.

I can only maintain that the software we worked on was for the betterment of all, not for any one company's bottom line. This is truly a perversion of the open source spirit.



Solaris Engineering,

Today we are announcing a set of decisions regarding the path to
Solaris 11, and answering key pending questions on open source, open
development, software and binary licenses, and how developers and
early adopters will be able to use Solaris 11 technology before its
release in 2011.

As you all know, the term “OpenSolaris” has been used colloquially to
refer to any or all of a collection of source code, a development
model, a web site, a logo, a binary release, a source license, a
community, and many other related things. So it’s taken a while to go
over each issue from an organizational and business perspective, and
align on the correct next step. Therefore, please take the time to
read all of the detail here carefully. We’ll discuss our strategy
first, and then the decisions and changes to our policies and
processes that implement that strategy.

Solaris Strategy
----------------------

Solaris is the #1 Enterprise Operating System. We have the leading
share of business applications on Solaris today, including both SPARC
and x64. We have more than twice the application base of AIX and HP-
UX combined. We have a brand that stands for innovation, quality,
security, and trust, built on our 20-year investment in Solaris
operating system engineering.

From a business perspective, the purpose of our investment in Solaris
engineering is to drive our overall server business, including both
SPARC and x64, and to drive business advantages resulting from
integration of multiple components in the Oracle portfolio. This
includes combining our servers with our storage, our servers with our
switches, Oracle applications with Solaris, and the effectiveness of
the service experience resulting from these combinations. All
together, Solaris drives aggregate business measured in many billions
of dollars, with significant growth potential.

We are increasing investment in Solaris, including hiring operating
system expertise from throughout the industry, as a sign of our
commitment to these goals. Solaris is not something we outsource to
others, it is not the assembly of someone else’s technology, and it is
not a sustaining-only product. We expect the top operating systems
engineers in the industry, i.e. all of you, to be creating and
delivering innovations that continue to make Solaris unique,
differentiated, and valuable to our customers, and a unique asset of
our business.

Solaris must stand alone as a best-of-breed technology for Oracle’s
enterprise customers. We want all of them to think “If this has to
work, then it runs on Solaris.” That’s the Solaris brand. That is
where our scalability to more than a few sockets of CPU and gigabytes
of DRAM matters. That is why we reliably deliver millions of IOPS of
storage, networking, and Infiniband. That is why we have unique
properties around file and data management, security and namespace
isolation, fault management, and observability. And we also want our
customers to know that Solaris is and continues to be a source of new
ideas and new technologies-- ones that simplify their business and
optimize their applications. That’s what made Solaris 10 the most
innovative operating system release ever. And that is the same focus
that will drive a new set of innovations in Solaris 11.

For Solaris to stand alone as the best-of-breed operating system in
Oracle’s complete and open portfolio, it must run well on other server
hardware and execute everyone’s applications, while delivering unique
optimizations for our hardware and our applications. That is the
central value proposition of Oracle’s complete, open, and integrated
strategy. And these are complementary and not contradictory goals
that we will achieve through proper design and engineering.

The growth opportunity for Solaris has never been greater. As one
example, Solaris is used by about 40% of Oracle’s enterprise
customers, which means we have a 60% growth opportunity in our top
customers alone. In absolute numbers, there are 130,000 Oracle
customers in North America alone who don’t use our servers and storage
yet, and a global customer base of 350,000 (the prior Sun base was
~35,000). That’s a huge opportunity we can go attack as a combined
company that will increase Solaris adoption and the overall Hardware
server revenue. Our success will also increase the amount of effort
ISVs exert optimizing their applications for Solaris.

We will continue to grow a vibrant developer and system administrator
community for Solaris. Delivery of binary releases, delivery of APIs
in source or binary form, delivery of open source code, delivery of
technical documentation, and engineering of upstream contributions to
common industry technologies (such as Apache, Perl, OFED, and many,
many others) will be part of that activity. But we will also make
specific decisions about why and when we do those things, following
two core principles: (1) We can’t do everything. The limiting factor
is our engineering bandwidth measured in people and time. So we have
to ensure our top priority is driving delivery of the #1 Enterprise
Operating System, Solaris 11, to grow our systems business; and (2) We
want the adoption of our technology and intellectual property to
accelerate our overall goals, yet not permit competitors to derive
business advantage (or FUD) from our innovations before we do.

We are using our investment in core Solaris innovation and engineering
to drive multiple businesses, through multiple product lines. This
already includes our Solaris operating system for Enterprise, and our
ZFS Storage product line, and will soon include other Oracle
products. This strategy is all about creating more value from a set
of common software investments: it makes everything you do more
valuable and used by more people worldwide. It also means you as an
individual engineer or manager have an even greater responsibility to
understand the broader business and technical contexts in which your
engineering is deployed.

Solaris Decisions
------------------------

We will continue to use the CDDL license statement in nearly all
Solaris source code files. We will not remove the CDDL from any files
in Solaris to which it already applies, and new source code files that
are created will follow the current policy regarding applying the CDDL
(simply, that usr/src files will have the CDDL, and the very small
minority of files in usr/closed might not have it). Use of other open
licenses in non-ON consolidations (e.g. GPL in the Desktop area) will
also continue. As before, requests to change the license associated
with source code are case-by-case decisions.

We will distribute updates to approved CDDL or other open source-
licensed code following full releases of our enterprise Solaris
operating system. In this manner, new technology innovations will
show up in our releases before anywhere else. We will no longer
distribute source code for the entirety of the Solaris operating
system in real-time while it is developed, on a nightly basis.

Anyone who is consuming Solaris code using the CDDL, whether in pieces
or as a part of the OpenSolaris source distribution or a derivative
thereof, would therefore be able to consume any updates we release at
that time, under the terms of the CDDL, LGPL, or whatever license
applies.

We will have a technology partner program to permit our industry
partners full access to the in-development Solaris source code through
the Oracle Technology Network (OTN). This will include both early
access to code and binaries, as well as contributions to us where that
is appropriate. All such partnerships will be evaluated on a case-by-
case basis, but certainly our core, existing technology partnerships,
such as the one with Intel, are examples of valued participation.

We will encourage and listen to any and all license requests for
Solaris technology, either in part or in whole. All such requests
will be evaluated on a case-by-case basis, but we believe there are
many complementary areas where new partnership opportunities exist to
expand use of our IP.

We will continue active open development, including upstream
contributions, in specific areas that accelerate our overall Solaris
goals. Examples include our activities around Gnome and X11, IPS
packaging, and our work to optimize ecosystems like Apache, OpenSSL,
and Perl on Solaris.

We will deliver technical design information, in the form of
documentation, design documents, and source code descriptions, through
our OTN presence for Solaris. We will no longer post advance
technical descriptions of every single ARC case by default, indicating
what technical innovations might be present in future Solaris
releases. We can at any time make a specific decision to post advance
technical information for any project, when it serves a particular
useful need to do so.

We will have a Solaris 11 binary distribution, called Solaris 11
Express, that will have a free developer RTU license, and an optional
support plan. Solaris 11 Express will debut by the end of this
calendar year, and we will issue updates to it, leading to the full
release of Solaris 11 in 2011.

All of Oracle’s efforts on binary distributions of Solaris technology
will be focused on Solaris 11. We will not release any other binary
distributions, such as nightly or bi-weekly builds of Solaris
binaries, or an OpenSolaris 2010.05 or later distribution. We will
determine a simple, cost-effective means of getting enterprise users
of prior OpenSolaris binary releases to migrate to S11 Express.

We will have a Solaris 11 Platinum Customer Program, including direct
engineering involvement and feedback, for customers using our Solaris
11 technology. We will be asking all of you to participate in this
endeavor, bringing with us the benefit of previous Sun Platinum
programs, while utilizing the much larger megaphone that is available
to us now as a combined company.

We look forward to everyone’s continued work on Solaris 11. Our goal
is simply to make it the best and most important release of Solaris
ever.

-Mike Shapiro, Bill Nesheim, Chris Armes

Thursday, August 5, 2010

In Athens!

As noted previously, I took a job working with Coraid, Inc. back in May. My family and I have finally completed relocating down to beautiful Athens, GA. We are all very excited to be part of the culture here and are looking forward to many happy years.

Wednesday, May 19, 2010

spwr(7D) is dead. Long live efe(7D)!

PSARC 2010/168 (EOF spwr) will officially remove support for SMC EtherPower II fast ethernet controllers from ON. Fortunately, the Emancipation project provides an alternative for users whom still require support for these devices.

The efe(7D) driver is a open source rewrite of the previously closed spwr(7D) driver. It supports both GLDv3 and Project Brussels interfaces and supports full 802.1Q VLANs and link aggregation. The driver supports both SPARC and x86.

The current version of the driver requires at least snv_134. Once the 2010.0x release ships and development builds resume, a new driver release will be made to support the committed GLDv3 interfaces putback in snv_136 and IPS.

OSOLefe-20100517-sparc.tar.bz2
OSOLefe-20100517-i386.tar.bz2

The source for the driver may be found in the Emancipation driver-gate:
http://src.opensolaris.org/source/xref/emancipation/driver-gate/efe/

Enjoy!

Saturday, May 8, 2010

It's Official...

About a month ago I accepted a position at Coraid, Inc. as a Solaris kernel developer. My primary focus will be driver development for the company's AoE-based storage HBAs and other related hardware.

After saying my goodbyes in St. Louis last week, I drove down to Athens, GA for two weeks of orientation and team building. I have to say, this last week at Coraid has been a gas - the engineering team here is astounding and leadership goes a long way toward making this a friendly and productive environment in which to work.

Everyone here seems pretty keen on what Solaris/OpenSolaris has to offer (particularly with respect to storage) - I am definitely looking forward to the road ahead.

Who knows? Maybe OpenSolaris will get a little AoE lovin' after all...

Tuesday, November 17, 2009

Sunday, November 1, 2009

Headless Sun xVM VirtualBox guests via SMF

I finally had some extra time this weekend to sit down and finish an SMF manifest to support headless VirtualBox guests. Overall, I am quite pleased with the result:

The source for the service manifest and method script is available here. These files should be copied to /var/svc/manifest/application/virtualbox/ and /lib/svc/method/, respectively.

I have also created an IPS package for OpenSolaris users; if you are interested in installing the package, you will need to add my private IPS repository first:

% pfexec pkg set-authority -O http://arf.ubound.org/pkg/ arf.ubound.org
Once the repository has been added, you can then install the virtualbox-headless package:
% pfexec pkg install virtualbox-headless
Once the files are in place, you may need to import the manifest manually; since there are no default instances, svc:/system/manifest-import:default has a tendency to skip the manifest during a bulk import (this issue seems to affect the IPS package as well):
% pfexec svccfg import /var/svc/manifest/application/virtualbox/virtualbox-headless.xml
Once you have imported the manifest, it is time to add each guest you wish to manage. I have written the manifest such that a guest is identified by the name of the instance itself. For example, if I wanted to add a guest named qnx641, I would issue the following:
% pfexec svccfg -s virtualbox/headless add qnx641
You may then enable the instance via svcadm(1M):
% pfexec svcadm enable virtualbox/headless:qnx641
Two properties are provided to control the start and stop behavior of each instance:
  1. The vbox/start_type property corresponds to the --type argument passed to VBoxManage startvm; by default, it is set to headless. Possible values are: gui, sdl, vrdp, and headless, however only the last two really make any sense when used with SMF.

  2. The vbox/stop_method property corresponds to the argument passed to VBoxManage controlvm which is responsible for stopping the instance; by default it is set to savestate. Possible values are: pause, resume, reset, poweroff, savestate, acpipowerbutton, and acpisleepbutton
For those unfamiliar with SMF, these properties may be set by using this pattern:
% pfexec svccfg -s virtualbox/headless:qnx641
svc:/application/virtualbox/headless:qnx641> addpg vbox application
svc:/application/virtualbox/headless:qnx641> setprop vbox/stop_method = astring: "poweroff"
^D
Since this is a "wait" model service, it does not properly support a user shutting down the guest outside of svcadm(1M) invocations; the service will continue to report its status as online. In this case, a simple disable or restart will resolve the problem.

Enjoy!