The wtf-ological imperative

On the last day of Open Source Bridge I had a hilarious random encounter. I was taking some notes and making badges while listening to the lightning talks (which were great). A guy came up to me and gave me a post it note where he had written, “Wikipedia:” and then some links to articles on the categorical imperative, Karl Popper, and a couple more.

He said something like, “You might benefit from reading these, young lady.” Not sure what I said; something like “Ummm thanks. Why are you giving me this?” He said “I like SCIENCE.” I agreed that I also like science, asked his name, and shook his hand. Then I told him it was weird to call me young lady since I’m obviously old enough to be his mom. He went back to where he was sitting and the lightning talks carried on.

I really wondered what was going on. Had I ever met this person? Was he doing this with everyone or was he fixated on me for some reason? I looked at his web site. It didn’t seem odd. Maybe this was just a slightly socially awkward act, and not a Gift of Fear moment from a member of some odd corner of the manosphere. Maybe this is how Dark Enlightenment people try to make frenemies!

At some point later I was standing next to the same guy reading the unconference schedule. I asked him why he called me young lady and why he gave me those links. “Did I do or say anything in particular, at the conference, during my talks, blogging somewhere, that made you think I am in need of special education about empiricism?” He said everyone should have it. “Yes . . . but why me today? What is it? And why call me young lady? I’m 45. You look like you’re in your early 20s.” The guy said it was because of my tshirt. I was wearing my “End Patriarchy” shirt where the word patriarchy is in html markup as an “end” tag; a mildly nerdy feminist joke. He explained that he dislikes postmodernism. I said it was an odd thing to do. He then explained further that he calls every woman “young lady” and that even if I were 70 he would still call me that.

I had to leave the conference to catch my flight so missed out on this puzzling conversation, but I added as I went away that it wasn’t very polite and it seemed even not very empirical of him to classify me as young no matter what. I don’t always care about politeness, it isn’t that really; it’s that his action and the way he talked to me were mind-bogglingly condescending!

I thought about how communication generally happens. I have passed out flyers to people on the street or during rallies or events but usually not as a shorthand to tell them that they’re wrong in real life. Argument at that level generally happens in something that is framed as, well, argument, or public discourse, or has some other teaching, learning, or activist context. But perhaps my tshirt with its feminist joke is like an invitation to philosophical debate! Yes, I asked for it by wearing this outfit…. *snort* I think if this is going to be a movement, the enlightened ones need something more catchy than a torn pink post-it note. There should be some Kantian Chick Tracts for budding deontologists to hand out on the street to anyone who expresses some identity politics or looks like they might edit the Geek Feminism Wiki. Like creeper cards, but you just hand them to people who are sitting in a chair minding their own business! There could be a whole series of philosophical and political comic books that let feminists and other wrong headed folks know where we missed the logic train. It would be especially great as part of a cult to save our scientific souls! Like Less Wrong, but *even sillier*!

Maybe trading cards or a collectible card game so that I could whip out an Instant and like, counterspell the dude’s Karl Popper with a Paul Feyerabend card drawn by Katja Foglio. It really needs more elegance and fun to be playable!

In short I could not take this moment seriously and had trouble believing it even happened. So I honor that WTF by pausing a moment to record it for all time and make fun of it on the internet.

Chick tract

Mozilla's bug reporting, QA, and release processes

AdaCamp Portland was an amazing conference for feminist women in open source tech and culture. Not all, but many of the conference attendees are developers, system administrators, or do other technical work in open source software. I gave an informal talk meant to be an overview of some things I currently do at Mozilla. Lots of people came to the session! We all introduced ourselves going around the room.

To start off with, I showed a sample bug to talk about the process of reporting a bug, using Bugzilla, and practicing the skill of reading and understanding a bug report.

We looked first at Bug 926292.

Bugzilla couple

Let’s look at the life of this bug!

This bug was reported in October 2013 for Firefox 24 by someone new to bugzilla.mozilla.org. New users have basic permissions to file and comment on bugs. For around their first 25 bugs filed or commented on, they are marked “New to Bugzilla” to anyone with more permissions on the system. This helps more experienced users to know when they’re in conversation with people who are relatively new to the system. And, bugs reported by new users are automatically entered into Bugzilla with a status of “UNCONFIRMED”.

Our bug reporter was answered the same day by a community bug triager who used the “needinfo” checkbox to ask the bug reporter more questions. A bit later, in Comment 2, I was able to confirm the bug; I marked it NEW. Community members often jump in to do this from Bug Triage bug days, from our One and Done community taskboard, or because they watch the “Firefox::Untriaged” component. (Yes . . . you too can sign up to get email from Bugzilla every time a new bug is filed!)

