Sunday, May 3, 2015

Three Tales of Second System Syndrome

In the last decade, three major scripting languages embarked on project to produce a major revision to each language: Perl 6, Python 3, and PHP 6. Despite surface similarities, such as the problem of Unicode support, each language ended up on a radically different track.

With the Perl 6.0.0 release officially coming this year, it's a good time to reflect on how we got to this point, and to start thinking about what comes after the release.


So -- and I can't believe I'm writing this -- let's see if we can learn something from PHP. Andi Gutmans, who is now the CEO of Zend Technologies, gave an interview back in February 2008. In it, he said,
So we are anticipating a long rollout cycle for PHP 6, and we did not want to take the same route that the Perl project did, with project contributors still working on Perl 6 I think six years later. People make fun of Microsoft, but take a look at Perl 6. . . .

To which Andy Lester of PerlBuzz replied:
Sure, PHP 6 may have a shorter release cycle than Perl 6 has, but at the end of it all, we'll have Perl 6, and you'll still have PHP.

Just sayin'.
So how did those predictions work out? Well, after a little over six years of development, we discovered that we were never going to see a PHP 6 at all. Having seen how long Perl 6 had taken, and how long PHP 6 was taking, the number 6 is associated with failure. So they cancelled PHP 6 and voted to change the name to PHP 7. Problem solved! No, really, this is some of the actual reasoning given by people on the 6 to 7 RFC. (Someone should tell the ES6 folks before the curse strikes our browsers!)

But the main intent of the renumbering was to justify a much reduced scope of new features for the next major version of PHP. PHP 7 is slated to add:
  • "Huge Performance Improvements" to the Zend engine (HHVM already pretty speedy)
  • JIT to the Zend engine (but already available in HHVM)
  • Abstract Syntax Tree (AST) generation
  • Asynchronous IO and functions
  • Standalone Multi-threading Web Server (HHVM)
    • Which is cool if you want a language to provide its own server, I guess
EDIT: People both here and on Hacker News have pointed out that this is the above feature list was from a bad source, and that much of PHP 6 was incorporated into 5.3.  See the better summary of PHP 7 features, including generator improvements, and new operators like ??.  However, much of the same analysis still applies -- the end result was very few backwards incompatible changes, not the major revision promised with major Unicode improvements.

Perl 6

Meanwhile Perl 6, which has taken 15 years to get to the 6.0.0 release slated for this Christmas.  I'm sure that there were some embarrassing quotes about when it's going to be done, but that was so long ago, I'll just link to this post forecasting that Perl 6 will be ready for production in 2027.

As it now stands, Perl 6 comes with this set of new features:
  • A real type system (not just type hints as in PHP) everywhere
    • The ability to continue ignoring types most short scripting code
    • The ability to use static type checks to catch errors
    • Native types (C strings, unsigned ints, etc.) unlock new performance potential
    • Meta-object programming is available
  • A sane native function calling interface
  • Rakudo Perl 6 runs on multiple virtual machines (JVM, MoarVM), with more backends planned (Javascript)
    • Can compile P6 to bytecode or an AST
    • Takes advantage of VM's JIT
  • Complete syntax refactoring
    • Fully backwards compatible with the use of Inline::Perl5
    • Consistent syntax throughout
  • Native Unicode handling, with NFG (grapheme) strings by default
  • Hygienic macros
    • As I said above, AST
  • Regexes have evolved to Grammars, a first class language
    • PCRE are no longer Perl-compatible (except in Perl 5 mode), but are instead much easier to read
  • Easy to use concurrency
    • Some operators will autothread
    • Junction types for set operations
  • Module versioning to ensure that even if a module completely changes its API, your code will not break. If you declare a version, of course.
Honestly, there are a whole lot more of these features. This even excludes things that have already made back into the Perl 5 core, like subroutine signatures and smartmatching. And these are all things that are working today.

The eerie thing is that Andy's flippant prediction came true. At the end of it, we have Perl 6, and they still have the same old PHP. Let me repeat that: we have Perl 6. It works, it will get a major release this year, and it is going to come with many more features than originally promised.

Still, Perl 6 has had its share of doubters. Some people proposed, actually seriously, that Perl 5 should leapfrog ahead to Perl 7 with the next version, and Perl 6 can go on calling itself that if it wants. Right. While this idea was rejected by the general Perl community, PHP actually skipped a version a year later. I guess it's another example of PHP stealing the worst ideas from Perl.

Python 3

The Python group, on the other hand, has tried to stay mostly on the side of sanity. Python 3 introduced a much smaller set of breaking changes, in order to keep updates rolling out. It was introduced, well, six years ago in early 2009.

New features of Python 3 included:
  • Sane Unicode handling
    • A breaking change that allowed all of the other breaking changes to happen
  • Various name changes for style consistency
  • Automatically loading C modules when available.
  • Refactor of exceptions
  • Support for ancient OSes dropped
  • Old functions removed, along with generally bad APIs
  • Statement form print removed in favor of function print(), ostensibly to make a consistent API but really just to mess with people.
So how's that working out? The latest version of python preinstalled on my fully updated MacBook is 2.7.6. At least Ubuntu gives me 3.4.0 — Apple is well known to be crap at updating OSS. But you'd think someone at Apple would have cared in six years would have cared enough to throw python3 in the XCode monster download; after all, Python does not have the kiss of death known as the GPLv3 license.

