Kick off Fedora 18 with a Bang!

I published the Musicians’ Guide for Fedora 18 earlier today (link).

Now that the Audio Creation SIG has our own spin (whether or not it’s official yet), I’d like to try moving forward with revisions to improve the Musicians’ Guide. I have virtually no spare time, and that’s my reality for the forseeable future, so instead I’d like to encourage everybody who uses Fedora’s music/audio software to contribute!

When you contribute to documentation for free software, you’re making it easier for somebody else to take their first steps into unknown territory. Comprehensive, accessible documentation is, in my opinion, one of the most important tools we have when trying to spread free software to new users.

Here are two easy ways to join in…

1.) Check out our list of bugs (here).

If you see something that you can do (or do part of), just add your proposed changes as a comment on the Bugzilla issue. Maybe you can rewrite an entire chapter or section, one paragraph a day. Later on, I’ll pick up your revised version, add the Docs Project-specific markup, and publish your changes with Fedora 19!

2.) Start using the Musicians’ Guide, and report issues (here).

The biggest challenge I have in maintaining this 270-page document is that, because I know there are *tons* of different areas for improvement, it’s difficult to know where to start. Feedback from real users is invaluable in helping to know where to spend my time. Even if it’s as simple as fixing a typo, clarifying a sentence, or including/excluding additional information, your feedback is extremely important.

And heck, let us know when things are going well, too!

Some Docs Project Statistics

Numbers, meaning statistics. I was just updating the Musicians’ Guide translation source files for the upcoming Fedora 18 release (better late than never, right?) when I saw that Transifex, our Web-based translation tool, keeps a count of the number of words in every file. They don’t automatically sum the number of words in the whole document, but I was curious, so I did it myself.

14650 + 3600 + 1767 + 44 + 31 + 27 + 2763 + 3558 + 855 + 1201 + 1134 + 2950 + 2743 + 3692 + 7 + 1583 + 1 + 6128 + 1409 + 511 + 2345 + 4112 + 1589 + 1593 + 1448 + 21374 + 7687 + 520 = 89322

So that’s it: the English Musicians’ Guide for Fedora 18 will have nearly ninety thousand words. In case you’re wondering, the chapter with the most words is “Basic Programming in SuperCollider,” with 21,374 words, or approximately 24% of the whole book.

But how does this compare to other things I’ve written? Consider the “Cadence in Sibelius” paper I’m submitting for my doctoral applications… 15.5 pages of text brings it to 6,841 words. The Musicians’ Guide has 13 times as many words! No wonder I always feel like revising the Guide is a hopelessly lost cause…

The Art of What-Now?!

So I was reading Jono Bacon’s blog post about the second edition of his book, “The Art of Community.” This is great because I liked the first edition, and because the second edition has a much nicer cover (it’s about time the O’Reilly covers move into the 21st century).

But… why did he write it by himself? Twice! How is it that nobody along the way realized how strange it is that a book about collaboration has only one author?

Thanks to my Mentors

I just finished the survey for Fedora Project contributors who have been contributing for fewer than three years. If you can, I suggest you complete it too:
http://limesurvey.sim.vuw.ac.nz/index.php

The survey made me think about why I was able to join the project in the ridiculous way I did. Rather than starting with sensibly small tasks, I jumped in at the deep end, thanks to Fedora Summer Coding 2010. In retrospect, I can see that my mentors in this project went out of their way, and spent a considerable amount of time ensuring that I could successfully complete the Musicians’ Guide.

I wish I could return the favour, either to another new person, or to the project generally. I wish I had enough time to actually commit to and perform one of the roles I’ve put myself into.

Either way, what I want to say here is that free software contributors–and maybe people in general–don’t necessarily understand the full impact and importance of their work.

Response to a Friend, about the McGill Symphony Orhcestra’s Recent Concert

Here’s what. About the MGSO concert.

I think Berlioz is great, and the world could use more of his overtures specifically, also more “Harold en Italie,” and less of “Symphonie fantastique.” And the Rachmaninoff concerto is a Rachmaninoff concerto. Whatever. I’m over it.

But the reason I had to go is because Bruckner is one of my things. It started in high school because the Bruckner tuba excerpts are fun because they’re difficult in exactly the way a tubaist appreciates. None of this super-high, super-fast BS like Berlioz (whose music is fun for another reason) or under-used octave-machine BS like Brahms (except in the “Academic Festival Overture”). In Bruckner some parts are loud, some are soft, some are lyrical, some are percussive, and so on–it’s a good mix of everything. You can see how Bruckner’s tuba writing was the start of a trend continuing through Mahler, Nielsen, Hindemith, Shostakovich… everything we have! In my opinion.

