Teething troubles
Par jd le dimanche, décembre 20 2009, 11:59 - Free Software - Lien permanent
It's not that often that I start something from scratch. It's an amazing feeling to start a new project, to start writing something new. I like that. It's creation, it's an artistic part of our computing stuff. I feel like a code artist.
And what I like even more is that little feeling that you are going in an unknown land. Some area in this tech world where nobody ever came before you, or only a few pioneers.
That the sensation I got starting to using Cython, Python 3 and various other tools. I just spent half of my time trying to fix problems, rather than working on *my* code. Problems in autoconf macro not knowing Python 2.6 or Python 3.1. Problems and limitations in Cython. And problem in Python.
That last one was a hard one. I'm still a beginner in the Python world: I barely know anything. And I was trying to use something nobody never did: building an embedded Python with a set of built-in modules.
I spent hours trying to find why one type of module importing was badly failing. I finally found the answer thanks to a guy. who has the same problem A guy ? No. A pioneer. What do I say? A hero. He's been my week-hero! Thank you Miguel Lobo because you found the bug I chased for hours and because you even reported it as issue 1644818, including a patch! How not damn wonderful is that?
I will not bore you with the technical details of that bug, since nobody cares. Nobody cares, even the Python guys, since that bug has been opened for 3 years, and nobody even reviewed in that time. I found an old thread about that bug where some guys were wanking about how they should do the review, because Miguel pushed for several weeks to have a review, back in 2007.
But that bug was in my way. I had to do something. So I prepared my mail reader, mounted my web browser and here I was for a uniq quest: getting a Python bug fixed.
At that point, if you did not stop reading earlier, you might get very excited. Don't be, spoiler, it's still not fixed. You'll have to wait the end of the season and see all the episodes I'll have to write to get the end of the story!
Let's continue.
I had to create an account on the Python bug tracking system. That was a trivial task for a man like me (you bet). Then, I launched a verbal attack, something you rarely see in a bug tracking system. Something I knew would awake any developer caring about their software.
Julien Danjou: Is there any chance to see this *bug* fixed someday?
I had the deep feeling that my quest was starting here. How many days would I have to wait until I get an answer? Time was passing. Minutes were ticking while I was waiting, sat in a comfortable sofa in a softly lighted room. It seemed like all my life was shorter than the delay I had to wait to get an answer.
After waiting for hours, suddenly, and only 15 minutes later, I got an answer:
Martin v. Löwis: Please ask on python-dev. I may be willing to revive my five-for-one offer.
Martin? Don't know that guy. Who is he? Who is he like? Will he fix that bug? What is this offer? So many question without an answer. But he asked to ask on python-dev, and I said: challenged accepted! I will write a mail to python-dev to get that bug fixed.
Which I did. I sent a short (but well written you know, I made efforts) "WTF?" to pyhon-dev.
And then the guy asked me to review 5 bugs so he will review and fix this one. And this is how I said that he was pissing me off for blackmailing me to fix a bug that was its "duty".
Therefore, this is the end of the story so far. Will that bug be fixed some day? There's a hope, because another guy jumped in and took the bug assignment.
To be continued.
My conclusion about all that story: that is a little rude to start something new, with new tools, and get quickly into teething troubles. It's even more harsh to enter a community because you just found bugs, and be not very well received when you ask to apply a 10 lines long fix somebody wrote 3 years ago to fix it.
I'll probably still use Python :-), but I get a darker image of its community now.
Commentaires
Just wondering: What are you trying to
use Python for?
I sympathize with your irritation, but I would ask you to think a bit more about the situation. Yes, it's a ten line fix; so are many others. What does it break? Does it cause new problems? Does it change any behavior? Given where it is and what it changes, the answer may well be "yes", and I think this was clearly stated in the followup e-mails.
python-dev strives to produce quality software, and part of that is not causing new bugs while fixing old ones.
That having been said, python-dev is overextended these days, which doesn't help.
--titus
It's so much better to close bugs without even giving a reason, then marking it wontfix when the bug is reopened, still without a reason, and still fail to give a reason when asked for one, again... and then also ignore other users adding to the bug. http://bugs.debian.org/cgi-bin/bugr...
For some reason, the core python community has always come across to me as a bunch of arrogant people that would not take any criticism without framing you like an idiot first. For that reason, I've never posted to a python list, nor reported a python bug outside of Debian. Which is funny, because since I've never interacted with the core python community ever in my life, I have no reason or personal experience that makes me say that they are bad.
It's just some impression I have constructed out of I don't know what. Maybe it's just the way python insults you when it's wrong (sys.stdout has different encodings if it's on terminal or on a file, which easily gives you a utf8 backtrace which when googled gives lots of answers like "if you get this backtrace you're an idiot"), or the major design issues in the python standard library (datetime.datetime and timezones? configparser?) or annoying everyone with TIOOWTDI and then having two versions of at least StringIO and Pickle and urllib in the standard library. I don't know. But still, python's a decent tool to get the job done once you get to know its quirks.
Such quirks are not documented, and if you try to raise a concern about them you'll be treated like an idiot because obviously everyone knows them except you. Sometimes one is documented like a cool thing (for x in range(10): do yield lambda x=x: x**2 -- I do not think that is a cool way to do closures, I think even javascript's more elegant in that).
But still, there's worse things to get a job done.
Enrico, I totally agree.
jd, you always was a great storyteller, I like this one