The flip side of availability is developer adoption; this story isn't much better. If you look at statistics from a last year and this month, Python 3 adoption rates are abysmal. Hell, even 23% of people inside the Python community still think Python 3 was a mistake. Despite obvious improvements, it's still considered a tough sell.

Second Deployment Syndrome

So the takeaway from all of this is that Second System Syndrome is a real problem, but not the only problem. Successfully executing major revisions to a language is difficult, but getting widespread adoption is just as difficult with breaking changes. Second Deployment Syndrome can be just as hard to face as making the new system in the first place.

So we have three software communities that took radically different approaches to building a second system. PHP is a complete zoo of awful design, begging to be tamed. Yet the PHP community effectively voted to give up, and only offer incremental change that doesn't address PHP 6's number one issue of Unicode support. The Python folks, bless their hearts, made a smaller set of achievable changes, implemented it in 3 years, and shipped the damn thing. And despite the truly useful improvements, only a few people came.

Perl decided to stick to its vision of "break all the things once", and it's taken 15 long years. That's almost as long as the HTML 5 spec. Over this time, the design has continued to evolve, incorporating more modern needs like easily multithreaded code that would have otherwise been missed. Although the complaint of "no final spec" is common, it has been learned the hard way that the spec is the very last thing that should be finalized.

It's easy to naively say that 15 years is a ridiculous amount of development time, but it's obvious from looking at second systems for the other scripting languages, Perl 6 was never going to complete such a major transition in less than a decade. What's still unclear is whether this transition is going to work out for Perl.

Nearly everyone who tries Perl 6 from a Perl 5 background likes it immensely, which is usually followed up by a "can this not be so slow?" Optimization is still getting there, just not prematurely. In general, reception has been a net positive. And unlike the breaking changes introduced in the other languages, Inline::Perl5 allows multiple versions of Perl to coexist in the same program.

Will this be enough? It's too early to tell. Perl 5 is going to last another 5 years at the minimum, if not forever, munging text output by a shell script written by a programmer from generations ago. Perl 6 will have an uphill battle with Perl 5 for ubiquity, legacy code, and language familiarity.

Adoption rate is the next big challenge facing Perl 6. There is a very real possibility that six years from now, Perl 5 will still be the dominant form of an ever shrinking faction of Perl users. After all, Python might be in the same boat right now. Perl needs to reverse an already existing downward trend, at least partially brought on by how frakking long Perl 6 took in the first place.

The best advice I can see for ensuring Perl 6's success is for Perl developers to start writing code in Perl 6. I mean now; it's definitely stable enough. Every module available within a year of release is going to be a major argument for people to try the new version. Getting Shit Done can win a lot of arguments.

After that, it's going to be a tough slog. Is it deployed enough places to distribute code in? Is there enough code written in it to deploy to more places? Package managers like apt and Homebrew are going to help with bootstrapping the user base, but to win Perl 6 going to have to get that killer app.

So for now, it's a giant gamble. In poker terms, Python 3 called, PHP 6 folded, and Perl 6 went all-in. It just might be possible that Perl 6's crazy long development process can produce the best-adopted second system around, if people decide that the overwhelming improvements are worth the hassle of upgrading.

I'll let you know how that went in six years.

Sunday, February 9, 2014

Troping Considered Harmful

My wiki sucks.  Actually, it isn't just All The Tropes; TV Tropes sucks too.

I guess it shouldn't come as a surprise that I'm open to criticism about TV Tropes, given that I founded my own fork of that wiki.  Well, not *mine* per se, but never mind that now.  But given that I'd bother to fork the wiki, I must be a hardcore troper, right?

Well, not really.  Mainly I just wanted to have a website to talk about fiction without worrying about crazy censorship.

What is it about?

But there are legitimate criticisms to be made about the nature of both All The Tropes, and its parent wiki, TV Tropes.  For some reason, my eyes were drawn to the Encyclopedia Dramatica page on TV Tropes.  And it's kind of depressing.  You should read it, though it's highly NSFW -- mostly thanks to some Trope-tan Rule 34.

In particular, I was looking at the sections titled "Article Style" and "Why it sucks".   Here's this gem:
This in a site supposed to scrutinize fiction's impact on culture. Or is it? What is TV tropes about? What is it about? What is IS IT about? WHAT IS IT ABOUT? WHAT IS IT ABOOOOUUUUUUT?  Tv tropes isn't governed by any single vision. Instead, it is about thousands of competing plans all trying to spread their own brand of faggotry over the whole site.

Okay, that's maybe not the best organized argument, but there is a major point there.  The TVT front page says this:
What is this about? This wiki is a catalog of the tricks of the trade for writing fiction.
Okay, that's an idea.  But do trope pages really talk about writing fiction?  Or how to use a trope in writing?  Or any pages about the writing process at all?  I guess if we take it as a literal "catalog", it makes some sense -- like ordering from Amazon.  One-click™ checkout for a FourStarBadass and a BrattyHalfPint.

But what about all of the random forum crap and CMoA pages?  The TVT home page goes on for three paragraphs about what the website is not, which is entirely unuseful.  They are not a stuffy encyclopedia or a wiki for bashing things.  They are also not a rhyme for "orange" or the goddamn Batman, either.

All of this criticism applies to my own wiki too, since it comes from the same source.  And as part of restarting the wiki, I have to rewrite all of the policy pages, ranging from "we have very few rules" to huge documents of rules to inline comments stating that if you add an specific example to a page, you will be permabanned.  It makes sense if you know the history of the site, but the movie Eraserhead also made the same kind of sense to me.  That disjointed, "ramblings of a madman" sort of sense.

