Feeds:
Posts
Comments

Are you on IRC? Are you at FUDCon? Do you have a project that you want to happen in Fedora?

The Fedora Board is working on choosing goals that each individual member wants to champion and bring to fruition this year in Fedora. So if you have some idea that you think a Board member’s help will make work better, grab your nearest Board member[*] and ask them to bring it up on their Sunday meeting. One of them may take it up as something they think they can work on and help accomplish in the coming year.

[*] Board members you may see wandering around at FUDCon:

  • Jared Smith
  • Toshio Kuratomi
  • David Nalley
  • Peter Robinson
  • Jon Stanley
  • Christoph Wickert

Kitchen 1.1.0 release

As mentioned last week a new kitchen release went out today. Since last week some small changes were made to the documentation and a few changes to make building kitchen easier were implemented but nothing has changed in the code. Here’s the text of the release announcement:

== Kitchen 1.1.0 has been released ==

Kitchen is a python library that brings together small snippets of code that you might otherwise find yourself reimplementing via cut and paste. Each little bit is useful and important but they usually feel too small and too trivial to create a whole module just for that one little function. However, experience has shown that any code implemented by copying will inevitably be shown to have bugs. And when you fix those bugs, you’ll wish you had created the module so you could fix the bug in one place rather than two (or five.. or ten…). Kitchen aims to be that one place.

Kitchen currently has code for easily setting up gettext so it won’t throw UnicodeErrors in corner cases, compatibility modules for different python2 stdlib versions (2.4, 2.5, 2.7), a little bit of iterators, and a whole lot of code for unicode-byte string conversion. In addition to the code, kitchen contains documentation that explains some of the common problems that arise when dealing with unicode in python2 and how to fix them through changes in coding practices and/or making use of functions from kitchen.

The 1.1.0 release enhances the gettext portion of kitchen. The major enhancements are:

  • get_translation_object can now be used as a drop in replacement for the stdlib’s gettext.translations() function.
  • If get_translation_object finds multiple message catalogs for the domain, it will setup the additional catalogs as fallbacks in case the message isn’t found in the first one.
  • The gettext and lgettext functions were reworked so that they guarantee that the string they return is both a byte str (this was present in previous kitchen releases) and is a valid sequence of bytes in the selected output_charset. This should prevent tracebacks if your code decodes and reencodes a value returned from the gettext and lgettext family of functions.
  • Several fixes to the way fallback message catalogs interacted with input and output charsets.

For the complete set of changes, see the NEWS file.

I’ve just added a new activity to the FUDCon Blacksburg page, a Try my keyboard! event. This is for people who realize that they spend hours and hours of their day typing into a keyboard, clicking with their mouse, drawing with their graphics tablet and… they love it! If you have a favorite keyboard, mouse, trackball, etc that you would like to give other people the chance to try out for an hour or so, consider bringing it to FUDCon Blacksburg. We’ll organize a space for people to get some hands on feel for the hardware you bring, let you talk about what makes it special, and let you interact with other people as crazy about the way their computer keyboard/trackball/input device feels as you do!

If you are going to be bringing some hardware for people to touch to the event, consider adding it to the activity’s page so that I know it won’t just be me and a couple keyboards in there ;-)

[EDIT]For those who are curious, kitchen is a python module for miscellaneous code snippets. Things that people end up reimplementing via cut and paste because they seem to be too small to write a module for but are so useful that they need them in many places. Currently, it has code for i18n, compatibility modules for different python2 stdlib versions, a little bit of iterators, and a whole lot of code for unicode-byte string conversions.

