Dear Python, Why Are You So Ugly?(grokcode.com) |
Dear Python, Why Are You So Ugly?(grokcode.com) |
I suspect that ruby just has an especially beauty and design focused culture. Python is a little more old school. This might drive some people away from python, but there are other things that drive them to it.
I also prefer the style of Hackernews/Reddit to the one of Digg. Digg may look better, but its style and content is what i don't like.
I could not find any particular programming advantage of Python over Ruby or vice versa. But from the blog posts it was obvious which community I liked much better:
Python's were to the point and technical, if making comparisons with Ruby they'd say they're both powerful languages and pick the one you like best.
Ruby's blog posts were so much more about imago, "personality" and pointing out whatever (even irrelevant) attributes to prove that their thing was better than the other. Not so much Python vs Ruby btw, but also Ruby library X vs Y, or Ruby blogger P vs Q--it felt like everything in the Ruby community was some sort of popularity contest.
On another note, I do agree that Django's website is a mess. And so are its docs, you're much better off using a great IDE like PyScripter and sail through the source code (not saying that's a good thing, on the contrary, just a bit of advice to anyone using Django ;-) ). But Django is hardly the only web framework out there.
There's also a bunch of really nice and clean Python sites out there. I really like the looks of Armin Ronacher's stuff, for instance Jinja2.
It's been a few years so I don't recall exactly (and maybe it has improved) but I just found myself browsing and clicking around to re-read particular chapters all the time, that I could only reach via an unintuitive sequence of 2 or 3 clicks.
Only when I found that the docstrings inside Django's code, plus the function signatures and the (IMO very well-written) code itself, were much more useful--as long as you have an IDE that allows one to ctrl-click an identifier to jump to its definition (cross-file/module), only then I got a better grasp on what Django was doing and how it worked.
But then, that's the general take I got from Django after using it for some time: As long as you strictly stay within the "batteries included", it's absolutely great, and the documentation is probably wonderful and sufficient. But as soon as you need to develop your own `ImageFileWithMultipleSizesThumbnailAndExtraCheeseField`, you really need to dive into the innards of the code, the documentation starts lacking, and it's like they never even considered that sometimes your customers prefer their database fields with extra cheese.
Hey but I'm not here to bash Django, it's a great framework (and so is Rails, btw). It's just that next time when I need something like it, I'm going to try and use one of those WSGI things with SQLAlchemy and see how that works for me. I'll probably really miss the automatic admin though.
Official python docs are a class of its own - browse online, higher in google results, download static files, offline searching, well organized, curated content with a lot of example code etc etc.
Ruby docs don't even come close. I have been told ruby docs are mostly a volunteer effort and one man operation, and I mean no offence to whoever is the maintainer, but it isn't comparable to python's.
I haven't tried interactive python tutorial, but the official python tutorial is the best tutorial I have read.
http://docs.python.org/tutorial/index.html
I program comfortably in a number of langauges, and have read a lot of code and documentation. If I have to choose top language tutorials among c, c++, java, perl, python, erlang, lua, javascript, c#, it will be a tie between python's and "Learning Perl".
https://docs.djangoproject.com/en/1.4/
Django's documentation is one click away from the landing page, and the link is located where it is expected to be. Are you seriously telling me you had a problem finding the docs or the download button(so called usability problem)?
FWIW, I find rails guide better than django docs, but that doesn't make the django docs unusable or bad.
http://guides.rubyonrails.org/
http://ringce.com/hyde Jekyll's counterpart is hyde. A simple google search for "python jekyll" would have told you that.
Comparing Google App Engine to Heroku or DHH's landing page Adrian's, and concluding Python is ugly is ridiculous. To be honest, I find the whole article ridiculous.
I have nothing against design and people making pretty shit. I just take exception to lame claims about a language's usability based on how pretty the landing page looks. And in the case of python docs and django tutorials, it doesn't even look bad, and is perfectly usable.
What does the aesthetics of a web page have to do with the quality of the language?
If the usability is in question, that's one thing -- but the author isn't arguing the less "Sexy" (his words) sites are less usable, simply less attractive to him.
Who cares? If you pick a language based on the sexiness of various websites that are related to the language, you are probably not in the right role.
In my experience, finding something in Python docs takes a total of five seconds, including passing through the "Google gateway".
Finding something in Rails reference has been downright impossible. This is a function of Ruby itself, a very magical language, magic that fails to communicate in auto-generated documentation. How does this work? Good luck finding out, but you'll feel very clever three hours from now.
Admittedly, I've had very limited exposure to Rails, but perhaps that makes my experience even more relevant.
I tend to have a very easy time finding the documentation I need, in both ruby and rails. Sometimes that means a google search, but if I want more fine-grained implementation details, I normally crack open the gem in question with `bundle open` and read the source. I know that a lot people from a Java background for example prefer code-completion in their IDE's to reading source, but it seems to be the most comfortable way to find what you're looking for, in ruby at least.
Reading the source is certainly not an alien notion to me coming from Python. I just find Ruby code very difficult to follow when you actually need to understand the implementation.
One of Ruby's greatest strengths, the ease with which you can define a DSL, is its biggest weakness in practice (in my opinion, of course.) In Rails for example, there is a DSL for everything, the Ruby language is used in non-obvious ways to get the desired DSL syntax.
All this makes it very difficult to read other people's code. For the same reason, reading the documentation is difficult. You don't know what function you should be looking for in the first place.
I don't think I've ever actually accessed the Python docs in any other way in fact. Same goes for Django. They're clean, static HTML, totally trivial for search engines to index and you always get just what you think you're getting when you click over from a search engine.
Also, unrelated: I learned something today. I read the claim that Python and Ruby are roughly the same age and thought "no way, Python is old-as-hell, Ruby can't be nearly as old". But then Wikipedia pointed out that Python is only 4 years older (1991 vs. 1995).
I usually download them as local static HTML so I can also access them when I'm coding without stray wireless packets floating in the air.
Design is not just important for usability, but also for marketing. If you have an awesome framework, you have to get the word out so people know about it and want to use it. It's not the same kind of marketing a business uses because it's not directly tied to revenue, but it is important if you want said framework to be used and its surrounding community to grow.
How many blog posts do you see complaining about or even advocating the new framework hotness? People are jumping ship to Node.js now and saying Rails sucks, and there's consistently a new framework du jour. I'm not saying that's a good thing, but it is definitely proof that marketing affects framework adoption.
I know it sounds kind of scummy to talk about marketing OSS. The point isn't to position Python as the sexy new language everyone needs to switch to, but to represent the community and quality tools and knowledge it offers. If a new programmer visits the Django site and then the Rails site, might they assume Django is a smaller community because the site isn't as pretty? Maybe the first impression is that Django isn't as well maintained, when we all know that's not true.
Personally I'm really tired of hearing programmers dismiss the importance of aesthetics and branding. They can easily have more impact than all those technical details you spend so much time sweating over. Like it or not, humans are not cooly rational decision makers.
Looking through the screenshots, there's consistently more information on the Python side.
I don't want my web framework's developer website to be "sexy", I want it to get me the information I need as quickly as possible so I can get the job done.
True, Python is a beautiful language that's stayed modern in the face of the evolving web, and I've come across many Python sites that do look really slick. But if the face of the Python community tends to lean towards the look and feel of 1997 Geocities pages, where are new developers going to flock? If you care about your community you should foster it by showcasing the fact that Python more than keeps pace with the modern web instead of subconsciously suggesting to budding programmers that your language is stuck in the 90's.
Also, PHP community, I'm speaking to you as well. Your PHP homepage, pecl, and pear sites (although easy enough to navigate) are in desperate need of a modern design.
You can get to it here: http://php.net/?beta=1
Yes. I'd prefer it to one of a million cars that all look the same.
Well, once upon a time Python had a beautiful documentation website with lovely illustrations and cute stories. But then the fairy princess elf who made it threw a hissy-fit, disappeared from the Internet and took all their content offline with them, without telling anyone why.
Ever since then we've been recycling Monty Python jokes, because hopefully John Cleese is above that sort of thing.
1. Blogofile is a de facto abandoned project. The project's inherent bugginess is a testament to the fact that the author had more important priorities to address than the design of the site.
2. Comparing Google's App Engine with Heroku is absurd and seems like a sign that the number of data points is so small that comparisons don't make much sense in the first place.
I agree that Python sites look hideous - and have often wondered whether someone should make an alternative style sheet - but I have a feeling the Python community's problem is not that of design, but legacy. As bland as Django's and Python's documentation looks, Pythonistas have come to learn where things are and how they work.
I don't know if migrating the websites of Django and Python to something new would be a good idea, especially when it comes to preserving links for directing to dead ends.
I'd rather that someone did a CSS userstyle than to see the sites get redesigned, because I think it would break more than it improves. If the CSS and HTML could be improved without any changes to URLs, then that would be even better, of course. We can't pretend the changes aren't retroactive.
Maybe someone could do a fork of the sites and apply the changes they want?
As someone said, maybe the Python people just decided to spend their time writing good documentation instead of creating a good-looking front-end? There are only so many people and resources to go around, especially in one-man projects like Blogofile. As chance would have it, I actually use Blogofile over all the alternatives, meagre design or not. Maybe I share sensibilities with the Blogofile and Python guys that don't translate to good-looking websites?
Google for 'django consulting' also turns up on first page:
What does web design have to do with the actual languages? All you've proven is that Ruby developers spend more time on HTML and CSS.
With regard to docs, as of May 2011
"With revision 31499 of trunk RDoc reports that just
under half of ruby has not even a single character of
comments with over half of the classes and modules
missing documentation"
Source: http://blog.segment7.net/2011/05/09/ruby-1-9-3-documentation...Given finite developer resources, I'd rather have docs over shiny. The Python community has its priorities straight.
Joking aside design is a visual representation of quality. For newcomers a better design might be all is needed to attract them. I guess then you can also argue why many In Ruby world are rather shallow :p
To all the people criticizing the post, please realize this has little to do with computer science and is almost entirely sociology. It's not a particularly rigorous "study", but it's not really trying to be be.
* Rails' website has the design might of 37signals behind it. Most things look bad in comparison. To be fair, Django's website isn't great. Maybe compare Sinatra and Flask's websites too?
* Comparing the personal webpages of the guys behind the main frameworks seems pointless.
* I host Python code on both Heroku and GAE (Heroku isn't only for Ruby). Heroku might be more designed, but GAE certainly isn't ugly, and I think I prefer their documentation.
* Have you compared the official websites for Python and Ruby? I know which one I prefer. Python's documentation is excellent.
I tend to agree with the premise of the article. I've thought the same for years.
The only area of python (specifically Django) I consider "ugly" that actually has any impact on the user is the default admin area. Fortunately there are projects like Grappelli (https://github.com/sehmaschine/django-grappelli) that help alleviate that.
The one I think wish is that Sphinx had a better design. There's something attractive about its simplicity but I have the hardest time navigating around.
No, he does:
It’s not just that Python sites are ugly (even though they are). It’s that the uglyness makes sites hard to navigate and hard to use.
I agree that the ruby sites demonstrate better visual design, but he needs way more evidence to convince me that they're more useful.
Especially when two products are close to functionally interchangeable, like Ruby and Python, design can be decisive. Engineers chronically underestimate the importance of design and marketing.
Now guess which community has better graphical design skills? Or from the other end - all other things being equal (and of course they aren't in reality, there are many small differences), I'd rather use a language designed by someone who specialises in designing programming languages rather than one creating websites.
Disclaimer: you should't base your credit card use only on design!
These Python sites are targeted at Python programmers. What do Python programmers want? They want clean, neat and obvious. Above all they cannot abide unnecessary clutter.
The Ruby screenshots listed have the following 'visual impact' features. They may make them more attractive, but don't help with usability and potentially get take up space that could be used for information:
Elements introduced purely for decoration.
Oversized logos
Pictures of people
Designer fonts
By contrast, the Python pages are all information dense and organised with hierarchies of headers.This is a pretty rough analysis, but perhaps it explains the difference in approach?
It's only 'likely that they sweated the other details' if you assume infinite manpower and resources. In reality, all of the very finite resources that went into picking the right shade of beige for the background could have instead gone into improving the actual tools.
I don't think it's possible for an engineer to underestimate the importance of design and marketing for an engineering tool.
Have you seen nginx.org?
true, that's why I didn't continue reading the article.
It's true that the main documentation link doesn't have everything. If you want everything you need to go to https://docs.djangoproject.com/en/1.4/contents/
Are you referring to PHP or something? Certainly Matz is every bit the language designer Guido is. Like it or not, Python and Ruby are competing in a lot of very similar niches. Fluffing the design of your webpages is like stopping at the 24th mile of a marathon.
Doesn't sound like someone who specializes in creating websites to me.
I do however think that high popularity in one specific circle (rails developers) results in pretty pages about the language itself. The split was actually very clear not that long ago even in ruby itself. A couple of months ago docs for ruby core were on a really ugly and not very usable page with 3 small scrolling boxes on the top and documentation view below. It's gone now fortunately. (old version of rdoc generator theme - still visible on http://stdlib.rubyonrails.org/libdoc/rdoc/rdoc/index.html)