So task number one was to restore sanity to the rules, and that's still in process (because my wiki sucks, natch).  But it also comes down to figuring out what the we want to do with the new wiki.  Anyway, Topozan started this really great thread on the forums: What can ATT do to distinguish itself from TVT?

In that thread, we throw around ideas like more analysis, more recaps, awards and userboxes (for free!).  I mean, wow, all we have to do is take the TV Tropes website, and then set it Up to Eleven!  I think I'm one of the worst offenders on that count. But then, Topozan offers this:
One of the complaints I hear about tvtropes is that it's too focused on listing things rather than analysis. I'm not really sure how easy it would be to change that, though.
So um, what is this site about?  What is it about?  Really.  In my mind, All The Tropes is a P3 wiki (which is entirely different from the P5 wiki that TVT has become).  The very first wiki, The Portland Pattern Repository, is about programming.  More specifically, it is about 3 P's: the People, Projects, and Patterns of programming.  In tropespeak, this is the same as Creators, Works, and Tropes -- which is incidentally what the vast majority of pages are about.

Looking at the PPR wiki is useful, because they solved a lot of the common issues of wikis over a decade ago.  And if troping wikis are the same sort as Ward's Wiki, then things are really off-balance.  The PPR is, in it's own terms, a Content Creation Wiki ("analysis").  TVT and ATT are, in their current state, Content Classification Wikis ("listing").  The policy of suppression on Natter at TVT proves the rule, as Thread Mode is at the heart of collaborative content creation.  I'll address each of these points in turn.

Twenty Thousand Tropes

For being a site about story telling, why the heck do people want to put so much effort into breaking stories down into a collection of tiny bits?  Heck, this image that makes the case that TVT users think stories can be put together like a collection of LEGO blocks.  And helpfully it notes that Tropes come in 20,000 shapes.  Wow, twenty kilotropes.

Now I sure as hell can't remember Twenty Thousand Tropes under the Sun, or under any other object for that matter.  This is both good and bad, because it leads to the addictive nature that allows our readers and tropers to lose hours of their life a time just reading one more page.

So is that the vision, the "catalog of tropes"? Are the tropes wikis a listing of the dissected remains of creative works, mercilessly hunted down in the name of harvesting tropes?  I'm not far enough down the spectrum to enjoy that kind of deconstruction.

Not to mention that a good portion of these "tropes" aren't even patterns at all, but simple indices, or variants of other tropes.  Everything must be broken down into its smallest element.  And like the scientists at the LHC are doing, the drive to subdivide every atom ever smaller is going to create a black hole and swallow the entire wiki.

TV Tropes thinks it is doing serious analysis of works, but the Analysis namespace is virtually empty.  And by empty I mean, "every subpage fits on one page", which is amazing considering how trope pages get so large they routinely break the wiki.  But what TVT and ATT look like to me is a bunch of lists.

Some people like lists.  Lists are useful.  But lists are awful at getting to the soul of a creative process.  Tropes that are useful for analyzing a work's depth and meaning, like Central Theme, have less than 100 wicks.  It turns out that people rarely think the single most important point of a work is worth troping.  Instead, we have tropers noting the subtle difference between Ojou Curls and Royal Ringlets.

No Talking in the Theater!

TV Tropes likes to discribe themselves as a "buttload more informal" than Wikipedia, which they enforce by threatening to emit a buttload of bans.  Page comments routinely note tropers will be for adding specific examples in the page comments.  Or they can be banned for any form of negativity on a page.  Or questioning an administrator, that's a favorite.

However, TV Tropes started from an entirely different place.  It began as a place for a few fans to discuss Buffy and all of the cool things that Joss was doing.  Eventually, more people showed up, and the site was a chaotic place of kudzu growth.  Many got confused, and discord arrived for the first time with the cutting of the Fetish Fuel; and lo did the renaming of Nakama come to pass.  And then with the Second Google Incident, in which works were considered too uncool for Google Ads, the bureaucracy of the 5P Censorship Panel arrived.  For those of you who are Discordians, I don't need to tell you what the stage after bureaucracy is.

A lot of the distrust of TV Tropes started back in 2010, where we got the all the "TV Tropes is dead to me" type of discussions.  Infinitezenith recounts the tales of the One-Week War on his blog, right below a pic of Nagisa and Azu-nyan.  There are a many themes woven into his history, but the main point is that the repeated cutting of the most creative content has driven away the best users, and left behind only those who are convinced they are the doing things the right way with herp-derp posts.

Most of those problems stem from two policies: the "no negativity" rule, and the purging of creative content.   But enough about how TVT sucks.  I want to talk about how All The Tropes sucks.  We obviously inherited this crappy wiki content, because starting from scratch sounds entirely non-awesome.  With the current content base, we just don't have enough content that encourages creative growth of the wiki.

TVT has an active policy of suppressing Thread Mode, to the extent of adding a Natter-fy button on every page history page.  You too can send a friendly note to another user as to why their edit sucked with a form letter.  So instead of engaging in community building, the stock of tropers was reduced to the people who hold the party-line, Happiness is Mandatory opinions.  And we're left with a bunch of non-users who think that troping is just parroting the same memes over and over again.

Critics Missing the Point

Naturally, there are a ton of post out there saying that troping wikis suck.  While that is 100% correct, they then go on to state wrong reasons for the suckage.

The worst offender here are the Something Awful forums, who like to point out every pedo troper out there.  I'd like to note that in some cultures... no fuck that.  Look, the Internet is full of sick fucks, and every website has their share.  A wiki is a commons, like a public park.  Have you ever passed a dude off his meds in the park?  I have. Every major wiki has those guys too, but at the very least we don't have to deal with it in person.