Francesca Ciceri is currently working on bug triage and verification with our team as part of the GNOME-OPW internship program, doing similiar work to Tiziana Selitto who was an OPW intern last year! Both their blogs have good insights into what it’s like to approach QA in a huge and somewhat chaotic system like Mozilla’s.

In our example bug, I took a guess as to which product and component to add to the bug. This is like putting the bug into the right place where developers who work in a particular area will be likely to see it, and pay attention to it. I moved it from “Firefox” to “Core” and thought it may be something to do with the CSS Object Model. Picking the right product and component is tricky. Sometimes I look for similar bugs, to see what component they’re in. Sometimes I use Bugzilla’s Browse pages to skim or search through the descriptions of components for Firefox, Core, and Toolkit. Even after doing this for a year and a half, I get it wrong. Here, a developer moved the bug to what he thought was a better component for it, Core::Layout. (Developers also sometimes guess wrong, and keep passing a bug around to each others’ components like a hot potato.)

At this point a few developers explored the bug, and went back and forth with each other and the bug reporter about whether it had been fixed or not, exactly what the bug was, whether it is a Mac issue or a Firefox issue, and how to fix it. It was resolved as a duplicate of another bug in October, but the bug reporter came back to reopen it in February 2014. The bug reporter was polite but persistent in explaining their view, giving more details of the browser behavior, trying to find the bug in the very latest developer build (Nightly), giving a test case and comparing the behavior in different browsers. A developer submitted a patch, asked for code review. Related bugs were mentioned and linked. At least two new bugs were filed.

One important thing to note is that people working on QA and development tend to move very fluidly between using various Firefox versions. One of the best things you can do to get involved with helping out is to set up all four “channels” of Firefox with the capability to run them all at once with different profiles, and to start with new, clean profiles. In fact, we need better and more up to date documentation of how to do that on different operating systems, with screenshots! Here are some links that may help you set that up:
* http://www.callum-macdonald.com/about/faq/multiple-firefox-instances/
* https://developer.mozilla.org/en-US/docs/Mozilla/Multiple_Firefox_Profiles
* https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

OK, back to bug 926292!

Since I had worked on the bug and added myself to the cc field, I got bugmail about all these changes, and more or less followed a long. I often think that the collaboration that happens in bug fixing is very beautiful, and even fairly efficient!

In comment 29 you can see that code got committed to a mercurial repository, to “inbound”. From there, it goes through automated tests and is merged by one of the “sheriffs” into another hg repository, mozilla-central, where it will go into the next build of Nightly, which at that point in April, was Firefox 31.

Comment 30 suggests uplifting the patch to versions that will soon be released, to Aurora and Beta. Release managers started to get involved, commenting and asking the developers to formally nominate the bug for uplift.

At this point in my talk I explained a little bit about the “trains”.

Trains

The versions of Firefox under development advance on a 6 week cycle, from Nightly to Aurora to Beta to the main release of Firefox. In this rapid release schedule, Firefox 31 was Nightly, so Aurora was 30, 29 was Beta, and the release version most folks use was 28. The uplift request was refused so the patch “rode the train”. That means, if you were using Firefox 31 any time after the patch was merged into mozilla-central, you will see its effect. (It would also be fixed for Firefox 32 and 33 which are currently in use as Aurora and Nightly, since 31 is currently Beta.)

Our bug was marked “FIXED” when the patch was merged into mozilla-central. You can see near the end of its comments that I tagged the bug “verifyme” to put it into the queue of bugs that need verifying for Firefox 31. Many people see that list and work on verifying bugs including community members in our Bug Verification test days. I hope the story of this particular bug is over. I don’t have the number immediately to hand but I believe that over 1000 bugs are fixed for each version of Firefox over its release cycle. We can’t verify them all, but it’s amazing what we do get done as a team!

Other tools we looked at in my talk and the ensuing discussion:

Datazilla, which tests and measures Firefox performace: https://datazilla.mozilla.org/

Mozmill, a UI automation framework for Mozilla apps including Firefox and Thunderbird: https://github.com/mozilla/mozmill

Socorro, or crash-stats, where QA and other teams keep track of crashes in Firefox and other Mozilla products: https://crash-stats.mozilla.com

The ftp directories where Firefox builds and build candidates are stored: ftp://ftp.mozilla.org/pub/mozilla.org/firefox/candidates/

