Wednesday, February 12nd, 2014

Saying Goodbye To Python

This post is long overdue; this isn’t a declaration of intent (any intent was long ago made real), just my reflection about my own path. I left the Python world a long time ago but I never took a chance to say goodbye.

While I had moved on from Python years ago, I felt a certain attachment to it well past then, not quite admitting to myself that I wasn’t coming back. When my proposal for PyCon 2013 was rejected I was frustrated (it was going to be a fun talk!) but for some reason that made me fully realized that I wasn’t part of the Python community anymore.

Python was the first — and I sometimes wonder if the only — programming community I was part of. Coming to Python was a conscious choice. In college I was interested in Scheme and Smalltalk. High-minded languages with interesting ideas, but hard to find practical uses. Scheme was always too underserved by its libraries and sparse academic community. In contrast Smalltalk was productive — it was built by and for people who loved to build things. (More credit here should probably go to Dan Ingalls than Alan Kay — I can sense in Dan Ingalls’s work a real passion for making things, and a pure but unproductive language would not have satisfied him.) But Smalltalk was and is a world of its own. It was culturally and technically pre-internet, pre-open-source, pre-online-community. And despite all the great things about the Smalltalk environment and language it couldn’t fulfill these then-new potentials, even as it tried to adapt. (I wrote a couple posts about this, intended as a sort of sympathetic explanation of why I couldn’t stick with Smalltalk: Where Smalltalk Went Wrong and a followup.)

At the end of my college career (1999ish) I consciously looked for a new home. I flirted with Perl, C, but knew they weren’t for me. Somewhere along the way I came upon Python, and it was good enough that I didn’t look for anything better. I can’t say I fell in love with Python like I had with Scheme and Smalltalk — Scheme was like an opening up of the world after going far beyond what anyone should ask of GW-BASIC, and Squeak/Smalltalk was a deep mysterious world, like coming upon the ruins of an ancient and advanced civilization. Python in comparison was practical — but I wasn’t in the mood at that time to discover, I wanted to build.

And I built a lot of things in Python. I was doing workaday web programming and my enthusiasm went more towards building tools to build stuff than in the building itself. I did build some cool products in those days, not just libraries, but for some reason it’s only the smaller units that I was able to push out. And I found a community in Python.

And I built. Back in the days I contributed to Webware, what felt like a completely different generation of web development in Python than today. I wrote SQLObject, my first foray into a oh-shit-people-are-using-this-I’m-not-sure-how-I-feel-about-that library. But SQLObject explored a lot of metaprogramming concepts that were quite novel in the Python world at that time. At the same time maintaining it felt like a terrible burden. It took me far too long to resolve that, and only once interest had died down (in no small part due to my lack of attention) did I hand it over to Oleg who has been a far more steady hand. This would be a pattern I would unfortunately repeat. But if SQLObject helped the next generation be better that’s good enough for me.

Later came WSGI which excited me with its subtly functional basis. I built a whole web framework toolkit (or a framework for building web frameworks?) in Paste. Few people really understood what I was trying to do with Paste — at times including me. Some people like Ben Bangert were able to see the principles underneath the code, and get them out into the world in the kind of usable state that I intended to enable. (And along the way I sometimes felt like I was doing the same for PJE.) Python web frameworks were a mess back then; ultimately reaching for the crown using a monolithic approach was a more successful technique than trying to build bridges as I attempted with Paste. I’m still not sure what lesson to take from that. Not a general lesson, but more understanding the landscape. And understanding what you can bring to a problem, and who you can bring with. I feel like I’m only now really understanding the importance of vision combined with a diverse group of skills and perspectives, and I have even more to learn about how to actually assemble and coordinate the right group of people in the right environment to succeed.

