web2py design, future, license, and other thoughts

12 views
Skip to first unread message

mdipierro

unread,
Sep 24, 2009, 7:28:54 PM9/24/09
to web2py-users
Once in a while I get questions about license (why not BSD?) or future
(why not change it and break backward compatibility? why not move to
python3).

Well. There are many frameworks that do that. I wrote web2py because I
do not like it.

Web2py was not designed to please web2py contributors (sorry). Web2py
was designed to please the users and make sure their code does not
break as we evolve web2py. This allows us to guarantee them backward
compatibility and allows them to be sure they can invest in web2py
long term.

**This is its strongest selling point. This is what we should
emphasize and make clear to our friends.**

This does not mean we will not keep improving web2py. We have been
doing it constantly.

This does not mean that there cannot be forks that take a different
direction. Although those forks cannot be called web2py in order to
avoid confusion to users.

This does not mean there is life after web2py. There will be something
and we'll learn from our mistakes but whatever follow web2py has to be
drastically different for me to have an interest in it.

This does not mean that web2py is perfect as it is. What is perfect
anyway? It is subjective. (This reminds me of that housewife that
keeps rearranging the kitchen. Is there a better arrangement than the
one the other family members have already learned and allows them to
find utensils quickly without thinking?)

This does mean that we, developers and contributors, may sometime have
have to put extra work to fit new features into the existing design. I
say may because I do not think it was a problem so far.

This does not mean that we cannot rearrange the code internally. I am
open to experimentation.

This does not mean that we cannot create new programming paradigms
(for example new widgets that contain validators) as long as existing
syntax continues to be supported.

This does not mean that we cannot use other repositories for web2py
code although I think we agreed some time ago to move to mercurial +
google code. I am still leaning that way since launchpad is too slow.
I apologize for the delays but the book took precedence.

My main job here is to make sure that patches do not break existing
code and conform to the web2py spirit.

This is not negotiable.


Some people have criticized the current exec in environment where some
modules are already imported. They say it is not Pythonic. I do not
care. That is one of the main distinct features of web2py:
do_no_repeat_yourself in web2py takes precedence over
explicit_is_better than implicit. This is what makes Rails still more
popular than Django. web2py moves one step further than Rails by
giving more things an implicit default, including views. I do not
think this is a weakness. This is another selling point. Moreover the
current design has been developed to avoid conflicts between apps that
need different versions of the same libraries or libraries that have
name conflicts. Without it the imports would become depend on the
order of items in pythonpath and the order of execution of apps. This
is a big can of worms that we do not have to deal with. Currently you
can import an app in web2py written by somebody else with its own
modules and you do not need to worry about conflicts.

Some of the critiques have come from members of the python community
who have a vision about what a web framework should be: it should be
more like Pylons or more like Django or more like Cherrypy or more
like one of the other web frameworks. I respect their vision and I am
not asking them to use web2py nor to contribute to it. I take a more
pragmatic approach. My ideal web framework is one that makes life
easier to those who want to learn it for the first time and, secondly,
to those who use it at a professional level. If this means breaking
some programming paradigms that are considered standard in the python
community then be it, as long as we conform to good security and
software engineering standards. I do not agree with everything the
python community does. In particular I do not think that Python 3 was
a very good idea. I do not think the changes were significant enough
to justify breaking every existing python program out there.

What makes me happy is that people who have actually tried web2py seem
to like it.

Massimo

Álvaro Justen [Turicas]

unread,
Sep 24, 2009, 8:30:59 PM9/24/09
to web...@googlegroups.com
This email should be in web2py's site.
These concepts and ideias need to me more explicity than implicity! ;-)
I think we also need to include that web2py is not only a web
framework that we import tools and use: web2py, really, create Python
code for us (yes! And because of it we don't need to use imports on
controllers, for example). I think web2py can't be compared directly
to other web frameworks because they are simply a lot of tools that
you import and use, web2py have these tools but it is a bit more.
--
Álvaro Justen
Peta5 - Telecomunicações e Software Livre
21 3021-6001 / 9898-0141
http://www.peta5.com.br/

mr.freeze

unread,
Sep 25, 2009, 7:34:12 AM9/25/09
to web2py-users
Well said!

Beerc

unread,
Sep 25, 2009, 5:59:47 AM9/25/09
to web2py-users
I completely agree with Massimo sentence by sentence, and with Álvaro
too.

While I love Python and web development, I didn't fully love *web
programming in Python*, because superfluously hard. Lots of boring
repetitions, I *must* set too much options, many compatibility
problems between framework components and framework versions. These
are *shames* for a very high level language!

PHP is a blatant mistake. But for simple, cheap web development PHP is
*the* best option. There is a huge variety of applications out there,
ready to customize. Easy to install, easy to understand, easy to
adapt. And in cheap projects who cares for minor security holes and
other laments of software engineers?!

Java is life-belt for C/C++/{...} enthusiasts but huge ballast for
agile development. However for bigger, more expensive projects Java is
better than Python. Though it's very and proudly enterprisey, but
easier to sell to management and clients. And while laborious, helps
to detect coding errors. If you follow the guidelines and best
practices, after many months and burning a big pile of cash you will
receive reliable and calculable results. Everybody will be happy,
except you. But in expensive projects who cares for happiness of
software engineers?!

Until web2py. Now I love web development in Python :). Web2py is
perfect for minor projects, with free hosting on GAE and cheap WSGI
hosts. Has some good applications, ready to customize. Easy to
install, easy to understand. Easy to adapt to WSGI based components.
Strong in security. Supports agile in many ways. Sooner or later it
will be easy to sell to management and clients, at least I hope. And
I'm happy with it *now*.
Reply all
Reply to author
Forward
0 new messages