The mercurial repositories or “the tree”: http://hg.mozilla.org/

DXR, a nifty tool to search Mozilla’s code: http://dxr.mozilla.org/mozilla-central/source/

TBPL which shows the test results for every commit that’s merged into different branches https://tbpl.mozilla.org/

And a quick view into Mozilla’s Jenkins continuous integration dashboard which you can only see from our VPN, just to give an idea of the work we do when Firefox is in Beta. As a particular version of Firefox advances through rapid release, QA pays more attention to particular areas and uses different tools. We have to know a little bit about everything, be able to reproduce a user’s bug on many different possible platforms, figure out which developers may be able to fix a bug (or whose commit may have caused a regression or crash).

It was a lot to cover in an hour long talk! I wanted to pilot this informally as a test for doing a more formal talk with slides.

It represented fairly well that QA covers quite a lot of territory; it’s complicated and interesting work.

Taxis who refuse wheelchairs

I enjoy coming to Portland and taking the awesomely accessible train from PDX airport to downtown, but I got in a little late for my conference dinner, so, figuring it would save time, I headed to the taxi dispatch line to get a cab. I was traveling by myself, with my manual Quickie Ti wheelchair and a backpack.

The taxis were about halfway up to the first taxi position, and the dispatcher motioned for me to get into the first one in line, a Union Cab. The driver shook his head at her, then at me as I asked him to open the trunk of the taxi. “I just need you to open the trunk, the wheelchair folds up and I will put it in.” He refused to take me as a passenger. The dispatcher was angry with him, but he ignored her and pulled up a few more feet, taking another passenger who arrived at the stand after me.

The second driver in line was in a Green Cab. He had a big white bushy beard and was wearing sunglasses and a large black floppy hat. He looked right into my eyes, shook his head, and waved his hand dismissively as I asked him to open the trunk of the taxi. The dispatcher also was unable to persuade him to open his doors or trunk. That guy pulled up and let someone else and their luggage into his cab.

The third driver was outraged at what he had just seen. He got out of the taxi, and helped me put my backpack into his trunk. I took apart my chair, which has quick release wheels like some bicycles, and folded down the seat back for us both to put the pieces into the trunk of the taxi. This driver asked the dispatcher from the airport taxi stand to report the first two drivers. I said that I would write down their information and report them. I got the cab companies and numbers, but not the license plates. As we pulled out of the airport, we actually caught up with the two cabs that had refused to take me as a passenger, so I was able to double check their cab numbers.

The nice driver was from Broadway Cab. He pointed out the phone number for the City of Portland complaint line, and was very supportive and helpful. He said that to his knowledge, the first two drivers have done this in the past because they think that wheelchairs will take too much time to deal with. Talking with him was so heartening, a good reminder that there are plain old decent human beings around who will treat me like a fellow person although we are strangers.

From my conversations with other cab drivers and bus drivers, there are other assumptions that they tend to make about wheelchair users or people who have a visible disability. Drivers may be angry at me before I even get into a cab or bus, because they are afraid I will take up their time, be unable to get in or out of the cab, may somehow injure myself and sue them, or whatever. If I try to hail a cab on the street, it usually doesn’t work. I have to ask someone else, even a total stranger, to hail the cab while I hide out of sight. This is part of why services like Uber and Lyft work well for me, while I’m lucky enough to be able to afford to use them. I can leave my house with my manual wheelchair, travel, and be confident that I won’t get stranded by bigotry.

As it was, I only had wait a few minutes for a nicer cab driver, and things turned out fine. However, I do get angry about cab drivers who won’t stop for me. The prejudice that I get isn’t going to get any easier for me as I get older, so I try to take the time now, while I have the energy (and the privilege) to report discriminatory behavior.

I just reported them through the City of Portland’s online complaint form and to the cab companies. The city emailed me back immediately to apologize and to let me know they were addressing the complaints. Both Green and Union took my phone complaint and said they would investigate and likely reprimand the drivers.

Since I benefit daily from the activism of people who hard core chained themselves to buses in the dead of winter in the 70s and 80s, I figure I can spare an hour to try to make sure that current ADA law is enforced. I also think of places like New York City where activists are fighting hard to get the city to make all taxis accessible to more wheelchair users.

Editing Wikipedia 101 session from AdaCamp

After the Welcome and introduction and first session of AdaCamp in Portland I joined Netha Hussain and Rosie Stevenson to facilitate a session on editing Wikipedia. Everyon in the room introduced themselves and talked about their connection to open knowledge, information, and wikis. There were several people who had never edited Wikipedia.