Over the recent vacation I put the finishing (code) touches on a new kitchen release. I’ve scheduled the release of this code for next week on January 10, 2012. This is mainly since I just added the kitchen module on transifex.net and I’d like to see if any translations show up before next week. If anyone finds any bugs in the code on python-2.3.1 through python-2.7.x, please bring them up on the mailing list, on irc.freenode.net (I hang out in #fedora-admin and #fedora-python), or in the kitchen bug tracker so that I can address them before the release date.

The beta code is available from fedorahosted.org at: https://fedorahosted.org/releases/k/i/kitchen/kitchen-1.1.0b1.tar.gz

or from the bzr repository:

  bzr branch bzr://bzr.fedorahosted.org/bzr/kitchen/devel

The major changes are in the kitchen.i18n module. Previously, kitchen.i18n.*Translations objects guaranteed that they would return byte str when requested (via gettext(), ngettext(), lgettext(), and lngettext() methods) and unicode strings when requested (via ugettext() and ungettext()). The new code makes the additional guarantee that byte str‘s that are returned are valid in the requested output charset.

Here’s an example of the old behaviour vs new behaviour:

   >>> from kitchen.i18n import get_translation_object
   >>> translations = get_translation_object('kitchen')
   >>> b_ = translations.lgettext
   >>> translations.set_output_charset('utf-8')
   >>> translations.input_charset = 'latin-1'
   >>> # This would be: 'Café does not exist in the message catalog'
   >>> print repr(b_('Caf\xe9 does not exist in the message catalog'))
   # Old behaviour =>
   'Caf\xe9 does not exist in the message catalog'
   # New behaviour =>
   'Caf\xc3\xa9 does not exist in the message catalog'

   # Example 2: with wrong input_charset =>
   >>> translations.input_charset = 'utf-8'
   >>> print repr(b_('Caf\xe9 does not exist in the message catalog'))
   # New behaviour yields valid utf-8 bytes even when input_charset is wrong =>
   'Caf\xef\xbf\xbd does not exist in the message catalog'

Notice that this is not a magical panacea. The second example, shows that if input_encoding does not match the byte encoding of the strings that are given, the output string will be mangled (replacement characters or garbage characters). However, all the bytes in the output string will be valid in the chosen encoding so you won’t have to worry about exceptions if you attempt to transform the string again.

The other major change is that the kitchen.i18n.get_translation_object() function has been rewritten to be a drop in replacement for the stdlib’s gettext.translations(). The behaviour changes from that include the code now attempting to discover translations in every message catalog that it finds in the paths given to it. Additionally, those code changes lead to bugs in the *Translations classes fallback code being discovered and squashed.

See the NEWS file for other changes.

The past few weeks I’ve been coordinating a new release of the Fedora Account System(FAS). Since FAS is something used within Fedora but not a whole lot of other places, development is usually driven by a relatively small handful of people: Ricky Zhou, Mike Mcgrath, and I. This release saw a large number of other contributors which has been very good as the three of us have been increasingly pulled into other projects so our time for FAS has steadily decreased.

  • Adam M. Dutko fixed several long standing bugs and feature requests
  • Luis Bazán updated several pieces of the UI
  • Sijis Aviles switched us from signing the CLA to the new FPCA
  • Pierre-Yves Chibon created a new captcha to replace the universally hated one that we were employing
  • Jun Chen added a means to clear a user’s ssh key
  • Nick Bebout started the work of removing copyright phrase-ology that we no longer want to use (“All rights reserved”) and tracking down which people needed to agree that we could switch licenses from GPLv2-only to GPLv2-or-later
  • Jim Lieb contributed code to make handling of languages easier and made FAS more configurable for use in other sites.
  • and for the first time in several releases we coordinated our release with the Fedora Translation Team on transifex so that the translations they contributed could go out with the first release instead of when a subsequent bugfix was released.

So let’s take a brief tour of some of these new features.

More Translations

Although we’ve been using transifex to manage translations for FAS for a while now, I hadn’t really understood how to leverage the full power of the Fedora Translation Team to get translations.  Thanks to some prodding by pingou, I got in touch with the translation team this time around and arranged for a string freeze before release during which they worked hard to translate FAS into their native languages. Thanks to transifex, I can show you this nice graph of their hard work:

Top translations: fas » faspot Full graph of translation stats

Clearing SSH Keys

When Fedora Infrastructure recently made the decision to invalidate public ssh keys because we had no way to tell which users might have hosted their ssh private keys on other projects servers which had been attacked and infiltrated, one of the options was for a user who didn’t actually need to use ssh to simply remove their ssh. Unfortunately, the web interface didn’t include the ability to do that so user’s who wanted to go this route had to contact one of the admins and have them remove it for them manually. Thanks to Jun Chen, users can now perform this step for themselves:
ssh clear key button

New Captcha!

There have always been many times more accounts in FAS than there were active contributors to Fedora. In itself, this wasn’t a problem. However, at some point, spammers started signing their bots up for Fedora accounts as they found that with that, they could write to the Fedora Wiki. To combat this, we added a captcha to the signup process. However, we quickly found that the captcha we added was too hard. Many people came to us to complain that they could not answer the captcha successfully. Thanks to pingou, we have a new captcha which displays a simple math equation in a much less distorted image. Writing the correct answer to the equation is all you need to do.
New captcha

These are just some of the more user visible changes. If you’re interested in the more behind the scenes changes (SELinux fixes from ricky, password strength checking, and more), check out the changes in FAS’s git repository.

Fedora Infrastructure was an early adopter of the Turbogears web framework. As such, we have a large number of applications that were built targeting the TurboGears-1.0.x/1.1.x release series. Unfortunately, while the upstream TurboGears project has released new features, optimizations, and other enhancements, this work has had to be done in new releases which aren’t backwards compatible with TurboGears-1.1.x. So we’ve been faced with the task of porting our apps to the newer releases for some time… and proven remarkably success at procrastinating on that :-) .

Well, thanks to the efforts of pingou we’re starting to take steps to fix that. He’s gone through the Fedora Elections application and ported it to TurboGears2.x. This is a great step that shows that there’s no blockers to getting all our apps running with TG2 (our custom auth layer was a big worry before this work was done.)

We still have four more applications to port that are more complex than elections but now we have some experience to show what needs to be done. Having an idea of what we’re in for is great for breaking through the mental reservations about starting the process.

If you see pingou online, be sure to thank him for a job well done!

It’s been asked a few times so just putting the answer out onto the intarwebs:

