Hacker News new | past | comments | ask | show | jobs | submit login
Redesigned Python.org (python.org)
214 points by webology on Feb 19, 2014 | hide | past | favorite | 125 comments

I also had to go to preview.python.org to see this.

My first impression was very favourable. The design is clean and well implemented for the most part.

The menu design is quite effective, except that most of the first panel, under About, seems like low priority background information that won't interest most visitors. I would have thought promoting the material on getting started, and on major areas like downloads and documentation, would be the highest priorities here.

I tend to think having basic code examples high up on a programming language's home page is a good thing, and I like the general idea here. However, if it were me I'd move away from the automatic switching to something with manual controls to cycle through the examples. As others have noted, the content below keeps moving, along with all the usual problems that make carousels a bad idea.

It's a shame they're still using the Flux font in places. I get that it's traditional, but it's simply not a very good font, and it brings an amateurish feel to an otherwise very professional-looking page.

Please track issues with the samples / etc here: https://github.com/proevo/pythondotorg it's all open source and I will be moving it to the official python org tonight

For posterity, the official repo has been transferred: https://github.com/python/pythondotorg

There is a bug on the front page:

    >>> print 'Hello, I'm Python!'
      File "<stdin>", line 1
       print 'Hello, I'm Python!'
    SyntaxError: invalid syntax

...and a python 2 print keyword instead of the python 3 print function.

There are a bunch of these. There's the Python 2 specific string formatting as well:

    # Input, assignment
    >>> name = input('What is your name?\n')
    >>> print 'Hi, %s.' % name
Why so Python 2 specific? Why not Python 3? : (

However, they also used an example showing that integer division returns a float, which is a behaviour specific to Python 3.

Not completely, this has been available in python 2 for a long time:

>>> from __future__ import division

%-based string interpolation still works in python 3.

Huh, you're right. I could have sworn it was taken out in favor of '.format'; I wonder where I got that idea from...?

I believe they were going to but were met with stern resistance from the community and caved.

I concur. % formatting is extremely cute and I miss it in every other language.

% formatting is not Python 2 specific, plans to remove it from 3 have been deferred.

They had better not. I much prefer it to .format()

Me too; .format() is too verbose.

Nice catch! Fixed and will go live in a bit.

Why not support both 2.x and 3.x syntax?

    print ("Hello, I'm Python!")

Please no, this is confusing.

The mouse over CSS is a flattened look which is (IMO) very ugly with the embossed default.

I'm not really happy with the loop example. There is a sum function precisely for that.

Bug me please! I linked to the repo everywhere else :)

Code sample 3 says, "Lists (known as arrays in other languages)", etc. Maybe a small point, but this could be confusing. Python lists are not what are usually meant by "arrays", and in fact Python provides an array module in its standard library (and there is numpy, which provides more array stuff).

Since much of the "slow" Python code out there is slow at least in part due to use of inappropriate data types, it might be best not to start beginners off by mixing these things up.

They're pretty close. They provide random access, are backed by contiguous memory, and the syntax behind their use is similar to arrays in other languages.

Python lists are backed by contiguous memory of pointers to other objects, mind.

That's because there aren't unboxed primitive values in the language. Even a local integer variable contains a pointer to the integer.

This is orthogonal to whether a container is a list or an array though.

Yes, lists in Python are going to be implemented in C as arrays of PyObject pointers. Which is why numpy has their own arrays - they want arrays of int32, float64, etc.

Beginners have no idea about the connotation of 'numpy array'.

Talk about premature optimization.

They are not linked lists. They aren't that slow. The `arrays` module gives you extra typed arrays for numerical computations.

I think the "array" notion is just to differentiate from the "cons sequence" (or linked-list) notion of the lisp family lists

Nothing trips up beginners like slow code.

Ruby-lang.org went through this stage, too. Compare its old version with the new Python homepage[1]. (It is similar in their use of dark background and certain decorative elements, and in giving code samples much importance.)

They've redesigned since that, reducing clutter, improving readability and visual hierarchy.

Note that you can instantly tell that Ruby is a programming language, and how red “Download” button sticks out on http://ruby-lang.org/.

If I were on the design team, I would spend some time researching how and why competitors (Ruby, Java, others) go about their homepages.

[1] https://web.archive.org/web/20100401000000/http://www.ruby-l... (I was never a Ruby programmer, but I remember being interested in the language back then, and its homepage sprung to mind after seeing Python.org redesign)