Somewhere around here I feel like I reached my 10,000 hours of Python coding. I wrote WebOb, taking the lessons of Paste and a better intuition for library design. I still think it’s the best mapping of HTTP to Python. Other libraries include more aspects of web development in their scope, or have better documentation, and more users, but when viewed with a particular lens I’m still very proud of WebOb. And it’s been an important building block in a lot of people’s explorations into building a web framework. Other libraries from this period are lxml.html, smaller things like WebTest, ScriptTest, MiniMock, Tempita, perhaps the over-ambition (or just mis-ambition) of Deliverance. That period felt like a clearing out of my system, unloading a bunch of ideas.

But for whatever reason my most successful tools were virtualenv and pip. These were never my greatest passions, or even close. They were about: (a) fixing personal annoyances in deployment (virtualenv), and (b) getting people to stop fucking whining about Setuptools and easy_install (pip). I’m not sure whether I blame the uneasy success of these tools on broad appeal, or that they are in a sense user-visible tools and not libraries, or that I didn’t like doing them because no one liked doing them and so there was a vacuum waiting to be filled.

And then my last project, Silver Lining. It was early on in the devops revolution, an attempt to think about what a generic container for web applications might look like. It was in a sense going deeper down the hole of virtualenv and pip, but with an aim to build a full product and not just a set of eclectic tools. No one cared. And I only cared a little — I cared because it was completing some ideas I’d long had about deployment, because for a certain kind of web application development it felt nimble and reliable, because it removed or automated tasks I didn’t like to do. But I didn’t care, no more than I cared about virtualenv or pip. I’d gone down a path that was about code and technical design, but if I stepped back it was unexciting.

And when I did step back there wasn’t anything in Python that excited me. Python was doing great, my interest had nothing to jumping on or off bandwagons. Python is doing great — better than ever (minor bumps with versions aside). But I think in my mind I’d always imagined I could build up just the right toolset, and using that toolset create the product I actually wanted to create — what exactly that product was, I don’t know, but with the right tools I imagined I could move fast enough and confidently enough to find it.

Sometimes when I’m feeling particularly excited about an idea, like really excited, I have to take a break. I need to calm down. Try to wrap my head around the ideas, because I know if I push forward directly that I’ll just muddle things up and feel disappointed. No, I don’t know that is true: maybe I don’t want to have to confront, in that moment, that the idea is not as cool as I think it is, or as possible as I think it is. But often I do step back into the problem, with ideas that are more mature for having thought more deeply about them. In a sense I think creating tools and libraries was a similar process: I felt too excited about creating something great, because I worried I’d muddle everything up, or afraid I just couldn’t pull it off, and so I stepped away and would work on tools.

I always directed my attention to the web, even if I got bogged down in the server. Somehow I skipped native GUIs, even as a user. But pure data processing without consideration for what you do with the data felt unexciting. And ops — that’s just the worst. I was, and am, a true believer in Free Software; and I was, and am, a true believer in the web. That is, I don’t see either as simply a means to an ends. But not for the same reasons, and I can believe in a web that isn’t open source, and open source that isn’t for the web. And yet writing it down I realize I don’t care about open source that isn’t for the web.

When I stepped back Python no longer seemed relevant to the web, at least not the part of the web that interested me. The tools I had built were no longer relevant either, they were not the tools with which I could realize my ambitions. The database-backed website, or the dynamic-HTTP-based web application, templates and deployments, anything you’d call “REST” — none of it seemed like the future, and whatever this vague thing was that I’d been looking for, I wasn’t going to find it there.

This wasn’t an actual revelation, I’m constructing it in retrospect. If you’d asked me I would have agreed with this notion even years earlier, and it’s not like I came up with some unique idea, if anything I would call it self-evident, don’t we all know this is where the world is going? And so I started to look towards Javascript and the browser and the DOM.

Somewhat before this I also joined Mozilla. But it would be backwards to say that Mozilla induced this change in perspective, that it tempted me away from Python. In fact I would have had a much easier time of it if I had just stuck with doing Python backend stuff at Mozilla.

The last few years of transition have been a struggle. With Python and the server I knew what I was doing. I was good at it, I felt competent. I could construct an opinion with confidence about all kinds of design questions. I was respected and my opinion would be listened to. I’d put in my 10,000 hours, I had achieved mastery.