Near the end of my second year, after four terms of training in harmony, three in Caplinian form, and three in music history (Laurier is a very different place), I started to appreciate Bruckner for another reason: forget Beethoven and Mahler/Schönberg; it’s Bruckner whose music paints a very compelling picture as the culmination and conclusion to the Romantic period, and Classical-style form with it. The music historical and music theoretical frameworks are set up to do that. Whether or not it’s true is another matter, and I think not worth considering, because we can never know the truth content of a statement like that. We wouldn’t even be able to establish the criteria for whether it’s true.

But I’ve never understood the dude’s fourth symphony. I haven’t listened to it in aaaaaaages, but as it turns out, I still don’t really get it. No idea which version the MGSO used (maybe a terrible one, like the Dover score, which would be a problem), but I spent most of the first movement laughing at the symphony. I think you’re right to say they played it well, but it just sounds like it was composed by a university professor (which it was).

So I just listened to Bruckner’s fifth symphony, and indeed it’s not that all of Bruckner’s music is stupid… just the fourth.

A Note of Support for GNOME Contributors

TL;DR:

I’m a KDE user. Every so often, I try GNOME for a week to see if I like it. For various reasons, it never works out, and I end up back on KDE. It’s been my computing home for over ten years now. But recently it’s become clear to me that there’s a lot more at stake in the “desktop wars” than just software. I think it’s only a little hyperbolic to say the future of our society is at stake too. I wish to congratulate and encourage the GNOME community in their efforts to build a social structure that includes everybody’s contributions.

An explanation of how and why I came to this conclusion:

The suburb where I grew up, near Toronto, Canada, was and still is a place where cultures clash. I only really became aware of it in high school, where us “white people” were definitely the “visible minority” ethnic group. There were also “brown people” and “asian people,” and I know those terms don’t work very well in other contexts, but they are the racial groups we created for ourselves. I remember several times being the victim of racial discrimination, and I know it happened to other people, and I know there were many other forms of discrimination too. For the most part, though, we students realized that the only way to survive would be to cooperate.

When I moved to Waterloo (about an hour away) for my undergraduate degree, the situation was very different. Nearly everybody was white, and it made me uncomfortable. People thought there was something wrong with me because I was “always talking to the asian people.” (NB: There really aren’t many brown people in Canadian music schools.) I’m still not sure, and I likely never will be, whether I was discriminating against white people or simply trying to behave as usual. Either way, it was during my undergraduate degree that I first started to encounter gender discrimination. (It’s true, the proportion of LGBTQ people in music programs is quite high.) Eventually, especially when I became a TA, I started to see the positive effects of *actively* encouraging all kinds of people to join in an activity.

I think you can’t know it until you experience it, but *how* and *with whom* you accomplish a task is much more important what you accomplish.

Now in my Master’s degree, I’ve moved to Montréal, Québec, and I’ve begun to really learn about another kind of discrimination: linguistic. (If you don’t know what I mean, search the Internet for English/French relations in Canada.) I’ve also begun to experience the level of systemic discrimination in my discipline (music theory) and its related fields (musicology, ethnomusicology, music technology, music education). Every academic music sub-discipline is different. I fit into only some of the privileged categories for music theory (I’m white and male). I don’t play the piano, I don’t really care for Classical-period music, I’m not that interested in pitch relations, and I’m absolutely not interested in telling anybody the one true way that music actually works.

The problem is obviously bigger than this. My university is corrupt, the Montréal governments are corrupt, the Québec government is corrupt, and I’ve known for years the Canadian government is corrupt. Nearly everybody with power routinely avoids standing up for what’s right, and instead deals with what they have. Some of my peers are okay with it and some even endorse it, but some of us have decdided to dig in and fight back. I don’t have much power (I’m still just a TA), but I learned my lessons from high school and from the Fedora community: the only way we can survive is to cooperate, and contribute our small part.

That finally brings me to GNOME. I see their design goals, I think they’re exciting, and I want to like their software, but I just don’t. That’s not really the point, though. The GNOME Foundation actively encourages contributions from people who self-identify with a traditionally under-represented group, and they do it in a highly visible way. There are internal arguments, but those are often quite visible too. They are building the future, while the rest of us just sit here wasting time. The future is now, you see.

