24 September 2010

Trying to use Trac...

So, in part because at work we have a need for task/issue management software, I've tried to get educated on the various open-source options in that area. It seems like there are two main choices: Trac or Redmine (I also ran across one with a beautiful user interface called Integria IMS but because of various internationalization issues I didn't explore it much).

Trac is the standard issue tracker in the Python open source world, and since I'm blessed to be able to spend virtually all of my time writing code in Python these days, it was the first thing I looked at. Naturally, like almost all issue/bug/task trackers, Trac has all the standard features like entering a ticket, having types, statuses, and so forth. From the fact it's widely used and the fact that it's implemented in Python, it was definitely my default choice. Whatever system we use at work we'll probably spend a lot of time customizing, so the Python thing is big.

Then a co-worker here in Japan mentioned Redmine. Redmine is newer than Trac but has a lot of the same features (as do the others). In general the interface to Redmine feels a lot more up-to-date than Trac's (it's not that Trac's interface is bad, it's just a pre-Web-2.0 kind of feeling, whereas Redmine used a lot of more interactive widgets in it's UI).

When I started looking realistically at what we would need to do in order to adopt either one of these company-wide for managing the tasks of 300 people, I realized that a lot of the things we needed were related to scale. While open source projects can have scale in terms of users, I don't think either project is really set up for creating thousands of tasks per month. In particular, we clearly need to have:
  • Ability to create new tasks by importing from spreadsheet (it just doesn't make sense for anyone to have to click "Create New Task" 1200 times)
  • Ability to batch edit tasks (when the above goes wrong, you have 600 tasks to change from "New" to "Assigned")
  • GANTT charts (i.e., a graphical representation of tasks over time). Open source projects are notoriously lax about schedules. We work in production, and our production managers need good ways to see exactly what's going on.
  • Task dependencies. If you know about about CG production, it's very pipelined: the animation can't start until the layout is done, etc., so you want a way to declare that Task F depends on Task C.

None of the above are particularly specialized; they're certainly all features that have been implemented in project management software (e.g., Microsoft Project or FastTrack Scheduler) for decades. But, surprisingly, Trac has zero of the above features (Redmine by default has all except the import).

To be fair to Trac, Trac pushes a plug-in philosophy, and there are sure enough plugins for all of the above (more about that in a minute). I read through several discussions on the Trac site where every one of the above features was pooh-poohed by a Trac developer as "just not important enough to be in core." There are two big problems I had with that.

Issue Management Should Have Scale

Seriously? Ability to multi-select items is considered "not core"?

Maybe it's just because Trac comes from the world of tracking open-source projects; it's fair to say that they probably rarely need to create 600 tickets at once, or update the status of 150 of them. But that's not actually an unusual thing to want to do if you're tracking short-term tasks for a group of 300 people. Those basic, simple software features like multi-select/batch edit or the ability to establish relationships are absolutely central.

I'm totally understanding of the fact that time and attention are limited, and if it was simply a case of "we haven't gotten to that yet" I would have no problem. But a lot of the Trac core developers seem to think they *shouldn't* actually have standardized way to establish a relationship between two issues, which is insane.

Plug-ins Are a Terrible Way to Standardize Architecture

None of that would really matter if Trac's plug-in approach worked well enough, to be honest. OK, sure, you have to download some plug-ins, but hey, all the functionality is there, right?

There are a lot of cases where that would be true. But it's not true in real life, because the core architecture of a system needs to provide the base data items for the plug-ins to manipulate.

Here are the specific ways Trac fails to provide enough common infrastructure to actually make plug-ins to support core features useful:
  • For batch edit, the most common batch edit plug-in only works with custom queries. If you just go to the normal "Show me the isssues" default query you can't do a batch edit. This is because there's no extensibility of the individual item UIs.
  • For issue dependencies, Trac doesn't provide the plugins a standard way to store relationships between issues. Because of this, the plugins try to work around this by using the custom field support which Trac does have. Unfortunately, the custom field support doesn't include a type system, it's easy to fail data integrity (your list of dependent tasks is being stored as a comma-separated text field; there's no way to use the real relational data model).
  • For the spreadsheet-import feature, again, because Trac doesn't provide a type mechanism for custom fields, while the import plug-in does its best to try and support custom fields, there's no way for it to know what the type of the fields added by other plug-ins is. Thus, when you try to import a spreadsheet which records that your task is dependent on Task #1, the text field "1" gets interpreted as a float and becomes "1.0" which then fails the referential integrity check. Your bug tracker is now broken and cannot be repaired from the UI; it's MySQL Query Browser time for you.
  • A group here in Japan called Shibuya Trac wrote a GANTT chart generator for Trac. Unfortunately, it's out-of-date for versions so you'll be Googling for awhile if you want to install it, and for a longer while if you don't read Japanese, the native language of the developers.