Moving to Javascript none of this was true, and most of it still isn’t true. It might be easier to pull off this change if I was doing web development, surrounded with people making similar transitions, a little fish in the little pond of whatever group I was working with. But Mozilla is not that kind of environment. Which is okay — if I had felt confident it would only be because there was no one to correct me.

It’s oddly common to see people talk about how a programmer can pick up something new in the matter of a few days or months. To find programmers that consider all that knowledge transferable (for instance). I don’t know what to make of it — my less forgiving self thinks these people have never known what real mastery is. I don’t think it takes another 10,000 hours to get mastery in a new language and environment… but it definitely takes some thousands of hours, some years of hard work. I only now feel like I’m getting close.

Maybe it’s my perspective on what mastery is. Deciding to do something and then doing it is good. It is not mastery. You have to pick the right problem to solve. You have to pick the right way to solve it. You need to know when to revise that plan, and understand the constraints that inform that revision. You need both large scale and small scale intuitions. And you need to be good enough at all the details of programming in that environment that you don’t get overwhelmed with the “easy” stuff, so you have mental energy to spare on the big stuff. The jump from Python to Javascript isn’t that big, the languages have a very similar shape. And the browser was already the environment focused on. And yet redeveloping my intuition for this new environment has taken time.

Sadly I’m not going to get back where I was, because Javascript is not Python. If there’s a Javascript community I haven’t found it, or it’s at least not a single entity. There is no community that created Javascript like the Python community created Python. Python comes from the internet in a way Javascript does not; Javascript was built for the internet, but Python was built on the internet. And I do miss the Python community, you’re good people.

But also whatever language partisanship I had is gone, and won’t come back in the guise of a new favorite language. This shouldn’t be confused with a disinterest in language. I still get as annoyed as ever by “use the right tool for the job” — the bland truism meant to shut down critical discussion and engagement with the tasks and choices in software engineering, replacing it with a weak passionless technical fatalism.

I suppose it is the platform that I am drawn to now before language. And the browser seems like the most interesting platform, not because it’s novel (though it is, it’s a runtime like few others), but because of how concrete it is, and of course how relevant it is to… anything. And the browser is no longer just the servant of a server, I prefer now to think of the browser as an independent agent, connecting to services instead of servers. Obviously that doesn’t describe a great number of running web sites, but it’s the model I see for the future, and a better perspective for understanding future architectures.

Still this only addresses which direction I’m looking towards, I still have to walk the path. I don’t want to get caught up in the weeds again, building tools for something I never manage to make. Right now I think I’m on to something in the area of collaboration, first with TogetherJS and now I’m thinking bigger with a new experiment. But while I feel like I’ve reached some competence in executing on these projects, programming is only one piece of bringing forward a larger vision. I still have a lot of learning to do, skills for which I haven’t put in the necessary time. How to recruit support, how to manage the project, how to negotiate between feasibility and user value, how to negotiate compromises in strategy and design. And collaboration itself is a whole domain of expertise. I’ve learned a lot, I can do things, but I am definitely not yet experienced enough to choose to do the right thing in these areas. And at this moment I’m worried I won’t have the room to learn these things, it feels like time is running out just when I’m pulling stuff together. [Update: time ran out]

Anyway, that’s where I am now. No longer a language partisan, unclear of what community I am even participating in, I am less sure how to identify and self-identify myself. How do I describe myself now? Even as I find my technical footing I am still adrift. And so it’s hard to say goodbye. So instead I’ll say, Pythonistas: until we meet again. Maybe I’ll meet some of you over here.

Comments

audreyrWed, 12 Feb 2014

You and your work will always be a huge inspiration to me and to the world, whether in Python, JavaScript, or in life. I look forward to whatever you create next.

M Yasoob KhalidWed, 12 Feb 2014

You know you are one of those who got me interested in Python. Whole of the Python community is waiting for your return :).