Sarah published a trilogy of blog posts: The first argues that incompetent leadership led to cutting parts without sufficient community buy-in, the second post notes that censorship applies on TV Tropes mainly applies to pages that the core group doesn't like.  The third is a blistering critique of simply bizarre moral relativism from the TVT staff, and ends with:
There’s no fix­ing TV Tropes, so just let it die or shrivel into irrelevancy.
That's cool and all, but it's not helping.  Faith without works is dead.

Moving on to the Encyclopedia Dramatica analysis, mentioned above, I'll note it has few flaws of its own.  First of all, everyone pushing for their own point of view -- that's how a bazaar is supposed to work.  Wikis aren't cathedrals.  But that doesn't mean that there should be no plan, either.  Linus has no problem telling you how Linux should be.  Even though Linus, Eddie, and Fighteer share the same values of management by perkele, the TVT model of leadership is almost entirely reactive.  At least I never saw any proactive planning.

Me and My Nakama

The other half of the criticism from ED is even more bullshit, though.  More complaining about names of tropes.  Yes, I do get that it's a charlie-foxtrot of jargon, but it's not like these things have established names from "real" literary critics.  Instead we got complaints, which in turn lead to renames like "Inspector Zenigata" to "Sympathetic Inspector Antagonist" -- the first one is animu fanthink, and the second is a blandtastic word amalgamation that only a committee could come up with.

Yeah, jargon sucks, but after years in college learning about geostrophic wind, Rossby waves, the PDO, dBZ, the Second Indirect Effect, and hook echoes, I think everyone can stand to deal with the jargon of whatever field they're interested in.

The time that this issue came to a head was with the Nakama page, which was evenutally renamed True Companions.  The discussion happened twice, and was full of stupidity on every side.  Tropers suggested exchanging "nakama" (a Japanese loanword that doesn't mean the same thing to native speakers) to "coterie" (a French loanword that doesn't mean the same thing to native speakers).  Nakama supporters talked about how important their word was in the anime community.

And then, when it was all said and done, virtually every link was changed to the new name.  Because language, obviously, is a winner-take-all game. *facepalm*  So here we have the "writer's toolbox" website, where we are limited to using only one way of expressing a concept.  I don't think that there is any question that this is harmful to would-be writers.

Harm, Foul

This essay is titled "Troping Considered Harmful", after the computer science trope pattern, $thing Considered Harmful.  But I really think that a lot of things tropers do are in fact harmful, both for themselves and for readers.

The emphasis on listing and content classification creates the impression that simply by stringing a bunch of tropes together, you get a valid story.  There are quite a few bad fanfics that are based on this problem.  Encouraging bad storytelling is causing harm.

The long-term suppression of Natter has suppressed creative views and alternate opinions.  And because of this, many creative writers have left troping for greener pastures.  This in turn leaves behind a subset of tropers, who are growing more and more homogenous as creative works grow more diverse.  And we all know what happens to populations without enough diversity in changing environments

Finally, dissent has been enthusiastically quashed, leading to troping being a game played by a small club of folks with similar views.  Tropes are forced into the One Name to Rule Them All.  Examples with multiple opinions are removed -- here NPOV stands for "No Point of View".  This is not healthy for the people who are tropers, nor for the writers who use this as a toolbox.  They are left in a culture that thinks troping is serious and important, but is ultimately creates shallow and vacuous analysis.  This is the user base that All The Tropes is forced to recruit from.

That's not even mentioning the probably-illegal copyright stuff going on at TV Tropes, which is a major harm to the commons.  Or the fact that the TVT staff claims ownership of its users work, both morally and legally -- this is not a good way to build a healthy creative community.

But fixing this -- that's going to be the hard part.

What is IS IT about?

The thing is, most critiques don't realize that the problems of the troping wikis aren't about specific issues, but lie at their very core.  There is no clear purpose, just a sprawling mass of pages that periodically got hit by delete sprees in order to maximally piss off users.  I'm fairly sure that this is the underlying cause of most of the problems I've mentioned here.

If we had a clear purpose, we wouldn't go through the periodic ungoodthink purges.  We could offer more help to creative writers.  We could have a place to screw around and have fun; why not?

But coming up with a purpose is actually a hard task.  It took three horrible years before Abraham Lincoln finally spelled out the purpose of the American Civil War in the Gettysburg Address.  I took six months to write a purpose statement for my university student government (obviously a task of equal import).

Fast Eddie is a leader without vision, which is about the worst thing I can say about a leader.  (Except maybe, "He killed 6 million Jews.") But I don't know what the vision should be for All the Tropes, either.  I wish I did.  Maybe I'm as bad as Eddie.

For now, all I can say is what I want All The Tropes to be.  I want it to be a writing resource.  I want it to be a place where fen can collect information on their respective fandoms.  I want to offer real lit crit, not just a bunch of fucking lists.  But I want there to be lists too.  And I want it to be fun to read and write.  I want it to be defined based on things we are, not things we're not.

And most of all, I want it to spur more creative work.  Good storytelling is more than the sum of its parts.  Right now, ATT and TVT are less than the sum of their parts.

Wednesday, January 1, 2014

First Sunrise 2014

This is the second entry in my series on watching the first sunrise of the year, which is known as Hatsuhi no De (初日の出, "first day's rising"), or simply hatsuhiLast year, I tried out the ritual just as kind of a curiosity, but I thought it might be interesting to repeat this year as well.  And I think I just may have learned something new.