We started by briefly describing what a wiki is. It is a collection of documents that are editable by multiple people; usually each page has a revision history and some transparency around who made specific edits. So, you can see who wrote which bits in a document with multiple authors. Often, a wiki page has words that are linked to other pages in the wiki. We accepted that we were mostly talking about Wikipedia here and acknowledged that “what wikis are” and their philosophy has a rich, interesting history.

Netha talked a bit about her work adding useful information from medical textbooks and journals which she started doing as a medical student.

Rosie jumped right in to an example of the kind of work she does; taking a biography of a notable woman who has a Wikipedia article in a language other than English, and creating an English language Wikipedia article about that woman. She had an example prepared. “I like that there’s a photo of her and she’s dead,” Rosie said enthusiastically. I chimed in with, “I *love* dead people!” We tried to explain why we love dead people. It is because editing the biographies of living persons is often a lot more contentious than writing about people who are not around to mind that you’re writing an encyclopedia article about them.

We paused to discuss what “notable” meant. There was not time to get into it, but Notability as defined by Wikipedia policies is an often contentious point, and often applied with gender and other biases. It is therefore important to try to establish the notablity of your subject, whether that’s a person or some other topic, by including good references that show they are important or significant.

Rosie’s example was Ángela Figuera Aymerich. She created an English language page for Figuera Aymerich. We all helped go over a brief tour of the page editing view. Rosie knows a little Spanish and uses Google Translate to read the source page. She made a very basic page with one sentence. We pointed out edit summary box where you can describe what you’ve just done.

Then we added a reference. Rosie did a search to find a book that talked about Figuera Aymerich and found one in Google Books. She used an online tool to format a nice looking Google Books citation for Wikipedia, then copied and pasted it into the edit page.

A new editor asked if it was ok or if it is considered rude to edit someone else’s sentences. Someone else explained it is not rude, but can take some tact. Often, men don’t pause to ask themselves that question, they just jump in and change things around. This is a good example of gender differences in the ways we begin engaging and the assumptions we make about interaction and collaboration.

This led us to do a quick tour of the article’s Talk page. Every article in Wikipedia has a “meta” page called hte Talk page, where people can discuss what might or should go into the article.

We then touched on adding images. Rosie advised always using images from Wikimedia Commons, because they will be licensed correctly for use in Wikipedia(s). If you have a properly licensed photo or image you want to use that isn’t there, you can go through the image upload wizard which will walk you through adding it to Wikimedia Commons. Then, use that version in your Wikipedia article. We did this all a bit too fast to follow.

There was some discussion of Categories, what they mean, how to search Wikipedia for articles similar to the one you are about to add, to see what categories it includes.

Categories that identify gender or other identity based information, such as “Women writers” or “Women writers from Bilbao” and so on, can be contentious topics. I talked a bit about how this is often exactly the sort of information I’m looking for that I consider valuable and important. But other editors or admins sometimes label this information as “sexist” or irrelevant, undoing important work.

Some of the new editors in the room wondered why anyone would be “a deletionist” so we discussed that a little bit.

It can be a good starting point to edit existing articles, either from a category like Articles needing cleanup or from some area of your own expertise, a book you’re reading, or something you’re learning about for which you have good sources that you can cite.

It was a good session! Several of us had lunch together and talked more about Rosie’s passion for translating articles from one language into another! She spoke very movingly about the politics of translation, especially as it is relevant to women’s history. If we don’t put this information online, it can more or less disappear from public awareness.

Tiny scooter test run

Last week I got a new tiny mobility scooter. It is 35 lbs and easily disassembles and folds. Here I am out on my birthday at Pier 39 after a ferry ride with friends!

Liz travelscoot pier39

It is a TravelScoot Junior Deluxe, ie, the version for short people or children, and with a lithium ion battery. About a third of the cost of the scooter is in this battery. The “Junior” size is pretty good for me. I’m 5 foot 3 which is at the top of the recommended height. I went with the smaller size figuring it would be easier to handle while I was folding it, and also because the Junior size has 2 inches less width than the regular model. So, in theory I can fit through doors 24″ wide, same as with my manual wheelchair.

Assembly of the scooter was easy. It took under 10 minutes. The assembly instructions were slightly different from the manual shipped with the TravelScoot Junior. There was a little supplement that showed how to position the battery upright in the back for the “Junior” version.