batokWed, 12 Feb 2014

Your contributions to python have been extremely important. Thanks for all the good work, and best wishes.

Carl MeyerWed, 12 Feb 2014

Thanks for everything you've contributed to the Python community over the years.

Couldn't agree more with your comments about mastery and transferability, and about the difficulty (and importance) of mastering "how to negotiate between feasibility and user value, how to negotiate compromises in strategy and design."

Hope to still see you around sometime!

Paul IvanovWed, 12 Feb 2014

Thank you for all of your contributions and a very thoughtful post, Ian. After seven years of doing the lion's share of my coding in Python, working in Javascript on the IPython Notebook in the last few months has made me face similar sobering realizations. It's humbling to start afresh and wade through new sets of challenges.

I'm saddened to hear that you haven't found the JS community yet, either. My guess is that, over time, there will be enough Pythonista ex-pats and dual citizens to make `bower install community` a reality. Community matters in a way that transgresses our tools, languages, operating systems. Connections between people strengthen the technical ecosystem, not the other way around.

As one small anecdote, for our part, the JavaScript portion of the IPython Notebook uses PEP 8's `lower_case_with_underscores` naming convention in defiance of JavaScript's camelCasing - just to help us feel a little more at home :) and to keep track of what's ours and what's external.

cmllamachoWed, 12 Feb 2014

Your words are truly inspiring, and for someone (among the many) who uses tools build by you on a daily basis, I only have this to say. Python is what it is 'cause of people like you, and I hope that us and the future generations of Pythonistas can make you proud and build beautiful and useful things.

Erik RoseWed, 12 Feb 2014

Ian, thanks for taking the time to write that up and for all your
amazing contributions through the years. I used SQLObject back in the
day, and we were probably trying to wring practicality out of PJE's
ideas around the same time. :-) I'm so glad you decided to go in search
of something that sets your mind on fire rather than fearing the sunk
cost, going nowhere, and getting burnt out. I look forward to seeing the
excellent things you continue to make!

haliphaxWed, 12 Feb 2014

Javascript seems to be divided into communities that revolve around specific libraries/frameworks rather than the language itself (i.e., prototype, jquery, underscore, knockout, angular, etc.).

Peter LyonsWed, 12 Feb 2014

Thanks for sharing and writing so much great software over the years! I have been on a very similar path and was one of the early Webware users. Now I'm off in node.js land and find it remarkable how different the experience is with node/npm/2014 vs python/(setuptools/pip)/2010. I will never think as highly of javascript as I do of python, but what's happening in the npm world at the moment is amazing.

digler99Thu, 13 Feb 2014

what a boring read. how many freakin words for you to say you switched from python to javascript ?

Jesus BejaranoThu, 13 Feb 2014

That was cold, but i agree.

Markus HeilerThu, 13 Feb 2014

Yes, it was cold, but I wrote a similar statement above, and he is simply accurate.

Jesus BejaranoThu, 13 Feb 2014

IMHO, the difference with his comment over yours is that, he didn't attack the author, he was just exposing his opinion nothing more.

Zoologist_ExtraordinaireThu, 13 Feb 2014

You realize there's these things out there called "concluding paragraphs", right? They are usually found at the bottom of the article. You might just want to stick to those if you're too lazy to actually read things instead of insulting someone for taking the time make some thoughtful remarks about his choices in programming.

Markus HeilerThu, 13 Feb 2014

We can see the concluding paragraph just well and nothing in it invalidates the statement made by digler99 in any way.

lucianuFri, 14 Feb 2014

Of course it doesn't because his experience is subjective. This post might have been boring for you and others, but it was interesting for me and others. I didn't expect just facts or maybe some sketch of why Ian left the Python community. I liked the fact that he also shared his feelings with us.

Xiong ChiamiovThu, 13 Feb 2014

Ah, but you see, some of us are interested in *why* a change occurred. Think of it like a commit message on his life.

thitherThu, 13 Feb 2014