Being a habitual night owl, I woke up this morning to the sound of the alarm on my new iPhone.  Last year, I used an old, original model iPhone, but my new job bought me a shiny new gold smartphone as part of the hiring package.  This might seem like bragging, but it's actually an important part of the story.

I pulled on some warm clothes, I had set aside last night, went outside, and scrambled once again up the ladder unto the roof.  Unlike last year, this New Year's was a beautiful day, with a clear blue sky and nothing but the faintest wisps of cirriform clouds draped over the horizon.  The weak Santa Ana winds of the past week had done their job, making me feel quite comfortable, even on the cold black roof.

I looked to the south first, and paused to recognize that the giant ficus tree I mentioned last year is truly gone.  A bowl of green tilted towards the afternoon sun, it had stood nearly six stories tall.  The Friday before Christmas, a crew came and trimmed the tree down to a mere Mohawk-cut of leaves; they returned the following Monday to finish the job, working into the evening to remove even the stump.  All that effort from sixty years of growth, gone in mere days, shredded into tiny chunks.

And in the place of the giant tree, there was a void.  It revealed small houses, small cars, and the tiniest bit more ocean view -- but mostly, empty sky.  The crows that had been my companions the first time remained distant, their home destroyed by the saw.  My closest companion this year was a lone pigeon, but he seemed interested in neither me nor the sunrise, and soon flapped away.

The world, however, was still coming alive.  I could hear plenty of crows' calls and finches' tweets all around.  And the first few people started walking past, into the calm morning dawn.  However, it was still quiet at my neighbor's, where the remains of last night's party littered the concrete-capped courtyard.

Another neighbor had a mural painted on his backyard fence, and from this angle I could see the edge of the blue sky and verdant hills in the image.  This couldn't be a bigger contrast to the actual hills to the north, which remain a stubborn, unseasonable brown, the result of three years of drought.

Part of the hills were masked by brand-new, six-story structure of steel beams, with white work lights glowing dimly on four of the floors.  The uppermost beam bears an American flag and a rather beaten-up Christmas tree, while another beam proudly proclaims in spray-painted letters, "HAPPY BIRTHDAY BABY OWEN".

The building is still new enough that I can see through to the brown hillside behind, but I know that this can't last.  Last year, the space was nothing but empty air; this year it is a bustling construction zone.  Next year, it will be a new wing of a hospital.  And every day will bring new stories to the building, of illnesses treated, lives saved, and lives lost.  What was empty space will become a place where people get a new start on life, or will have to grieve for their loved ones.

It is not that place yet.  But as I took my first look around in the morning twilight, I couldn't help but be struck by how different things looked.  Here I was, standing on the same roof in the same place, exactly one year ago, but the world around had changed.  And in my own pocket was an iPhone, a token showing how much I had changed too.  Brent the NEET had been transformed into Brent the Salaryman.  And just like that hospital, I would continue to change.

Even nature itself never stops changing -- the hills behind the hospital began to pick up patches of light and shadow.  The sun was coming up, for real this time.