Oh and, It's not based on a real ORM

When I actually started looking through the Trac database schema and source code to see why some of the above things were true, I got much more depressed. I realized that just because of history, the Trac project is old enough that it had to grow its own solutions to a lot of problems. They have their own ORM, their own templating system, their own database abstraction layer, etc.

I've spent a lot of time writing apps against Django, the absolutely awesome Python database toolkit. Especially when used with South, Django is a complete Python equivalent to Ruby on Rails. The ORM problem (how to map Python classes to a relational database), the database schema migration problem, and the database backend problem are completely and throughly solved by Django (as they are by Ruby on Rails). And the templating problem is pretty well laid out too. For Trac, they were building an app, so they've solved all those same problems but not as elegantly or cleanly as Django. Their database adapter isn't quite as complete, the ORM is a little more manual, and of course none of those subsystems are as well documented ("Look at the code" is frequently mentioned in the Trac developer docs; Django has awesome documentations even without looking at the code, which I'm now convinced is one of the best signs of quality in a piece of open source software.

Looks like Redmine from here

While Redmine doesn't have spreadsheet import built in, they in general have taken a much more expansive view of what is "core": they treat multi-select as a core UI ability, they treat the ability to declare relationships between issues as a core data structure item (although the core package doesn't specify what type of relationship it is); and they have always had time-oriented views into the data.

I really wish I could use Trac, among other reasons because I don't have any particular desire to use Ruby (nothing against it, I just already know Python very well). But the well-integrated easy-to-support features in Redmine and the lack of same in Trac mean it's just not practical. Either Trac needs to make a much more realistic set of decisions about what features are "core" to their stated mission, or they need to significantly beef up their core data infrastructure so that independently developer plug-ins can truly build on each other without dozens of referential integrity problems cropping up. Given that Trac is a relatively successful project, whose core developers seems pretty happy with the way it works now, I guess I'll have to learn a little Ruby.

11 September 2010

15 Albums That Will Stick With Me

My friend Michelle Coulter started this thread on Facebook. My contribution got kind of long, so it migrated here.

Windham Hill - Legacy, a Collection of American Folk
Windham Hill has faded from memory pretty quickly, but not only did they totally evoke the Northern California feeling for me, they also found and promoted a lot of truly talented musicians.  Whereas most of WH was new-age-y light instrumentals, this collection was gritty folk music by unknown performers from all over the country.  The quality of the songs and performances were so good that several of the songs from this collection are still stuck in my mind decades later (I even learned to play "Dodging the Blues" by John Gorka on guitar). The interests sparked by this album led me eventually to Butch Hancock/Joe Ely/and the Austin New Folk movement on one hand, and Uncle Bonsai and other eclectic west coast folk on the other.  Listening to guitarists like Kaki King always reminds me of Windham Hill's early days.

Bangles, All Over the Place
The Bangles are of course most famous for the "A Different Light" album.  I loved that album too, but the best thing about it was that it made me go back and find this album, which much more accurately represents the hard-rocking LA girls they started out as.  While "Walk like an Egyptian" from "All over the Place" is definitely a good pop song, "Hero Takes a Fall" from this album is a great *rock* song.  This album got my car going way too fast down the 101 far too many times.    Among other reasons to like the Bangles, their bass player, Michelle Steele, used to be in the iconic band The Runaways.  This album also has the Bangles covering "Going Down to Liverpool", which was written by and would eventually be released by Katrina and the Waves.  I've always wondered how an up-and-coming LA band heard about a B-side from an (at the time) obscure Cambridge, England band in order to cover it.

Chicago II
Probably most people remember Chicago as the schmaltzy balladeers they indeed became. But the formation of the band was as a jazz ensemble with some rock influence, and if you go back to those albums (basically Chiacgo I and Chicago II) they're anything but pop music. 11-minute long jams, extended jazz arrangements, and intense inner monologues fill out those first few albums. There are a fair number of bands that can and do perform this stuff live in concert, but there weren't many that made it their debut album. It's the opposite of internet-friendly.

The Beatles, 1962-1966
My sister was an original Beatlemaniac, and while I liked the Beatles jut fine growing up, it wasn't until I got this compilation album many years later that I felt like I really became a Beatles fan.  The sheer quantity of infectious, well-written, pop music they put out in these productive years is unique in music history, even without counting what they would go on to produce in the following albums. Many years later I'm learning more and more Beatles songs on guitar.