Q: When are we going to hold the election for the Fedora 16 release name?
A: Sometime soon. We’re behind schedule because we (the Board) did the pre-filtering of names for easily found collisions on March 22 instead of on March 8th. The names have been submitted to Red Hat legal and we’re currently waiting on them to give us back a list of approved names. Once that’s done, jsmith will add an election to the Fedora Election App and announce that we’re ready for people to start voting. I’ll put in a disclaimer here that you’ve probably all heard: “Past performance is no guarantee of future results” but judging by the time we normally allot to going from submission to legal to having the election, I’m hoping that we’ll be able to start the voting at the end of this week or the start of the next.

Best Lightning Talk

At about 8:30 into this video, you’ll see a great lightning talk: PyCon 2011: Friday Afternoon Lightning Talks
It struck me on several levels.  It was told by an excellent straight man.  It had a great story.  It was gently deprecating.   In short it was very entertaining.
But beyond that, it also highlighted one of the core philosophies of open source that sometimes gets lost in mailing list threads about user base and popularity.  Open source is powered by people wanting to scratch their own itches.  Having a popular product is fun but people will work on something that only has a small amount of users as long as it is a good base for them to do what they want.

Dining room of typical house.  March, 2011 8:30PM PST

Phone:  Ring.  Ring.  Ring.

<Toshio picks up phone>

Toshio: Hello?

BoA_human1: Hello, this is Lewis at Bank of America Home Loans, calling about your account.  Can you give me the last four digits of your social security number to verify your loan?

Toshio: Can I call you back to verify you are actually from Bank of America?

BoA_human1: Yes.  You can call 1-800-669-0102.

Toshio: And what’s your name again?

BoA_human1: Lewis.  But you can actually talk to anyone here and they’ll have this information and be able to talk to you.

Toshio: Thanks.

<Toshio hangs up the phone.  Dials 1-800-669-0102>

BoA_automated_system:  Thank you for calling BAC Home loan servicing LP, the Bank of America company that services your home loan.  Para español, por favor, pressione número uno.  We are a debt collector.  Please enter or say your account number.

<Toshio enters in the digits of his account number>

Phone:  Beep beep beep beep beep.

BoA_automated_system:  Okay [digit][digit][digit][digit], is that right?

Toshio: Yes.

BoA_automated_system: Are you an agent calling on behalf of a customer

Toshio: No.

BoA_automated_system: If you are calling to confirm if your payment has been recieved press 1 now.  If you would like to pay by phone press 2 now.  If you are calling to tell us when you will make a payment press 3 now.

<Toshio ….  Pause… Finally hits star>

BoA_automated_system: Do you want the main menu?

Toshio: yes

BoA_automated_system: Ring.  Ring.

BoA_human2: Hello, Home Retention, this is Malik can I get the last four digits of your social security number to verify your identity?

Toshio: [digit] [digit] [digit] [digit]

BoA_human2: Thank you.  I see that your account can only be serviced by the advocacy department and their office closes at 5:00 PM Pacific standard time.  I can give you their number to call back tomorrow.

[...]

 

Date of first contact with HUD approved housing counselor: June 2009

Date of initial packet for eligibility for the Home Affordable Modification Program sent to Bank of America:  November 2009

Date for three trial payments: December 2009, January 2010, February 2010

Date that Bank of America sent us the “Modification Agreement” with new loan terms to sign according to the date on their letter: 19 August 2010

Date we received the “Modification Agreement” from FedEx: 23rd of August, 2010

Date we had to return it by: 29th of August 2010

Number of days spent on the telephone with Bank of America and HUD counselors trying to get answers to why there was a “Deferred Amount” of $11,852.52 : 3 days

Number of unique (does not count being transferred back to a previous phone number) Bank of America phone numbers  transferred to in those 3 days: 23

Number of unique Bank of America Departments contacted by calling those numbers: 9

Date I called Bank of America to find out why we hadn’t gotten new payment coupons or a copy of the “Modification Agreement” that Bank of America had signed: December 2010

Story I got from Advocacy at Bank of America: “The underwriters have to look at the agreement and approve it.”

Information I got from talking to the company in charge of sending and receiving  the Modification Agrement packets whose number was the one given on the Bank of America packet: “The packet you received was the final agreement.  You’re just waiting for Bank of America to sign it and send you back the “Executed Agreement”.  The underwriters have already looked at it so they just need to send you a copy.”

Story I got from Advocacy at Bank of America when I gave them the new information: “It’s with the negotiator.  We’ll have them call you within 5 to 10 business days”.

Date of that phone call: end of December 2010, just before Christmas.

Today’s date: 8 March, 2011

 

Need more Memory

For those installing the Fedora 15 Alpha into a VM, just a quick note — virt-manager currently defaults to 512MB of RAM for its VMs.  This isn’t enough RAM to boot the Alpha installer.

[11:37:59] <wwoods> F15 will need at least 640MB
[11:38:02] <wwoods> maybe 768
[11:38:42] <wwoods> I have a fix for that in the works but it’s kind of invasive and may not be ready ’til F16

Symptoms of trying to boot with too little memory may include a kernel oops when installing the rootfs.  Hope this helps people avoid head scratching later :-) .

Older Posts »

Follow

Get every new post delivered to your Inbox.