What a pity that somebody held you down and forced you to read a post on somebody's personal blog!

Ian BickingWed, 19 Feb 2014

I'm sorry dude. Maybe my upvote will make up for it.

tripplilleyFri, 25 Apr 2014

I downvoted him to cancel yours out. You don't deserve that crap, but you're too good a person to stoop. I am not. :-)

Diógenes A. Fernandes HermínioThu, 13 Feb 2014

You were one of those who inspired me. Thanks for all your great work!

PAUL MillerThu, 13 Feb 2014

hmm so you're saying you stopped programming Python, and moved to Javascript? At least Python has many systems and web development libraries and can be used for alot of things. Not so much for Javascript. Rather than writing solutions looking for a problem, it's better identify problems and then write the solution for that particular problem. I'd say there are more people doing Python than Javascript for systems and web tasks. Also, there are more people doing Perl or C/C++ or PHP or Java than Python and Javascript combined. If benchmarks are any clue, I would start doing systems development in Go before Python or Javascript.

Andrei SimionescuThu, 13 Feb 2014

I was gonna suggest Go to him too.

jsaakThu, 13 Feb 2014

If you want to develop for the web, there is only one way: Javascript
(or something which translates to Javascript somehow)

Markus HeilerThu, 13 Feb 2014

lol

nonapodThu, 13 Feb 2014

Really good article, I understand the drifter feeling.

laurenceroweThu, 13 Feb 2014

I don't think I truly understood the importance of being part of a technical community until recently. I spent ten years working with Plone. Wherever I happened to be working at the time, I was often contributing code back. I think I learned more from the feedback I got from the community and the architectural discussions with them than anything else.

Shared experience provides a common set of reference points from which one can discuss technical problems or implementation strategies. Without it those discussions are not nearly as satisfying. Even though I suspect I won't go back to coding Plone again, I know there are many others in that community who are going through similar transitions. I want to see what they're doing now, and tell them about my new experiences. I go to conferences now more for the people and the hallway discussions than the talks.

I suspect it won't be quite the same, after all we won't be working on the same thing so the possibilities of collaboration are much lower. But I still hope to find some sense of shared experience so we can still learn from each other.

littleq0903Thu, 13 Feb 2014

Python will miss you, thanks for your contribution to Python community :D

Andrey ShipilovThu, 13 Feb 2014

Apart from all the good I can say... moving from language with standards and PEPs, perfect syntax and readability, warm community, to the language with no normal OOP, semicolons, brackets all around, horrible Crawford-driven linting and community that rarely goes anywhere further from JS (JavaScript. JavaScript Everywhere meme!). Well, sorry. I don't think Python guys truly support or understand that.

Psion SkiThu, 13 Feb 2014

Python is one of the best languages IMHO, but it doesn't run in the browser.

P.S. ES6 fixes the OOP issue and the brackets and semicolons can be fixed by writing CoffeeScript (which will also fix the OOP issue for you right now if you don't want to include Traceur or wait for ES6).

Xiong ChiamiovThu, 13 Feb 2014

http://www.trypython.org/

Psion SkiFri, 14 Feb 2014

Interesting link, but didn't work for me (probably some Silverlight issue). Anyway, I was thinking more along the lines of <script type="text/python"> and full DOM integration :) Although minifiying Python won't be easy, but if you can just serve it gzipped...

compilerFri, 14 Feb 2014

What about http://www.brython.info ?

Psion SkiFri, 14 Feb 2014

Now that's more like it! :D Bookmarked, awesome!

waynewernerMon, 17 Feb 2014

Brython is an interesting attempt - and a great jumping off point. This is an idea that I'm extremely interested in doing. But instead of, like Brython trying to pretend that the Python is part of the HTML, basically just a Python VM in Javascript. Effectively think Pypy, but instead more like PyJs. Or JsPy - as I like to pronounce it, "Jaspy". Actually I started a repository a while ago but apparently deleted it. So I made a new one: https://github.com/waynew/jspy

Obviously there are a few things that you wouldn't be able to mimic, and maybe the speed would suck, but I find the concept incredibly interesting... and useful for some of the projects I have in my mind. I haven't run out of Python things yet ;)