Out of the northwest, a jet passed directly over my head (though I didn't notice the extra weight on my head).  And in its wake, it left a lone contrail, a single straight line clear across the entire sky.  And as the plane flew into the southwest, the Sun just began to peek over the mountains, with the first direct rays filtering through a star pine.

And as the Sun rose to assume its full sphere, I let out a little cry of joy.  I had seen the first sunrise this time!  I had made it to this point in time and space once again, and there's something beautiful about that.

I lingered a little longer, looking at the world bisected by the contrail.  The lost giant tree and long shadows lingered to the southwest; the new hospital, drought-parched hills, and the rising sun lied in the northeast hemisphere.  And here I was in the middle of it, my world divided in twain at the new year.

It was clear I had only one way to go.  And that was back towards the "past", because I sure as hell wasn't going to get off the roof without a ladder.

Just as before, I crawled back into bed, and began to ponder what I had seen.  Now, I finally get the point of staying up this early to see the first morning sun. I saw a reflection of Japanese concept of mono no aware (物の哀れ), the awareness of the impermanence of things.  Sometimes, it's important to reflect on past and how things are always changing, and this ritual is but one way.

Some changes are good, some are bad, but we must go on.  The tree is lost, but the crows of last year, Phobos and Deimos, have hopefully found a new home.  I've lost much of my free time, but found an excellent job.  And somewhere out there, eventually, Baby Owen is going to have the time of his life.

Tuesday, December 31, 2013

First Sunrise 2013

Last year, I managed to wake myself up early enough to see the first sunrise of the year , because I managed to convince myself that it was "research" for writing my fanfic.  This is a Japanese custom known as Hatsuhi (初日 - literally "first day"), where people will go outside, often together, to catch the first rays of light of the new year.  I didn't have a blog last year to share this on, but I did write an account in an email to a friend.

If you did watch the Rose Parade [in 2013], you may have noticed that it was not particularly sunny, but the weather wasn't bad -- just a broken altostratus deck.  So there was a good chance that I would see new sun as it shed the first light on the new year.

I woke up at around 6:50, and threw on a flannel shirt over my flannel pajamas. When I first woke up, the sky was still dark enough that I could see a couple of planets, but dark clouds obscured most everything but the bright gibbous moon.  I got out a ladder and set it up against the house -- the lightest part of the sky was behind the orange tree, so I had to climb up to get a better view.

The black shingle of the roof was cold to the touch, but the wind was calm, and I still warm from bed.  I ambled up the the apex of the garage, so as not to wake anyone up, and turned towards the eastern sky.  There were still a lot of trees -- more than I had thought there were in my neighborhood -- but it was obvious from the clouds that I wasn't going to see sunrise directly.  The appointed time, 7:03, came and went, with only a slight brightening of the eastern sky.  Of course, I thought -- the sun's gotta rise above the Santa Monica Mountains.  I did a quick calculation: 3° above the horizon is about 10 minutes -- and settled down to wait.

A pair of crows joined me on a nearby power line, staring eastward too.  The sky started to brighten as the sunlight filtered to the bottom of the clouds, and suddenly the gloomy sky was replaced with a warm glow.  Everything started to come alive, and the finches started singing their calls, telling all of the other birds, "Hark, awaken, for a new day has come, everyone be excited.  I'm going to tweet to everyone I know, Happy New Year!  Hey everyone, wake up!"  And then of course, they stopped, because everyone knows only 140 characters can fit into a tweet.

The crows, whom by this point I had nicknamed Phobos and Deimos, awaited the sunrise.  And then, finally, the bottom of the clouds at the horizon was lined with a golden glow.  And, that was it.  Phobos cawed to Deimos, "Huh, is that it?"  They looked on for a moment more, before the reply came from Deimos, "Yeah, I guess that's all it's gonna be."  Some crows in the large ficus behind us called out, and my crow friends departed to join their friends for the day.

But, I had gotten up especially for this, so I was undeterred.  It looked like a break in the clouds was up a little bit further, and I was definitely going to catch the first rays of sun.  A man passed by, walking a dog, disturbing the canine living next door.  I took the chance to look at the hills, and the sky, and the strip of ocean to the south.  Things really do look different from up high, so I took in the view of the house's roofs as a pair of house finches zoomed by me.

And then, ten minutes later, the sun finally broke through the clouds -- well -- partially.  It was still obscured by the clouds, so I couldn't see the golden disk.  But I saw a bright enough glow to etch the afterimage into my eyes.  I blinked, and the image of the sun's light through the clouds formed a shape that looked exactly like this: ^_^   The sun had smiled upon my weeaboo endeavor, and blessed me with an Asian smiley for the new year.  And with that, I accepted the blessing and headed back down to a warm bed.

Wednesday, December 18, 2013

The Edge of the Creative Commons

As you may or may not be aware, last year I left TV Tropes (TVT) on unfriendly terms.  I may have been banned, but the feeling was certainly mutual.  I felt that the TV Tropes policy on keeping things "family friendly" had gone to a ludicrous extreme, eliminating academic discussion of things that made administrators and advertisers uncomfortable.  I was not alone in leaving TVT.  I was banned for noting that their "panel of people who determine what content is appropriate" is in fact a "Censorship Panel" -- but others just saw the way that the wind was blowing and left.

When I left, I wanted to leave open the possibility of forking the project, so I did a low-speed crawl of the website, that gathered up source pages, and did under 200,000 requests over the course of seven days.  I hadn't really planned on running a wiki, but I wanted to gather content before it was all censored and/or deleted.

At that time, the wiki had a message in the footer:

This wiki is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.
That was before I told a forum that I had done a siterip.  Fearing that I might use this data to fork the wiki, the TV Tropes website unilaterally changed it's license to the CC-BY-NC-SA 3.0, adding the NonCommercial clause to the license.  Note that these are not compatible licenses -- CC-BY-SA derivatives must be CC-BY-SA licensed; CC-BY-NC-SA derivatives must be CC-BY-NC-SA licensed.  They never asked the wiki editor's consent to make the change.  This happened in July of 2012. 

I don't believe that this move was, in fact, legal.  The barrier to editing, the "Getting Known" page, was, in its entirety:
Being known on the wiki means that the software is aware of your wiki handle (user name). It reserves the use of your handle for you, and provides some services to known people that are not available to completely anonymous folks. Posting and editing are reserved for people 13 years of age or older. By posting or editing here, you are stating that you are at least 13 years old.
(spaces will be removed)
(passwords are case sensitive)
Create Know-age!
You can also use this form to just set/reset your cookie on this machine, if you are already known. Put your handle and password in the boxes above and press:

Already Known. Just bake a new cookie.
Quick link to You know, that thing where ...

"Well, duh," you are thinking. "It's a user account." Not exactly. We don't bug you for an email address. Using this form is the entire process. We do need to put a cookie on your system, so you'll have to allow that. You will be logged in on the machine you are using now automatically, unless something happens to the cookie.
Looking over that, I never granted TV Tropes any rights to relicense content that I wrote.    I never granted them any explicit license, in fact.

I simply assumed, that as an editor of a wiki that displays a CC-BY-SA license, that my content would be distributed under those terms.  As the EFF notes, posting something online can come with an implied license to distribute the content under the terms stated on the website.  I don't dispute that.   I granted an implied license (and hereby explicit) to distribute all content I wrote on under a CC-BY-SA 3.0 license.

But I did not grant them any ability to change that license.  And when you distribute CC licensed content outside the terms of the license, their license to use your work -- and all derivative works -- is terminated.

As I got around to launching a new wiki to compete with TV Tropes, these issues came back into the foreground.  People started asking if we could copy over content from TV Tropes.  And the answer was not "no, they're using a different license from us"; instead we told people "no, because we cannot be sure that the content is not copyright infringement".

This sparked a reaction over at TV Tropes.  Someone asked about the license in this thread.   Then, on On November 11, 2013, one of their administrators posted this on the Administrivia/Welcome To TV Tropes page: 
By contributing content to this site, whether text or images, you grant TV Tropes irrevocable ownership of said content, with all rights surrendered ...

We are not required to attribute content you contribute to you, nor do you retain ownership of anything you contribute. Anything you contribute may be deleted, modified, or used commercially by us without notification or consent, to the extent permitted by applicable laws. For that reason, we strongly recommend that you do not post material on our site, whether in text or image form, that you wish to receive commercial benefit from in the future.
Well...!  I definitely did not expect that.  The TV Tropes administration has the cojones to not only assert ownership over my writing and relicense it, they also claim the authority to delete the evidence of the deed.  I guess they already violated the ShareAlike clause, so they might as well violate the Attribution one as well.  All while claiming to be a site honoring writers.  This is beyond the pale.

I could just send a DMCA request, requesting that they take down all of the pages that I edited -- and all revisions thereafter, because they're derivatives of my work.  This is how CC-BY-SA works.  And, as I said earlier, the CC license infringement terminates the CC license.  Legal action by myself and my allies could take out a huge swath of the TVT wiki.  But I didn't start a wiki to get into the content deletion business, so this idea makes me very uncomfortable.

At the same time, they are violating the rights of hundreds of writers on the site, by claiming ownership without even telling them.  There is still nothing in user registration that announces their "we own your work, so don't expect to ever profit from it" policy.  The page editor says that the site has a CC-BY-SA-NC license, but do not actually ask users to place their edits under this license.  Users are never directed to any kind of Terms of Service.  They do The Wrong Thing at every step of the way.

So if I don't stand up for these people, who will?  If a website is allowed to transition from Creative Commons to private ownership, that undermines the entire structure of the information commons.

In fact, their actions undermine the stability of both of our wikis.  Because only got an implicit license to distribute content -- and make multiple claims about what said implicit license means -- it undermines faith in the older CC-BY-SA license that we use to distribute data.  All The Tropes' license could be held invalid because of the outrageous claims coming from TV Tropes.

The legal situation for TV Tropes, however, is far worse.  Unlabled mixes of CC-BY-SA and CC-BY-NC-SA content are copyright infringement.  Period.  If an editor agrees to relicense his content under the new license, that's legal.  If we transfer ownership to TVT, that would be legal.  But I certainly haven't done either, and neither have my colleagues at All The Tropes.  So all pages that I edited which are still distributed at TVT are infringing.  All editors of those pages may also be copyright infringers, because they release a revision under CC-BY-NC-SA.  The weird mixed licensing situation at TVT is simply not tenable.

All The Tropes and TV Tropes are in a Mutually Assured Destruction situation, and I don't see a way out of it.  I am not a lawyer; maybe it's about time I hired one.

Sunday, July 21, 2013

Interpol Manzai, my new fanfic

I know anyone who's been following me so far thought that this might be a programming-centric blog, but that's not always gonna be the case -- my interests are pretty diverse.  You can always just search for the perl tag.

Anyway, I'm pleased to announce that I've finally gotten around to putting my fanfic online: Interpol Manzai, an Azumanga Daioh-centric megacrossover, following the lives of the cast of girls as they move into adulthood.  In particular, the Interpol part of the title refers to Tomo finally getting her dream job at the ICPO, which is something that you can get a lot of stories out of.  She can fly anywhere in the world looking for trouble -- and that's not to mention the trouble she causes herself, a la Dirty Pair.

The original idea came from a news report I saw back in December 2010, where I saw that Interpol issued an internation arrest warrant (actually a red notice) for Julian Assange.  I started wondering who Interpol would send to arrest him, and Tomo drifted to the top of my mind as the natural choice, lol.   So wrote that, and stayed true to original idea.

But as I got further into the story concept, I realized that I'd want to talk about all of the Azumanga characters as they move into adult life.  After all, I had gone through similar changes in my own life recently, and writing about is a good way of understanding myself.

I figured that since the anime ended in 2003, and the Assange story took place in 2010, I could age the whole cast seven years and see where they are now.  And they all went out and took on different paths in life, but I believe that they'd all still be happy people.  It certainly adds more of a sense of mono no aware, but the overall tone stays light and cheerful.  Plus, if they're taking on the wider world, it's a good excuse to throw in some crossovers.

Lots of crossovers.  Crossovers to You're Under Arrest, Yotsuba&, Ghost in the Shell: Stand Alone Complex, K-On!, Bubblegum Crisis, Kimi wa Petto, Lupin III, and whatever else I can think of.  So long as it it's a modern-day story without huge supernatural element, it's fair game.  It's a pretty diverse group, and therefore hard to keep on a light comedic note all the time.  But the Azugirls have good strong characters, and can deal with a bit of adversity.

In fact, they helped me with a bit of my own adversity.  I recently attended the YAPC:NA conference, as my blog readers know, and one of my main reasons for going there was to look for work.  And it's pretty intimidating, going in and trying to sell yourself with no experience, and very little resume to speak of.  But I was pondering Tomo, and about how she would never be insecure in a situation like that.  Like Jack Rakan told Negi Springfield in Negima, sometimes you just have to be a little bit stupider to be successful.  Sometimes, being happy and believing in yourself is enough.

So I went in there, and decided to act a bit more like Tomo.  More brash, more self-confident, and less concerned about making mistakes.  After all, hubris is one of the virtues of a programmer.  And #perl6 itself had talked about how "adults are imperfect children", because they're too afraid of failure when failure is one of the best ways to learn.  Like a child, Tomo Takino knows she's perfect.  Not factually perfect or free of mistakes, but in always trying to be the best, funniest, most exciting person she can be.

At YAPC I talked to everyone I could, networked like crazy, and summoned the best of my self-confidence.  I did keep a lower "annoyance" level than Tomo though.  Somehow, this actually worked for me, and I got a good $dayjob.   There's something to be said for a philosophy where you always reach for the heavens, but are happy when your hands come back with only a few raindrops.

Anyway, I'll be writing more fanfic when I have time, though my schedule is currently busy with $dayjob and writing Perl 6 stuff as well.  So go read the fic -- although it will help to have seen Azumanga Daioh before hand, hopefully you shouldn't have to -- and the first story is entirely done.  Feedback is very much appreciated; praise for my perfection and cursing my stupidity is equally desired.

Saturday, June 22, 2013

Camelia at Age 13: Perl 6 on the JVM Debuts

Perl 6 is now thirteen years old.  And she's very much a teenager in attitude, self-confident yet still growing up.  This contrasts with Javascript, which emerged from Brendan Eich's head, fully-formed like Athena -- but that only shared the Zeus-sized headaches with everyone until JQuery came along.

But Camelia, as she is fondly referred to by fans of Perl 6, is growing up fast.  Both too fast, and not fast enough.  To some of the community, the prospect of major changes to the language is scary.  Perl 6 is trying all of these crazy new things -- invariant sigils, metaoperators, grammars. She's even doing subroutine signatures, because "all of her friends are doing it".

They can't stay little children forever, you know.

And teenagers are liable to do surprising things.  So it was, that this week we announced Rakudo Perl 6 now runs on the Java Virtual Machine (JVM).  It's not perfect yet, but 62% of the files in the spectest pass as of yesterday.  Given the rate things are progressing, I'm sure it's already at a higher pass percent.

And yet, I'm sure there is no small number of you whose first thought about Perl on the JVM was "Heresy!".

There are certainly good reasons to support this point of view.  Startup times are horrible at this early stage, still O(seconds), and much of that is JVM's overhead.  It has well known security issues.  And of course the major implementation is controlled by $corporation, who just wants to make money off it.  And why would we want to abandon open-source VMs?

Still, there are plenty of good reasons for the port.  One is that the JVM is ubiquitous, and many devices have a copy pre-installed.  Most of Java's stability issues have been dealt with, and it serves Perl's competitors well enough through Jython and JRuby.  And it is well-documented, with bazillions of libraries (more than fooilions, anyway).  So we can finally address the longstanding desires of the community in things like sockets and threading, because we can tell the difference between our mistakes and those of the VM.

Instead of thinking of Perl 5 as a "sister language", I like to think of it as Camelia's father instead.  A father that might be kind of upset that she brought "that kind of language" into our house.  But she has a mind of her own, and I'm afraid that this won't be the only boyfriend she'll be bringing home.  There is a GSoC grant to build a Javascript backend to Rakudo.  And Niecza Perl 6 already uses the .NET Runtime.

However, Perl 6 is not abandoning open-source and C language implementations, either.  The announcement of MoarVM shows that Perl 6 developers plan to develop a lightweight VM specifically for NQP and Rakudo.  C functions will be directly callable within Perl itself, with the NativeCall interface.

Now, if Parrot fly off on its own course, that's Parrot's call.  You know how these teenage relationships go -- this could end up in a blow-up on the quad, or just as easily turn into hot makeup coding.  What, you didn't think I was going to say something that would violate the CoC, did you?

But Perl 6 is not done growing yet.  Camelia, like other teenagers, cares about fashion and wishes she had better threads.  And, once we get tuits, this is pretty high priority.  Because any modern language needs to live in the multi-core reality.  This is something that we can still design around,  that may not have recieved the same care ten years ago.  Many threading features are already baked into the language, like hyper operators and async blocks.

So I view the debut of the JVM port as Rakudo's real début, as with a debutante.  A treceañera, if you will.  I guess, given that she's 13, maybe it's a Bar Mitzvah -- except that she's not a boy, she's a butterfly.  But this is a chance acknowledge Perl 6's presence in the language scene.  Of course, these coming-of-age ceremonies don't mean the teenager is truly grown up yet. 

But grow up she will, and faster than some of you might like.  Perl 6 is rebellious, and changes things that those in her father's Perl 5 community don't understand.  But if you talk to the pumpkings, they sincerly hope that Camelia doesn't turn out exactly like her father.

After all, do we want keep the ithreads model?  Do we want to modules that dig into the compiler internals like XS does?  Perl 5 isn't perfect, we are just accustomed to its particular idiosyncrasies.

But for all that Perl 6 is different, she still loves her father.  We still have sigils, classes, @_ in subs (if you still want it), P5-style regexes, modules, and TIMTOWTDI.  It's still Perl.  Moreover, there are at least two efforts to run Perl 5 code in Perl 6 -- the v5 grammar/compiler in Perl 6, and access to libperl from MoarVM.  So the sky isn't falling on compatibility.

Nor is the other extreme true: Perl 6 development is in fact moving forward at a fast pace.  We know that Perl 6 is late.  Very late.  So late, in fact, that it's her father that's going to turn into a Pumpkin.  But when Perl 6 finally comes of age -- sooner than you think -- it will be something that the Perl community will be proud of.

And I apologize in advance for anything Camelia does in her bratty teenage years.