On Fri, Apr 15, 2011 at 11:56 AM, Matt Towers <[email protected]> wrote: > Hi Everyone, > Just joined the list today and looking forward to learning more. > My company is in the process of ditching PHP as our web framework and > strongly leaning towards Python, though Ruby is in the running as well. I > only have limited experience with both but will be ultimately responsible > for the application. Can anyone here comment on the relative strengths of > Python over Ruby (or vice-versa)? Some of the factors we're considering > are: > How do the learning curves compare for someone with a strong background in > traditional object oriented design and languages (C++, Java, C#, etc.)? > Is there a decently sized pool skilled Python web developers in the Seattle > area? > Given the maturity of Python, I assume there are large number of developer > tools and libraries out there, but in terms of web development are there any > obviously missing components found in other frameworks?
Hi Matt. I've been a Python web developer for eleven years so I've seen libraries and programming trends come and go. The language is "complete" in terms of what web developers have needed. And since a lot of companies are using Python web software including Reddit, Google, movie animators, scientific researchers, ITA (airline reservation database) and the like, they've filled in any missing pieces. The current generation of frameworks since 2005 (Django, Pyramid/Pylons, TurboGears, etc) were written to compete with Ruby on Rails, so they provide the same concept even though they may differ in specifics. Python's biggest growing pain is probably its package-downloading-and-installation utilities which are still fragmented (pip vs easy_install etc); this sometimes necessitates some extra work when installing packages. But that's a minor annoyance that's only indirectly related to web development, and the developers are working to clean it up. I haven't used Rails or Ruby myself so I can't compare their features to Python. I started to look at Ruby but found its syntax too Perl-like for my taste. (I am an ex Perl and PHP user.) But there are people on the SeaPIG list who use both Python and Ruby so there's overlap between the user groups. The first think you'll notice about Python is the large number of web frameworks. The difficulty is in choosing. The good thing is that they're more interoperable than they were five or even three years ago so they're converging. They'll probably never converge into one because there are a few different patterns for designing web sites, and different people like different patterns. I'm involved with a project called Pylons that over the past year has taken several frameworks under its umbrella and merged their developer communities, so that they can share ideas and implementations. Their current project is Pyramid, which reached 1.0 a month or two ago. It was designed to support multiple design patterns, and these are gradually being implemented by higher-level software, so that the app developer can choose which pattern he prefers and change his mind later, without having to abandon the framework and go to a completely different one. My main suggestion is that when exploring Python, take a look at several of these frameworks and consider which one best meets your needs and inclinations, as well as your possible long-term needs. Django has been mentioned several times and it's one of the largest and has good documentation, but it can also give the impression that Django is Python web development and there's nothing beyond it, and that's not true. it all comes down to what kind of person you and your company's developers are, what kind of site you're building and your particular needs, etc. Django has good documentation and a large user base; on the other hand it's more "monolithic" and less interoperable than most Python alternatives. It's great if you find what you need in Django. It's less great if you find that what you want is outside Django. For instance, Django has an object-relational mapper (to connect your Python objects to database tables and columns) which is widely seen as easy to use, but if you go beyond it (e.g., to SQLAlchemy) you'll find that many of the framework's features don't go with you (e.g., the db admin screens). This is a limitation which may not be apparent at the beginning. Again, it all comes down to what kind of libraries you're looking for and which features are most important to you. If you look around and later want to have a discussion about your needs and the advantages/disadvantages of various Python packages, we can do that either at a SeaPIG meeting or convene a small group outside the meeting to discuss the possibilities. -- Mike Orr <[email protected]>