And to Ian - yes, until we meet again!

Andrey ShipilovWed, 19 Feb 2014

Brython. Try that. Although it's an awful argument to say that "it doesn't run in the browser".

Psion SkiWed, 19 Feb 2014

Yeah, somebody already suggested Brython - it's very cool, even supports HTML5 :)

Why is it an awful argument? You could get away with a JS interpreter for Python like Brython for small projects, but if you're making a game or something demanding, JS is the only way to go.

Ken StoxThu, 13 Feb 2014

I never thought I would see this, but then again, the only real constant is change.

Best wishes Ian, no matter what paths you take.

Now stop goofing off, and get back to work!

Ian WilsonThu, 13 Feb 2014

In some ways you started me on the path to finding the Python community. Thank you for your work and inspiration. Your writing and programming both had a level of accuracy and maturity that was refreshing. Which, as I soon found out, mirrored the Python community as a whole. I hope and believe you can bring this to JavaScript and the browser platform.

johndurbinnThu, 13 Feb 2014

Java Script blows nuts. Sucks for you breh breh.

Markus StenqvistThu, 13 Feb 2014

Honestly, what makes Javascript so popular now is not really because NPM, Nodejs but because you can efficiently run almost 100% percent javascript (with the exception of html and css). Several databases has javascript as their REPL and stores things in JSON or JSON-like objects. You no longer need to import som json parsing library since everything is already javascript.

Too bad the language suck so much more than Python. I think a really easy to use Python to JS compiler would be good for the Python Community. You know, something that makes it super easy to use ajax-functionality, some animations and handling websockets.

Ed SummersThu, 13 Feb 2014

Thanks for writing this Ian. The phrase "right tool for the job" has always bugged me for similar reasons, but I never nailed it down like you just did. Thanks especially for the care you have put into open source for the Web. I still find it remarkable that either exist at all. Maybe they couldn't exist without each other? They certainly are fragile things that need more people like you to care about them.

Markus HeilerThu, 13 Feb 2014

So you dumped Pyhon in favour of Javascript but you don't have the guts to admit that Javascript is the inferior language, so you had to write this much to defend your move - weak man, very weak. I don't use pyhon, I use ruby, but if I would be a python user I would call it a good thing that you went away from the language, just as I think it is good that zed shaw moved away from ruby. Languages do not need to have everyone and some people are indeed better doing javascript (lol).

oripThu, 13 Feb 2014

Well said. I'd also venture that it tracks the development of a programmer (or builder, or whatever description you prefer); feeling that you're developed in an area in a way that makes it less exciting, and moving to other areas that get the juices flowing. It can happen with languages, methodologies, technical focus (e.g. user-facing web vs. OS kernel ), even business areas.

KailaiThu, 13 Feb 2014

前辈走好,您在我们心中永垂不朽!

Liu BoFri, 14 Feb 2014

笑尿了,给个好评

Cucole LeeMon, 17 Feb 2014

尿吧,尿吧。。。

Ian BickingWed, 19 Feb 2014

OK, Google Translate makes me think the first two are well wishes, but then things get a bit weird: "Laugh urine, give praise" and "Urine bar, urine it"

magineSat, 22 Feb 2014

Well……in Chinese,“永垂不朽” means a great man died, here it's a kind of wisecrack. And the "笑尿了" means a man laugh too deep that to control himself, it's for the "永垂不朽"……

Liam ChenTue, 18 Feb 2014

永垂不朽

asbjornengeThu, 13 Feb 2014

Although I was never as much of a pythonista as you Ian, I too have made the same transition. It is not an easy thing leaving a comfortable paradigm to explore. I salut you for doing so, and for saying so, making me feel not quite so alone in this here boat.

I also want to thank you for all your amazing python work and for the tools that made my life easier! I especially want to thank you for WebOb which inspired me to build my own framework(s) and pushed me to a new level of interest and understanding of both the web and software stacks in general.

Thanks for all the fish, and good luck!

Veronica SchroederThu, 13 Feb 2014

Welcome to the fall of Python. I can hear all young amateur pythoners
crying because its toy language was criticized. Always the same history
with fashion languages. Besides, I found Python community one of the
most agressive closed-mind and negative about criticism. They simply cannot admit
something is wrong about its choice.
On the other hand, Smalltalk
community preserves its humility and great quality through the years by
having a colossal developer selection process: Becoming an Smalltalker
requires great dedication, deep knowledge of object-orientation and
great modelling. And by the way, Smalltalk has a new implementation
called Pharo which is making great success lately, you should check it
out.

Travis GriggsSat, 15 Feb 2014

As one who exit'ed the Smalltalk community after 20 years of hard investment, and have been mostly pragmatically pleased with Python as a landing spot, I couldn't disagree with you more. Especially about Pharo. Everytime I download the latest, and play with it, I ask myself "this is what we threw the commercial smalltalk's out the window for???"

To each his own I guess.

faassenThu, 13 Feb 2014

Hey Ian, thanks for writing this post. I've always enjoyed your work and watching you do it.

I've gone through a similar transition in the last few years myself. I like to call myself a creative developer. I have been a web developer for about as long as I've been a Python developer. And where the creativity is at these days is on the client side more so than the server side, so that's where I went.

Back before I even heard of Backbone let alone the wave of Angular and Ember and React and such, I started Obviel, which was to me a fascinating exercise in porting sever-side web framework concepts to the client and seeing what happens. It hasn't gained much traction, but I learned a lot, and I think there are some ideas in there that I want to do more with.

Strangely enough I find myself back writing Python code again, trying to express what I've learned about web frameworks in a last 15 years or so in a compact form, Morepath. I'm excited about it. But I expect I'll be pulled back to the client again soon, and there are ideas I want to explore, so that is good. And Morepath is a web framework that intends to serve the modern rich-client web application that I've gained much experience over the last years.

I've found it hard to find a clear community in the JavaScript world myself; it's a more multi-polar world than Python, but ideas do spread through it. I greatly enjoyed JSConf.eu last year however. Perhaps we will, indeed, meet again sometime. I hope so!

Ensei TankadoThu, 13 Feb 2014

"stay hungry, stay foolish"????... you've made a lot of awesome things, now go and have some fun... run Ian Run!

compilerThu, 13 Feb 2014

Thanks for sharing your experience...

What about coding in brython (http://www.brython.info/), or maybe working to bring python to the browsers (to replace or complement JS)?

CitolinoThu, 13 Feb 2014

Thanks for sharing, Ian. And thanks for being a great source of inspiration for the Python community and contributing so much really useful stuff that nobody else wanted to tackle.

SiroDaciaThu, 13 Feb 2014

Thank you so much for this soulful and inspiring article.

Coding _is_ creating, and obviously you are a great creator. Please do not stop your search. It seems JavaScript still is not your perfect place. There _is_ such a thing as joy in coding, as a continuous, cheerful enthusiasm for this craft.

You mentioned the "10,000 hours" factor (I believe I read that on Peter Norvig's "Teach Yourself Programming in Ten Years"), JavaScript, and how you value (rightfully so) a good, closely knit community.

Please consider to spend some time with Common Lisp. It has a very nice community (best experienced live), and very close connection to JavaScript as well (see ParenScript: http://common-lisp.net/proj.... Its power, i.e. creative power, are second to none. Please, don't take my or anybody's words for it. Just give it a try. The closest one can find to real joy in programming can definitely be found in Lisp.

Why don't you check it out at the next (7th) European Lisp Symposium?
http://www.european-lisp-sy...

I just feel you would be an outstanding creator with Common Lisp, and you are getting so much closer to it now.

Thank you!

PS: http://replove.herokuapp.com/

tripplilleyFri, 25 Apr 2014

...or Clojure and ClojureScript. That community feels like it has more of a BDFL (Rich Hickey) vibe to it, supported by luminaries analogous to Tim Something-with-many-dashes-that-I-don't-know-how-to-emulate-ly Peters, Andrew Kuchling, some guy who works at Mozilla and just recently took on a huge responsibility, and so on... I haven't gotten very far in, yet, and I still use Python on the back end, but I'm pretty sure Clojure is where I'll put my next 10k hours.

lucianuFri, 14 Feb 2014

Ian, thank you for all the work that you've done for Python. You've basically made our lives better. I admire your productivity and it's something I want to emulate. Best of luck with what you're doing next!

R. C.Fri, 14 Feb 2014

It's kind of sad to see you say "goodbye, Python", but I've never felt that language partisanship should peg us down to one place, be it a community, a job, or whatever, so I can't just but wish you all the luck. You've been an inspiration for many years and that will always be appreciated.

Samuel CochranFri, 14 Feb 2014

Paste was one of the biggest influences on my perception of web application infrastructure, and I was a heavy user of WebOb. I'm now in Ruby and JavaScript/browser land myself—welcome! And thanks for all the fish.

tashfeenFri, 14 Feb 2014

Dear Ian, I come from a completely different world: creative fiction (although I do love to code on the side). However you post made complete sense to me, and I applaud you for walking the new path. Sometimes our medium of expression fails to live up to the way we want to express ourselves, and you have to make a hard choice. Keep making beautiful things, sir - I wish you all the best.

jamessocolFri, 14 Feb 2014

Thank you, Ian, for everything you've done for the Python community, even—especially—when it was things like virtualenv and pip that needed fixing because they weren't fun to fix. I've learned a lot from you, before, while, and after we overlapped at Mozilla.

Michał PasternakMon, 17 Feb 2014

pip & virtualenv ROCK, thank you for those tools!

MarcAbramowitzTue, 18 Feb 2014

You created a legacy. We use your
tools everyday. An army of Pythonistas maintain and improve your various creations.

I think that you are welcome back if you ever want to, but if you don't, that's cool too. You have left your mark.

Moishe PipikWed, 19 Feb 2014

I too abandoned the Python community--or more properly it abandoned me. The Python community has done horrible things and it all came to a head with "Adria Richards." Python now has to be "gender neutral" and it's more about including Women than solving Big Computer Science Problems.

Politics and "women's rights" have NOTHING to do with Computer Science. The Python community has become watered down in the name of "inclusivity" and "diversity". That's why I left it.

Ian BickingWed, 19 Feb 2014

if the Python Community was just a Computer Science Club then I wouldn't have had much interest in it. If you had just wanted to use Python as a tool that would be fine, and none of the community standards or any other stuff comes with Python-the-tool. Since I have a hard time imagining that any of these efforts had any material impact on you, I suspect that you are just fishing for reasons to feel some sense of righteous indignation.

Conrad LeonardThu, 27 Feb 2014

A terrible loss to the community, I'm sure

Steven LeggettThu, 13 Mar 2014

I read it and it was worth it! Your contributions have been inspirational to Python and open source in general. I think what you're touching on is that developers, not languages, are the community. People are what matters, not the tech under the hood. Those relationships last a lifetime and will be remembered more than any syntax no matter how many hours of mastery you sought in seeking perfection.

Krzysztof TurkiewiczThu, 10 Apr 2014

So You changed Python to JavaScript - i got it but what about server side ? front end is only the view - what you gonna use for back end ? node.js ?

Ian BickingThu, 10 Apr 2014

I am not particularly fond of Node.js, though for some real-time stuff it has advantages. Mostly I've been deemphasizing the server in my work and concepts, going out of my way to keep logic on the client. I've really enjoyed creating and using minimalistic servers that don't need to be updated to extend the functionality of a project.

This is the personal site of Ian Bicking. The opinions expressed here are my own.