I feel like we are looking at different sites here.

At least for me, the first screenfull of python.org is dominated by a picture of some code and the text 'Python is a programming language that lets you work quickly and integrate systems more effectively', very similar to Ruby.org.

From there, the python site is dominated by links to get a new Python programmer started, while the Ruby site is dominated by a blog feed that talks about recent events. So the Python front page serves a new programmer, while the Ruby frontpage is more about being the center of a comunity.

Given Python is often a first programming language, while Ruby has a very tight community, I think that difference is sort of natural.

We disagree and that's OK. Still, since I suspect we're indeed looking at the same site, I'm going to clarify what I mean.

Clear and concise summary “Python is a programming language…” is down below near the fold of my screen, and it uses subdued gray-colored text on blue background.

Meanwhile, much attention (via color contrast and positioning) is given to code samples. Code samples are aimed at those who don't yet speak Python, so they are poorly readable ‘by default’. I personally wouldn't throw them at user right away as they start skimming the page, placing short intro text higher in visual hierarchy. (I'd also try making samples more readable.)

Then there's search box. It is quite high in visual hierarchy, since it's the only plain white-colored object (and a sizable rectangle at that) among the shades of blue and occasional yellow above the fold. Meanwhile, it's not (I'm sure) going to be used by the majority of users.

I would say the visual hierarchy is not perfect and there's some visual clutter.

Also a problem are redundant links. How many are there that lead to documentation or, say, download page? You don't know it, but your brain (or at least brain of someone who's new to the site) evaluates all of them before choosing which one to click.

Of course, most of us are used to interacting with worse designs, and prior design of python.org had its own (maybe more significant) problems. Nevertheless, I think the landing page could be designed to cause less cognitive strain on the user.

>> I suspect we're indeed looking at the same site,

Ah, but we weren't.

I'd like to apologize - I didn't mean that to sound sassy.

When I was viewing the site earlier, I was doing it on a high resolution widescreen monitor, rotated 90 degrees so that the page was very, very tall.

On the python page, I had pretty much the whole page visible, and it was all useful stuff. On the Ruby page, about 70% of my screen was dominated with the blog feed.

So, the way the pages looked to me was actually quite different, and about the only other people getting the experience I was are tablet users reading the site in portrait.

In the weird portrait view, the python site is better than the ruby site. The way normal people look at it, the ruby site is better.

I get your point now. In my case it's a 1280x800 landscape screen, minus menu bar and window chrome. When I zoom out to 75% the visual hierarchy improves somewhat (though font size becomes too small, and some of my points still stand).

Is the "BETA" tag next to the python logo supposed to mean the new redesign is in beta? One can confuse it to mean python is in beta.

I think it's because the site is in open beta. Let's give them a few days to hash things out. ;-)

That wasn't supposed to be there. It is now removed.

I thought I'd find a ton of comments about how awful it is, surprised. More than one part of the page strained my eyes to read. The code samples and success stories are the worst. Websites are made to be read, if you make that hard you've failed at design. Needs to be a lot simpler. If this stuff was fixed it'd be awesome though

Could you help us out by filing tickets/Etc? https://github.com/proevo/pythondotorg

Nice! Had to go to preview.python.org to see it.

One comment: As the main feature goes between code examples, the box grows. This makes the rest of the page jump around - which is frustrating if the viewer happens to be reading it or clicking links.

Thanks for not making it all flat like thousands of other sites these days. But it could use a site wide nitpicking by an anal graphic designer to tweak things like typography, margin, spacing, alignment. Things are not quite perfect.

My exact thoughts too - "thank god, a site redesign that doesn't think a colour gradient is the devil". I like the philosophy of 'digitally authentic', but that doesn't lock you into being flat. Can't wait for that fad to be over.

Great design, with only minor issues.

Yes! Nitpicking welcome! https://github.com/python/pythondotorg

It's a nice design, but IMO, a bit too much is thrown at you on the front page. For someone unfamiliar, it's probably overwhelming.

Yeah, they've got a whole lot crammed in there. I remember this being something a lot of people were complaining about when the PSF asked for feedback a number of months ago.

I guess that got ignored.

The bottom of the page is pretty wacky, in particular: http://i.imgur.com/jZ6bUZu.png

The individual UI components look fine, but I agree it's a bit too crowded. Though to be quite honest I don't care how the site looks, Python is awesome regardless.

