DrScheme in Space

This was initially written for my regular column in the Brown Computer Science departmental magazine, conduit!, for the Fall 2003 issue. I think it’s far too much fun to leave hidden in such an obscure place. The prose is unchanged since then (so some of the classification information may well be incorrect); only the marginal notes are new.

The sender’s name was in all-upper-case, and the subject line read, “Not exactly...”.

Spam.

But I’m glad I opened it anyway. “This is not exactly your normal query...”, the message body began. It was from an upstanding citizen at the NASA Johnson Space Center, asking for... the Export Control Classification Number (ECCN) for DrSchemeNow DrRacket., a Scheme programming environment I helped develop.

The what for what?!?

It transpires that a tasteful astronaut (name withheld to protect the innocent) had loaded DrScheme on his laptop for use during his free time in space.Turns out he was working through How to Design Programs. He was (a) going to be on the International Space Station (ISS) and (b) launching a hard drive image from Russia. The ISS is a multinational enterprise and Russia is, well, another country, so the act of sending software in both instances involves an export. Both, consequently, need an ECCN. (I wonder if there is some tacit assumption here that outer space, or at least the ISS, is a foreign land. I wonder if there isn’t some group squirreled away trying to determine the equivalent of nautical limits in space.)

The US government does a remarkably good job of publishing documents on the Web; anyone who’s had to deal with the IRS or the lucky few who’ve had to contend with the INS will grudgingly admit this. These are sometimes no more than OCR-scanned copies, but the scanning yields enough clarity that Google can find the documents. I can’t begin to imagine what this process must have been like ten years ago. (Probably a lot simpler: I’d have written off for an official document, then returned to my regularly scheduled work.)

Anyway, accessing prose is not the same as understanding it. The second paragraph of the first document I read began “The CCL is contained in Supplement No. 1 to part 774 of the EAR.”

It was going to be that kind of day.

I have some layman’s thoughts about such prose. It doesn’t look like natural language at all. I conjecture it’s because natural language is rife with anaphoric references. Letting context and a rich language of reference “do the talking” leads to higher communication bandwidth, but it’s hell on disjointed documents.... But this is beginning to read like one of Eugene’sThat would be natural-language processing maestro Eugene Charniak, who had a regular column in conduit! that was the inspiration for mine. articles, so I should stop this digression now.

The ECCN system is quite simple once you get the hang of it. Numerous artifacts, from nuclear to software, are given codes such as 14D993. These codes determine the range of permitted distribution and the licensing demands on those who wish to acquire them. Everything else is assigned the default code EAR99, sometimes designated NLR (No License Required). So it’s simply a matter of reading enough documentation, slotting your product, and finding a code. This is a bit like saying that feeding your pet octopus is simply a matter of pulling aside the arms, placing the food in the middle, then retracting your limb. Easily done, but you may lose an organ or two getting the hang of it.

Reading these documents was not without its rewards. I discovered, for instance, that EAR 740.13 (d) (3) (ii) (A) differs from EAR 774 Supplement No. 2 (2) (a), though they describe the same thing. The former document is dated later, yet leaves out a key provision included in the latter, the recognition that software may be sold electronically! Better still, I found that ECCN category 14D993 specifically restricts the export of “program” proof and validation “software” using mathematical and analytical techniques and designed or modified for “programs” having more than 500,000 “source code” instructions. Beware, all you verification researchers—don’t get too ambitious!

Having done my research, I determined that we fall under License Exception TSU (Technology and Software — Unrestricted), though it all gets a bit sketchy here because our software is not specifically sold. (The concept of free software doesn’t seem to be in the ECCN vocabulary. Cheap political crack omitted here.) This didn’t necessarily mean we were EAR99, and EAR99 is an ECCN, whereas TSU isn’t, and NASA had asked for an ECCN. Mustering great courage, I called the encouragingly named Outeach and Educational Services Division of the US Commerce Department. After only a few minutes, I was connected to a gruff counselor.

“Can I help you?”

“Ah, yes, I was hoping to get a quick clarification on an ECCN classification.”

(gruffer still) “Yes?”

(deep breath) “If I find that my product falls under License Exception TSU under part 774 of the EAR, can I assume it has the ECCN of EAR99?”

I believe I did this without inhaling.

These are the moments that test the mettle of great men. Like Major Major’s father, my counselor was made of stern stuff. He paused for just a moment, just long enough to accord respect to someone he clearly perceived to be a fellow numbers-and-policy wonk. And then, in a voice rich in cameraderie, he said, “You know, I’ve been trying to determine that for five years myself!”

Being excepted from a license was not the same as not requiring a license? In the logic of the US government, did the Law of the Excluded Middle not apply? What was the difference between the two?

Syria.

No, seriously. The difference really is Syria. TSU permits export to Syria, but EAR99 does not.

My counselor told me this with glee. Apparently I had hit on one of his favorite trivia questions, because, now really warming to the topic, he informed me that he had asked this very question of many of his colleagues. Some had incorrectly identified the two; others, quicker on the draw, had said that they were indeed different but had recommended the use of ECCN 4D994. As everyone knows — shucks, by this point even I knew — this was a contemptible response, because 4D994 permits the export of only specific software products. And so on.

Anyway, this story has a happy ending. We appear to meet EAR99. NASA Johnson has acknowledged receipt of our ECCN. I’ve been in touch with the fine astronaut. DrScheme will soon be happily beta-v-cs-reducing expressions in outer space.

Where has your programming language been today?