The battery fastens on with velcro and is easy to plug in and unplug if you have good dexterity. I am mostly doing this while sitting on the ground — or I can do it leaning over from the scooter seat. My only quibble with battery setup is that I can’t charge the battery without taking it out of its tray, because the charging port is blocked by the side of the tray.

I put a Crampbuster on the throttle so that I can control the scooter’s speed without constant gripping, which would be hard on my arthritic hands.

Comments on driving the TravelScoot Junior:

It coasts down hills. The brakes work fine. Easy to drive. Reverse works well, and is nice and fast. Acceleration is slow whether you are reversing or going forwards, but not too slow. This takes getting used to. My phone’s speedometer hovered around 4-5mph as I zoomed around. It is a little bit tricky to match paces with a walking person. To go slower than the max speed, I have to squeeze the throttle exactly right. If I let up the pressure the scooter slows down.

There is no parking brake so if I pause to mess with my phone, I need to park carefully. This is quite annoying on the bus, but I can still handle it. It means that in order to ride the bus with any ease I will need to rig up some kind of parking brake!

There is a slight tendency to “drift” or stutter sideways a little bit when going fast on a bumpy street or sidewalk. The undercarriage clearance is fantastic. I could probably hop a low curb in this. (Slowly)

I would like to customize or get a new back support as it is a little too high up and far back to support my low back, which needs it! It may be possible to just swap out the entire seat. It is a standard pole with clamp assembly, like for a bike seat.

So far I’ve put this in the back of cabs a few times. I like that I don’t have to ask a random taxi driver to help me lift a 95 lb machine into his trunk. Instead it is something I can easily lift myself.

It would be good if I made a special padded battery carrying case, like a battery messenger bag, for when I need to put this into a car. TravelScoot owner manual suggests a padded lunch bag, but the battery I have is too long/wide for a lunch cooler bag. Here is a good craft project for my hackerspace. If I make a battery carrying case I’ll post its design on my blog!

I have also successfully grocery shopped with two backpacks and a large bag. One backpack hung off the seat back, another from the handlebars (which is awkward and I don’t really recommend it) and the large heavy bag in the red canvas shopping tray below the seat. That thing is just fabric, and attached with velcro, but I can tell you it carried about 30 lbs of cat litter and cat food with no trouble at all.

This scooter makes people stare, and ask questions, much more than my usual mobility scooters or manual wheelchair. I need to carry small flyers with an FAQ.

For the FAQ:

* “Does Medicare pay for that” (People on the street want these for their older relatives.) My answer: Probably not. And I don’t really know. I have never yet been on Medicare.

* How much did that cost? (An awkward question. I answer by saying “You can get a mobility scooter from about $700-2500” That way avoiding standing around at a bus stop admitting I just dropped 2K on this beast. I did not mind so much saying that I bought my old Zipr for $700. Class guilt . . . )

* Is that electric? What the hell do you think, I make it go with the power of my mind????? Oh, people.

* How far/fast/long does it go? Several miles, all day at least, 4.5 miles an hour, charge the battery by plugging it in overnight.

* Can you put that in a car? Yes you can and it easily folds up.

* How heavy is it? 35 pounds.

* Where do you get them? (Let Me Fucking Google That For You) Oh ok. *sigh* Travelscoot.com. Someday I hope these things are just in every big drugstore, Target, Walmart, etc. Or just in bike shops and you can test drive them there!!

* Yes, it has reverse. No, it does not beep. No, I really don’t want it to beep. Do you beep when you take a step backwards? Well then.

* What if it breaks? Yes. What if. That’s the million dollar question. You better learn some things about electronics or cultivate a relationship with your local electric bike/scooter repair shop. The thing has a warranty, which I will probably be exploring at some point . . .

* Not asked but should be on the FAQ: You need to have good balance, ability to squeeze the hand brakes, and be able to transfer independently to use this. 3 wheels is not usually a good option for an elderly person as you can easily tip over.

There is room for competition for scooters like this that have a few more features but are still stripped-down, lightweight, and easy to understand for maintenance and repair!

There is a fantastic blog with Travelscoot reviews by Elizabeth Fisher that has reviews and photos by many people using their TravelScoots.

I put up some unboxing and assembly photos. Feel free to take a look at all my photos on Flickr with the travelscoot tag .

In short: this is a GREAT scooter if you have 2K lying around and you are a very nimble person who for one reason or another can’t walk very well. To drive it, you need good balance and good hand control (brake squeezing especially). It could be possible to modify a travelscoot with a custom seat to meet your particular seating needs!