Completely agree. Probably they started with something much simpler, and different people demanded that more essentials were added until it became a bit cluttered, but it's very hard to take things out once they are there.

If I had any criticism it would be this - leading with the code is great, but there are too many menus and too many choices.

i'm missing something here, archive.org show no differences :

present http://web.archive.org/web/20140219035142/http://python.org/

past http://web.archive.org/web/20131130224018/http://python.org/

update : http://preview.python.org/ in case you see the old

update 2: Am I the only one to want a (js based client side) repl + tutorial and side docs as the basis of any language website ? the new layout is a bit lighter than the old, but it looks like they're selling cookies. Sorry to be ranty.

DNS is tricky. Dump your cache and see what comes up.

twitter just told me to go there http://preview.python.org/

Nice redesign. It'd be neat if that panel of code was a live REPL.

It will be!

Yup :-) The repl will be going live later on today.

Just checked it out. Has numpy, matplotlib, and a few other packages too. Nice!

Yup. Full list of included packages here: https://www.pythonanywhere.com/batteries_included/#a_python3...

...and it's live.


http://www.python.org/admin/ shows Django admin.....sigh...

What's wrong with that?

I'm of the belief that you should reveal as little information as possible regarding your web stack. This alone indicates that they're running Django, although that could probably could have been guessed pretty easily considering it is Python.org . Also, from a security perspective, I would prefer to have the admin site only accessible from an internal network, perhaps on a subdomain, and require people to use a VPN to make any sort of admin changes.

The entire site is Open Source. If you rely on obscurity for security then you've done it wrong.

VPN and the like would be nice but not hardly required.

He's not saying you should rely solely on obscurity for security. He's saying that, in addition to other basic security precautions, the use of obscurity is a good idea. The less a potential attacker knows, the better.

The reason for serving the admin under a non standard URL is rather to get rid of requests issued by robots who are not clever enough to realize it's open source. It's similar to not having your SSH server listening on port 22, which is a pretty common thing to do. Shouldn't be relied on for security, but it declutters log files.

It couldn't hurt, but you shouldn't have to rely on obscurity. Then again it's Python's home page, so it'd be pretty easy to guess that it's probably using Django (especially now that it supports 3). Also it's kind of a dick move to maliciously attack a project as beneficial as Python.

Also, does Ruby's official site run on rails?

Jekyll, actually. Doesn't matter.

Is python.org written in Python? Which frameworks does it use? Where's its source code(Is it open sourced)?

> Is python.org written in Python?

Just look at the source of the landing page. A lot of JavaScript and the usual kinds of structure that modern pages have.

> Where's its source code(Is it open sourced)?

Just right-click the page in your browser and view source.

That's not how web frameworks work. There is code on the server side which _generates_ the HTML, CSS and sometimes Javascript as well. So viewing the source in your browser can give you some clues, but this doesn't reveal what is going on on the server.

Yes, true, but one can derive some ideas about the origin of the page by scanning the source -- certainly more easily than by viewing the end result.

Previous discussion (when this design previewed):


We have entered the age of Lorem Ipsum images hitting production websites :)


Yep, I wasn't able to get to everything. I had to update a ton of the content via the Django admin without a source checkout (which is now available), so I couldn't grep for placeholder text. We'll get it all straightened out.

I'm just as guilty of it as the next web guy, so I hope you didn't think it was a dis.

I love the new site.

Design is often an Achilles' heel of software projects, because if a project is very good, some people tend to think that design is irrelevant because people will still use it. And sometimes they do, but it probably scares a good number of people off.

It's good to see an exception of this rule. They probably needed to hire a professional designer to make this happen, but it was worth it.

IMHO i think they didn't hire a designer for this, although it looks nicer than what it was, the output seems very amateurish for today standars.

In point of fact two companies were the primary contractors for the redesign of python.org, but since I am no longer in the loop I will commend you to wait for an upcoming PSF blog post that will give the details. Design was indeed a major input to the project.

IMO (as a designer), they definitely did. There are a few little niggling issues that catch my eye, like the menus looking like they are too low down because of the line above being light, and below being dark (they should be up 1px IMO), but otherwise it doesn't look bad.

You may not like what they've come up with, but this is not amateur work. That's not to say I love it or don't think it can be improved, but it bears all the hallmarks of a design which has gone through several designers along with a lot of stakeholders adding in what they see as essentials and perhaps making the design messier than it was originally. Getting agreement on these things is sometimes hard, and if lots of people are involved, it can lead to a slightly cluttered feel, esp. on a home page.