So KDE, Fedora, Mageia, and everybody else. I assert that, if somebody isn’t actively helping to build an inclusive society, they are actively helping to prolong our exclusive society. Even if I’m wrong, the only disadvantage to being actively inclusive is… nope, can’t think of anything. Let’s get on with it, and build the social structure our software licences supposedly support.

About the Problems with “Sibelius” Software, and a Real Solution

According to this blog post, developers of the “Sibelius” music notation program have been dismissed, and the software will die over the next few years.

Here are my thoughts on the issue.

Maybe It’s not a Big Deal

First of all, we may be getting worried for no reason. Assuming that what Derek Williams writes is true, Avid has fired the programmers who maintain and write the “Sibelius” software, and has announced nothing else. But Williams uses inflammatory language to encourage us to panic and to get angry at the “golfing buddies on the Avid board [who] have shown themselves time and again to be devoid of vision or proper understanding of the music industry.”

For the sake of argument, let’s assume the members of the Avid board of directors are golfing buddies. What are all the previous situations where they “have shown themselves… to be devoid of vision?” And what have they done that’s shown a lack of “proper understanding of the music industry?”

Avid owns rights for and produces the software and hardware that collectively make up the pinnacle of commercial music equipment. Sibelius is just one of those properties. It seems to me like they have the vision to be industry leaders–because they are. And what is the music industry, anyway? It’s about selling stuff, not about making music. I can understand Mr. Williams’ frustration that Avid doesn’t seeem interested in doing what he wants, but that’s no reason to assert the board of directors is “devoid of… proper understanding of the music industry.” They’re industry leaders. I think they understand it.

Ultimately, because Avid has apparently not announced plans for the future of “Sibelius,” we actually have no reason to believe that development will cease. It’s easy to get whipped up in the “what else are they going to do? They must be killing it!” frenzy, but let’s think about this rationally. If the “Sibelius” software does make money, Avid won’t want to kill it. They may have other plans, like a brand-new notation application, or they’re simply moving development to a new location.

But maybe Avid will kill “Sibelius.” I don’t know. They’re not accountable to the software’s end users–they can do whatever they want, because they own the programming code (called “source code”). When you buy “Sibelius,” you really only buy a licence to use it.

The Real Problem Is Us

The fact of the matter is, we’re all part of the problem that caused this situation. When we buy “Sibelius” software, we actively encourage Avid Technology’s business model. The same is true for any software or hardware or any other thing we buy–even when we don’t know a company’s business practices.

It doesn’t matter whether you grudgingly buy every new release of “Sibelius,” or if you do so enthusiastically. Every software licence they sell is an equal endorsement of Avid’s business practices, where software developers make programs, and we end users pay to use them–as long as we don’t break the restrictions in our licence agreement.

So if you’re sufficiently upset about what Avid is doing to “Sibelius” that you want to do something about it, the only powerful thing is to stop using and especially to stop buying “Sibelius.”

Misguided Effort

Looking at websites like the change.org petition and the sibeliususers.org website is upsetting for me. These groups take the position that we, “Sibelius” users, are the victims, against whom some sort of injustice is being committed. No. Stopping development is perfectly legal and perfectly just. At no point did Avid ever guarantee to anybody that they would continue to actively develop the “Sibelius” software for any length of time.

If Avid caves in and development on “Sibelius” commences again, we would still be the losers, because we would still have no control over the software.

The company is just as likely to stop development at some point in the future. Besides, how will we really know what’s going on? If Avid says they will restart active development, is there some way to measure whether they actually did? Not really. It’s not like we know the list of enhancements they were planning.

But we can break free. We don’t need to let large corporations control our software. We can take control of our own software. This, I believe, is the most useful action.

There Is a Solution

The solution is “free software,” which means “freedom,” not “no cost.” You might know this idea already, under the term “open source software.” They’re not quite the same; let me explain.

“Open source software” (OSS) is when the source code is given away for no money. The source code is the programming language files that are converted into a program you can run. This is good, because you can see how and why your software works. Open source is an important part of free software, but it’s really only interesting for people who understand programming code.

Free software, or “Free and Open Source Software” (FOSS) has an additional benefit: once you obtain a licence (potentially by paying money), you are free to do whatever you wish with the source code. You can modify it and share it as you wish. Basically, once you buy a FOSS program, you actually own a copy of the program–not just a licence to use it for a while.

Maybe you’re thinking that even this is only interesting for people who understand programming code, but I don’t think so. You see, if “Sibelius” were free software, it wouldn’t matter what Avid does. If “Sibelius” were free software, with the momentum the user community has, they would certainly be able to copy the source code and continue to release new versions of “Sibelius.” It’s true that even a community-run effort could fizzle out at any time, but with free software, at least we would have this opportunity. We would have greater control over our own tools, of our productivity, and therefore of our lives.

This leaves a lot of questions open, like “how can a free software company make money?” I don’t have the space to answer those questions, but free software companies do make money, and they’re becoming more successful every day. Red Hat, Inc. is one such company (see here and here).

What to Do Now

Thankfully, we don’t even have to wait for FOSS music notation programs to be written from scratch. There are already many options available. Check out this list.

The one that seems most ready for the big leagues is called “MuseScore.”

I know it’s not as glamourous, and I know it’s lacking features that “Sibelius” and “Finale” both have, and I know there “MuseScore” probably suffers from bugs and problems that “Sibelius” and “Finale” don’t have. But that’s not really the point. The point is that “MuseScore” is free software.

Where to start? Download and start using “MuseScore,” or use it alongside “Sibelius” or “Finale.”

You can also contribute to “MuseScore.” The easiest way is to donate money (see the link on their website that says “Donate.”) “MuseScore” costs no money, but think about how much you pay for “Sibelius,” and think what would happen if you and your friends all donated even a fraction of that amount to the “MuseScore” developers. On their donation page, it says they’re looking for only $7500 this year in total compensation for all the developers. (The “MuseScore” developers currently donate their time to the project–they work for no money). Imagine what they could do if they suddenly ended up with $100,000 in donations… they’d be able to hire full-time developers, maybe even some of those who used to work on “Sibelius.”
But more importantly than that, you can contribute to “MuseScore” by participating. You can become a software developer too! There are many things you can do to help develop “MuseScore”:

  1. Write programming code (obviously).
  2. Report problems and work with programmers to verify they’re fixed.
  3. Write documentation to help new users learn the software.
  4. Translate documentation and the user interface itself.
  5. Tell your friends about “MuseScore.”
  6. Participate in a marketing campaign.

You don’t need to be a programmer to be a software developer! You don’t even have to spend a lot of time to contribute something useful. Every bug report that’s fixed removes an obstacle for hundreds or thousands of other users!

Final Comments

I tried to make this article both accurate and accessible to non-experts. If you have any comments, questions, corrections, or suggestions, please leave a comment below so I can improve this article for future readers.

Python List Problem (now Solved)

I was programming in Python when I had a strange problem. My program stores data in a list, with a length of at least three. Indices 0 and 1 contain other data, but from index 2 and higher, the list contains dictionaries. The program needs to process each of the dictionaries, but only if there is something in the dictionary. I want a list_of_n values that are the index numbers of dictionaries with stuff in them.

Here is attempt one, and the output it produces:

def test(d = [0, 0, {}, {}, {'a':4}]):
   list_of_n = range( 2, len(d) )
   print( '!!! Y\'arr, we got ' + str(list_of_n) + ' here!' )
   for n in list_of_n:
      print( '... checkin\' out ' + str(n) )
      if {} == d[n]:
         list_of_n.remove( n )
         print( '--> removing ' + str(n) )
      else:
         print( '--> keeping ' + str(n) )
>>> test()
 !!! Y'arr, we got [2, 3, 4] here!
 ... checkin' out 2
 --> removing 2
 ... checkin' out 4
 --> keeping 4

What happens to 3?

———————–

Here is attempt two, which works:

def test(d = [0, 0, {}, {}, {'a':4}]):
   list_of_n = []
   for n in xrange( 2, len(d) ):
      print( '... checkin\' out ' + str(n) )
      if {} != d[n]:
         list_of_n.append( n )
         print( '--> adding ' + str(n) )
      else:
         print( '--> not adding ' + str(n) )
>>> test()
 ... checkin' out 2
 --> not adding 2
 ... checkin' out 3
 --> not adding 3
 ... checkin' out 4
 --> adding 4

———————–

Now, I admit that the second version is better than the first, and that I should have chosen it in the first place. But why doesn’t the first version work? What happens to 3?