Matthew Sweet, Girlfriend
Hee-hee, compared to the rest of this list this is the guilty pleasure zone. Matthew Sweet writes unapologetically pop songs in an undeniably narcissistic way (he performs almost every instrument on his albums). When I first heard this album (like The Bangles, it frequently powered my highway driving) I hoped that kind of hard-driving pop music would be a category I could fill out my record collection with. But in the end, I had to content myself with other Matthew Sweet albums (of which there are quite a few). Sadly, it didn't seem to lead anywhere for Matthew Sweet either: I haven't heard anything interesting from him in a long time, but I keep hoping he'll have some awesome late-career comeback.

Not an Album, but a place: KFJC, 89.7FM
I can't draw up a list of "musical influences" like this without talking about KFJC, even though it's a radio station rather than an album. Specifically, it's the college radio station at Foothill College in Los Altos Hills, California. Now, college radio, while it can bring you some new music you've never heard, is more often unlistenable dreck. What makes KFJC special is that many of the DJs, rather than being this semester's freshmen, are actually Silicon Valley employees who love music and who have been doing their weekly show on KFJC for 20 years. They're not only volunteers, they pay for the privilege (I believe they have to register for one class at the college to be eligible). The result is shows run by a DJ with an encyclopedic knowledge of some sub-sub-sub-genre. Phil Dirt's instrumental surf hour, The Norman Bates Memorial Soundtrack show, the reggae show… there's so much musical knowledge here available to you, all for flicking your dial (on the Peninsula) or getting your URL correct (anywhere in the world via http://www.kfjc.org/) that you have no excuse not to partake.

Talking Heads, More Songs About Buildings and Food
Talking Heads, Stop Making Sense

Into the dinosaur environment of 70s album-oriented rock came four Rhode Island School of Design students (OK, three RISD students and Jerry Harrison) who proved that rock could not only be intelligent and interesting, it could be intelligent, interesting, and danceable! Who knew! The visual and musical amalgam the band provided was a godsend. In some sense, these two albums are the beginning and end: More Songs… was the first time I heard about the band and started listening to them; and Stop Making Sense was really their swan song as a band, after which individual projects would take off and the general rise of Alternative Rock meant that their approach was no longer as unique. Stop Making Sense has a particularly fond place in my heart because the old Varsity Theatre in Palo Alto, a classic single-screen movie house, used to have midnight showings of Stop Making Sense. Only 50-60 people would come, and since the Varsity actually used to host plays, there was a large stage where the majority of audience would end up right in front of the screen dancing for the entire movie. Alas, not so possible at the modern multiplex. The Varsity, meanwhile, is now a Border's bookstore.

Juluka, Scatterlings of Africa
I actually don't remember anymore how I first happened to listen to Johnny Clegg (Juluka was a partnership between him and Sipho Mchunu), but I was instantly hooked. Juluka was extremely well-known in South Africa as a biracial band in the apartheid era, and as a result of that fact, had to play underground and couldn't release their albums on the official South African radio or music channels. They became a world-of-mouth hit with their combination of rock influences, zulu guitar style, and explicitly political anti-apartheid lyrics. What you wouldn't know from the albums are the extent to which their performances are organized around Zulu dance as well as zulu guitar. Both times I've seen Johnny Clegg live the band did one exhausting 1:45 set in which they continually sang, played, and danced (those folks are *in shape*) without a break; there's some good tracks on YouTube. For me, not only does Juluka's music hold up well, it was my gateway to discovering the whole range of African music (the South African compilation series "All the Hits 2xxx" which is issued each year is especially recommended if you run across it).

Music Man, Original Broadway Cast Album
My parent's taste in music ran mostly to Rachmaninoff and Debussy, whereas even within classical I'm more partial to Mozart or Bach.  However, the one place where our tastes enthusiastically overlapped was in musicals.  As a kid, the album cabinet built into our (wall-sized) "hi-fi" was stocked with the soundtrack albums for every big broadway production -- Camelot, Oklahoma, Sound of Music, and eventually A Chorus Line.  But really, I didn't spend as much time with any of them as with Music Man.  The combination of the good-old-Iowa setting (my mom's home) plus a bunch of great songs for the genre meant hours and hours in my room singing along to "Seventy-six Trombones."  To this day I can still recite "Trouble in River City" from memory.  

The death of naive entertainment made musicals a lot harder to sustain.  The modern equivalents in "Rent" or "Chicago" are great entertainment but somehow don't give rise to memorable songs in the same way (can you hum the tune to any song from "Rent"?).  

Bonnie Raitt, Luck of the Draw
This is a good album, but that's not why it's listed here.  It's listed here because I went to see Bonnie Raitt in Santa Cruz at the Catalyst just before Nick of Time and this album were released.  Bonnie Raitt was a musician well-known as a touring musician but not someone who had ever achieved massive success at that point.  But, she had been touring and playing music for her whole life (she was probably around 40 at the time).  Seeing her live, I was absolutely dumbstruck by her skill as an entertainer.  I had the epiphany that all live musicians who've had a long career are extraordinarily appealing to see live -- they have a ineffable quality of being relaxed and welcoming to the audience.  Bonnie Raitt had just recently recovered from drug and alcohol abuse problems, and you could see that history.  But the sheer humanity of her performance was incredibly moving.  Thus, when Nick of Time and Luck of the Draw came out, it felt very satisfying that her years of toil finally paid off for her (and they have some catchy songs, too).

It's also good to have this in the list as a reminder that there are tons of musicians who spend their whole career without ever getting their "Nick of Time": they've done great work and been successful enough to stay in the business, but never really had their breakthrough hit. John Hiatt (who appears on Raitt's albums), Richard and Linda Thompson, Allison Kraus, Blues Traveler, J.J. Cale, Joe Craven…

Miles Davis, Kind of Blue
When I first moved to Northern California, I started studying piano (I didn't play any instruments as a kid) and I was lucky enough to attend the ensemble workshops at Stanford Jazz Camp.  This is just an unbelievable resource for people lucky enough to live in the Bay Area who also happen to like Jazz; musicians of any level are welcome to enter the ensemble classes.  We met in the Braun Music Hall's "small auditorium" where the piano I practiced on was a 1927 Steinway grand, and so I learned why Steinways are, well, Steinways.  

But the music we did for the workshop was mostly Miles Davis.  And why not?  His classic recording occurred in a time when he was legendary not only for his playing, but for his scouting of great musicians to play with.  Every tune on Kind of Blue is a classic, one that jazz musicians should and do study and reprise.  I had listened to Kind of Blue before the Jazz Workshop, but of course after learning and playing the tunes, my appreciation of the musicianship recorded on the album was of a different order.

Grateful Dead, Touch of Grey
This is probably the Dead's best studio album, but let's face it -- I'm really just putting it here as a stand-in for the experience of attending a Dead concert.  Fortunately, I got to attend three Grateful Dead concerts.  They evoked a feeling of communal happiness, goodwill, and freedom from worry more than any other group experience I've had (Burning Man is close, but Burning Man has an intellectual edge which Grateful Dead concerts distinctly did not).  I don't use drugs, so that's not where I was getting the feeling at Dead concerts (although the same can't be said of all my fellow concert-goers).  The combination of the band and the Deadheads who followed them around created a true group good vibration; swaying back and forth to the music seemed like the only reasonable choice, and everybody did it.  It didn't hurt that I always saw the Dead outdoors in the summer -- at Frost Amphitheater and Laguna Seca.  I hear the modern equivalents are Phish, so even if the studio albums don't sound great to you, catch a concert sometime.

Fleetwood Mac, Rumors
While I think objectively this is one of the highlights of the album-oriented rock era, it doesn't date all that well (I doubt anyone will become a new fan of Fleetwood Mac by reading this). For me, though, it's a shoo-in for this list because of the role the song "Go Your Own Way" (talk about a paean to 70s individualism) played in my high school life. I was a nerdy shy and overweight kid for most of my childhood. Early in high school, my mother passed away from cancer and I started trying much more actively to get attention at school. By the beginning of my senior year, I had finally lost weight, bought some non-polyester clothes, and knew enough people to be comfortable. Then, the honor society got a presentation by a woman from the local Muscular Dystrophy Association about a new type of benefit event: the Dance-a-thon. You had music playing all night and got pledges of a certain amount of money for each hour you danced. The promotional video MDA made for this showed inspirational scenes of MD victims being helped to get their lives in motion again, and the soundtrack was "Go Your Own Way" from "Rumors".

Somehow, my friend Si Steinberg and I immediately took to this idea. We blitzed the Honor Society into being the sponsor, convinced our principal into letting us have an all-school assembly to pitch the idea to the students, and roped virtually every other student organization into playing some part in the production: the Student Council was in charge of soliciting for prizes, the Home Ec club made and sold food all night, the DECA (business) club handled the accounting, etc. It was like something out of a Andy Hardy movie. The event went off, we raised IIRC $7000K+ for MDA, and everybody had a good time and went home exhausted.

In the course of pitching, organizing, and running that event, I must have watched the "Go Your Own Way" promo video over a hundred times. It indelibly imprinted Fleetwood Mac on me and kept me inspired and excited over those hectic months. Most everyone has probably forgotten the Dance Marathon, but it and Fleetwood Mac had a huge part in my life.

Jackson Browne, Running on Empty
After all the personal stories on this page, really, the reason for "Running on Empty" being here is because it's a great road album. Musicians write about being on the road because they spend a lot of their life there, and I still don't think anybody's bested this album as a record of that combination of boredom, tedium, and exhilaration. And certainly Jackson Browne has every right to pen the classic road album: he joined Nitty Grity Dirt Band at age 18 and has been a performing musician continuously since then.