I do think it's refreshing that they lead with code samples, that's a really nice idea, and overall think it is looking pretty good (esp. compared to the previous site).

If anything they need to pare it back some more and let the essentials speak rather than cluttering it with too much information, but I don't think I'd describe it as amateur, and if you're going to do so, you should make a far more substantial critique to explain what you consider professional to be.

What makes it amateurish?

>> very amateurish for today standars


Surely "Simple arithmetics" in the second code example should be "Simple arithmetic", singular.

Maybe that's British English, like "maths" instead of "math"?

Pretty sure it's a typo (speaking as a Brit).

In the mother of all pedantic pull requests, I've created https://github.com/python/pythondotorg/pull/77

All the news and events are from 2012.

Colours and fonts are better, but there's too much detail on the homepage imho.

What version of Django is this using?

The fact that the whole site is on github is fantastic. Incredible resource for learning Django development.


According to the requirements.txt (https://github.com/python/pythondotorg/blob/master/requireme...)

I think it would be awesome if the main page had an online interpreter so that a visitor can run the examples in the code slider. Also, I noticed that the project repo has a Procfile, however it starts the Django development server. Do you use Heroku for development testing or production?

Nice work and most definitely a refreshing change.

The interactive repo will be enabled shortly when traffic dies down a bit. We're using try python and it's pretty awesomesauce

We're using PythonAnywhere :-)

It's shaping up nicely. I appreciate it's a responsive design, but please consider the code example slideshow is broken on resize. Also, consider increasing spacing, the content is too crammed below the header.

Great feedback: can you help us track it? https://github.com/proevo/pythondotorg

And thet day has finally come, first php.net and now python.org. But the site although looks nicer, is just too much in my face and my lazyness just make me leave it before even think to explore it.

Overall it looks good. I miss that code console isn't actual REPL.

+1. A repl is definitely better.

Also, the size of the console grows larger for demo 3, and shrinks back when I go for other demos. I may have a bigger font than usual, but can it be fixed?

It will be some time tomorrow, we disabled for the launch to reduce the number of moving pieces changing at once.

It looks somewhat influenced by the current Ruby webpage.

One minus is that some of the color choices on the code blocks are not optimal. Dark grey on black is not exactly the most readable..

Congratulations, Python team! Your website is now identical to the hundreds of other bootstrap-based websites.

Moreover, the page is somewhat confusing, especially with non-obvious menus, and language that makes links seem redundant. Multiple navbars don't help, either. The page also lacks contrast, especially at the top.

I understand that javascript is generally a safe assumption, but the page should at least be readable and navigable without javascript (or webfonts). Also, it would be better if all the js were at python.org, instead of hotlinking to different domains. As it stands, the page is nowhere near as bad as some, but it's a nice touch.

Why does the site return gzipped content for curl? I'm fairly certain curl doesn't provide the 'Accept-Encoding' header by default.

Can't create a new account from the login screen.

At this time accounts are only for site administrators.

Beginning Python 2.x users are going to be confused by slide 2, which says that division produces floats. Not in my Python they don't!

I'm working towards building out community-driven code samples for the site. Please remember this feedback and help contribute to the samples in the future!

Hell yes! I saw a prototype at PyCon last year and this is just awesome, really great stuff. Glad to see Python continue to evolve.

Looks pretty, but the middle green on dark blue/grey makes it hard to read the actual Python code.

I am very glad to see TurboGears linked in the "Use Python for Web Programming" section.

Upcoming events lists events from 2012

What ?

Right, what's with that?

Now if only the docs could look this nice

have you looked at Python 3.3 docs? I think they look really clean and nice.

I actually prefer the 2.x docs (stylewise). While the 3.x docs do look clean I just personally don't find them very appealing. I think the 2.x docs also match the new python.org much better.

I like it, looks simple and functional.

All the news links are #example.

And the upcoming events links too. Not to mention that they're all from 2012?

The Jobs tab looks too sad. :D

The link in the middle of the page goes to jobs.python.org which doesn't exist. Chrome's "Did you mean" recommends python.org/jobs/ but that gives a pretty looking 404 at least.

Someone should tell them that their font icons don't display properly in Firefox. Did a drunken lemur design this? sigh

Click the big yellow "feedback" button on the right.

Include what platform you are using, what version of what browser and which specific icons look like what.

Looks just fine in my FF, same as in Safari.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact