Python web application framework

Journal Entries

Avatar

para variar, peleando con zope / zope3 Miuler — 3 months ago

See All Journal Entries


Ratings & Reviews

Community Rating
4.6/5.0

Based on 24 user ratings.

Your Rating

Click to rate this project.

Links

6 links submitted so far. Submit your own links.

News

Edit RSS feeds.

    Lighting talks thursday

    It is about collaboration between healthcare professionals. A patient record
    shared between several health actors in charge of a common patient. The
    family doctor has a coordinating role.
    There's already a lot of health care open source ... [More] software, but they don't talk
    together. So there is a need for a more modular approach in order to share
    those components. Python seems a good match for the project, but they need
    technical help for this. See the open source working groups of the

    The GAE isn't really portable. That's just for practical issues, not by
    design. One of the barriers is the datastore. So he chose to reimplement
    the datastore (as alternatives weren't practical yet). Targeting small to
    medium apps. In the end he went for BDB which shared some features with the
    original google data store. He uses java for it, for instance as Python's
    protocol buffers are dog slow. And the java implementation of BDB is pretty
    good and solves some issues with the normal BDB.

    Python and excel: you could use CSV or the "HTML hack". There's something
    better: . This can directly read
    and write excel files.

    It collects declared dependencies between eggs as a tree. And it can
    visualize them using dot/graphviz. You can filter out uninteresting packages
    (like setuptools) and zoom in on the dependencies of one specific package.
    You can also group for instance all zope.tal.* packages into one zope.tal node
    to make the image cleaner. And you can even filter by regular expression.

    is an open access server platform for
    institutional repositories. The server manipulates OAI feeds that are in some
    xml format. One of the users is which actually is the birth
    place of Python. Infrae harvested the 8963 documents in CWI's repository. So
    in the demo Kit was able to find 16 documents by a certain Guido van Rossum
    from 1995.
    So 14 years after Guido left CWI, the first fully fledged Python application
    is installed at CWI. Python has come home!

    He demonstrates amazon's cloud stuff. Cloudware is outsourced virtualization.
    So a virtual server or storage hosted on a remote platform. The two well
    known once are Amazon Web Services and Google's app engine. It is good for
    scaling on demand. And you can get some outsourcing of your
    infrastructure. The oldest of Amazon's web services is S3, the storage
    solution. There are Python libraries to connect to it and manage it.

    Shooting is not too good for my enemies. There is no software bug for which
    shooting is not the good solution.
    Take a 5 year old as an advisor. They will always spot the flaws in your
    plans. So always have someone else look at your code.
    Do not consume any more energy than will fit in your head. So no
    metaclasses.
    If I have an unstoppable superweapen, I will use it as early and often as
    possible. So pdb instead of print statements.
    "Push the button" should be enough. Automate everything. Don't do long
    manual steps or the hero will slay you.

    Governments are turning the internet and the mobile networks into the greatest
    mass surveillance system ever. Iran likes that as it can use
    surveillance software and our data-retaining mobile infrastructure to retain
    all the protesters SMS messages and analyze them afterwards... So our western
    measures enacted for our protection is going to send thousands of Iranians
    into the torture chambers.
    And the government in some countries is allowed to put trojan horses on your
    devices. And the government in Germany can in the future sensor any webpage
    they want. Just by executive decision instead of democratic process. And
    France tries to put a three-strikes law into effect.
    And all that even though the internet is so great. But it is turning into a
    huge surveillance database for the government. There are technical
    counter-strategies. Unlocatable content. Untrackable connections.
    Untrackable access. And there are political counter-strategies like blogging,
    involvement, twitter, etc.

    He showed an event-like system used for re-rendering placeholder-tags in an
    html page with the real content.

    At the end of July there'll be a European conference for Python in science in
    Leipzig, Germany.

    They're working on a new Python IDE: pycharm. Currently a plugin for intelliJ
    IDEA, but soon standalone. See . Price not yet
    announced, should be available later this year.
    He demoed it with nice warnings, quite intelligent autocompletion. Integrated
    test support. Snippets. Display of docstrings for methods with just a
    keyboard shortcut.

    He showed a speed test of a normal and a pure Python property implementation
    to see how much psyco2 can speed that up. On average, there was a 100x
    improvement. There'll be a psyco2 release on Saturday.

    There are self-service terminals at his university (Wirtschaftsuniversitaet
    Wien), implemented with Python, for paying study fees, taking photos, etc. So
    a card reader, printer, touch screen, etc. All vandal-proof.
    The hardest thing of the project was to communicate with all the hardware.
    There's a watchdog that monitors a subversion repo for updates. And it starts
    the main program. Zope is used with xmlrpc for the data. The data is stored
    in an oracle database. The use mostly WXPython widgets for the user
    interface. Quite big buttons as the interface is a touch screen.

    Please use political activism to prevent the recording industry from being
    allowed to lift us from our beds in the middle of the night for horrid crimes
    like downloading stuff or even developing open source software. It a
    very real danger. We prevailed against software patents after a long
    struggle. There must
    be the ones to do the talking.

    PSI is a Python C extension to get information from the kernel via system
    calls and kernel hooks and so. It currently supports most unixy platforms
    already, but BSD is lacking and windows too. They do want to add that.

    . Erlang is a
    functional language with a focus on scalability. There is an "ERM" protocol
    to communicate between nodes, which is documented. CouchDB is one of the nice
    applications made with Erlang. But as a Python programmer we want to access
    that too.
    TwOTP has parsing/packing to/from Python types, an EPMD deamon implementation
    and implementations for server and client protocols. And monitoring of Erlang
    processes. Send and receive messages from/to Erlang processes. The good
    thing: every Python goodie is available to develop with, like UI, web
    libraries and database interfaces. Several of those things are hard(er) with
    Erlang.

    Most numerical analysis is still done with Fortran. Not nice. So he tried to
    do it with Python. All the goodies like eigenvalues, green functions, plots
    of the green functions. The number of lines in the program was much lower
    than with a comparable Fortran program. He hopes that the Python community
    will work towards promoting the scientific application of Python. It is so
    much nicer.

    Filterpype: "complex systems in 10 lines of code". A classic case of a filter
    and pipe system is an oil refinery. With filterpype you can also work with
    pipes and filters: from source to sink.
    There are base classes for all sorts of filters. Stuff you can do? Just pass
    it on, bzip compression, etc. You tie the filters together in a pipeline with
    a small config file that specifies the route between the various filters.

    Django's admin interface is highly customizable. At his company he needed to
    make some modifications, especially adding reports for their issues database.
    In the end, he generated reports with word by using a template in word's xml
    format where he could get the software to fill in data. The template was
    simply uploaded to the site. The documentation on how he did it is all on the
    wiki of djangoproject.org.

    Use it, it really changes the way you program. It is real easy to make a
    clean copy of something, work on it and possibly push the changes back. He
    thinks there should be more tools like that. For instance for bug reports:
    there is a tool that embeds bug reports in such a DVCS.
    is something that he made that
    embeds a wiki in the DVCS, including the whole page history. It comes with a
    small web server that you run straight from your DVCS checkout, so you can
    easily browse your version of the wiki and even change it via the web
    interface. And also directly in the source file, of course. [Less]

    Province of Ferrara's virtual desktop: a flexible Plone application from a PloneGov member

    A Plone "Intelligent Intranet" suite of applications, integrating document and dossier management with ISO 9001:2000 - certified organization processes, used in a mid-sized Italian Public Organization, is going to be reused by other similar organizations of the Italian PloneGov subcommunity

    Things I helped create (Martijn Faassen)

    Comment beforehand: this is just a dump of some quotes hurriedly typed down
    while Martijn rattled on. Pick some nice ones out of the list and be happy.
    This talk is about creativity in programming. Especially creating open ... [More] source
    software. Some of his comments will contradict each other, which is fine.
    Both are valid, then, and just need to be weighed against each other. Sleep
    on it, pick one and change it later on if you're wrong.
    . You might not reach it, but you at least
    created something.
    If you are inexperienced with the tools of creation, find a mentor. (He was
    helped by his father for his first project).
    Inexperienced programmers often look for a trick or code snippet if they
    encounter a problem without understanding it. They lack the knowledge to
    really apply the basic idea in other situations. Knowledge helps to
    generalize and generalization helps creativity.

    Access to knowledge is greatly improved. Even early-80's MSX assembly codes
    are easy to google now.
    If all goals look infeasible, you might not create anything at all. Writing a
    computer game in the 1980's seemed feasible. Writing a full 3D game now?
    Seems hard.
    something from
    it.

    Networks stimulate creation. Networks bring creations in front of
    people.

    Martijn re-discovered the joy of quick creation in 1998 with python like he
    had with basic (in contrast to C++).

    God said
    "let there be light" and there was light) sometimes also works for people.
    Speak up, announce something, start something.
    A community around software forms more easily if the software aims at
    developers instead of end-users as developers are more easily converted to
    contributors.

    To create a business together with someone else is one of the most educational
    things you can ever do with your life.
    A creation is successful if it continues to evolve after you're no longer
    involved.
    It is easier to make a creation evolve without you if you are not alone in its
    creation.

    Getting an idea is often overvalued. Implementation is most-times what
    counts.
    If you want a community to create something, avoid doing all the work
    yourself.
    Name recognition is useful in creation. Just making regular noise on a
    mailinglist might be enough.
    Europython was basically started by Martijn. He mailed Guido that there was
    to be a EU python conference and whether he wanted to attend ("yes"). Then he
    mailed around in the EU that Guido was coming to the EU python conference and
    asked for volunteers to help organize it. So others did the work and we have
    now Europython conferences.
    Create something because it is cool. Not because it will succeed but because
    you will learn something from it.
    Integration is a form of creation. Integration of software can integrate
    communities. (Example: the Five project that brought zope2 and zope3 back
    together).
    Talk about what you create. Use some oft-repeated phrases in those talks.
    "Evolution, not revolution" for instance. After a while people were picking
    up these phrases.
    Separate concerns. Each component gets a clearer purpose and clearer
    boundaries. And the basic components become candidates for reuse. [Less]

    Metaprogramming and decorators (Bruce Eckel)

    . Several
    languages have something like that. C++'s template metaprogramming (which is
    too difficult for most people). Java has aspect oriented programming and
    annotations. Ruby can add methods to metaclass objects. Python first ... [More] had
    metaclasses and moved on to the much simpler decorators afterwards.
    You use metaprogramming when you start to repeat yourself over and over again
    but you cannot filter out a common method or base class.
    Built-in decorators in python are @property, @classmethod, @contextmanager.
    Twisted, turbogears, django and zope all have their own decorators for common
    tasks. Someone came up with an argument checker for
    checking the type of method arguments. And a decorator can store
    a method's result in a cache so that the method only has to calculate
    everything once and that the cached value is returned afterwards, all without
    having to deal with it in the method itself as the decorator handles it in a
    generic manner.

    def addstring(function):
    function.mystring = 'added string'
    return function
    @addstring
    def f():
    return 1

    >>> f()
    1
    >>> f.mystring
    'added string'
    decorator gets passed the item it applies to and returns
    it again. But modifying it in-between. The way it works is extremely simple,
    but the effect is big and very useful. It gets a bit more evolved when you want to
    pass an argument to the decorator (), but that's what
    examples are for. See for instance the
    . They work on a whole class
    instead of on a function. Typical use is to register the class somewhere or
    to augment it. For example adding the rest of the
    ordering methods give one of
    Metaclasses are still part of the python language. A big problem is that a
    metaclass is more or less hidden; decorators are visible right in front of
    your class, on the line above. In plain sight. Metaclasses are much harder
    to understand and should only be used in special cases.
    in
    addition to is what gets fed into
    , so if you need to do some fiddling with the inheritance tree
    or other specialized weird thing, you can just use instead of
    using metaclasses.
    Again, if you only want to add some attributes/methods or register the class
    or so: just use a simple decorator.
    ) presentation on "class decorators:
    radically simple", see
    Summary: decorators are easy and very useful. Don't forget to use
    .
    Metaclasses are hardly ever needed and when you need it you'll that you
    need it. [Less]

    Semantic applications with CubicWeb (Nicolas Chauvat)

    the semantic web is a construction
    game
    The value of a network like the current internet grows exponentially with the
    amount of information that is available and linked. The semantic web extends
    that linking to data instead of just ... [More] documents.
    The semantic web is a world-wide database with URLs as the keys into the
    "database". Specific semantic web formats include RDF and OWL. And
    ontologies describe what you're describing. There's even a specific query
    language: SPARQL.
    Our current frameworks don't really support all this, so we need adapted
    frameworks. For instance what did with
    cubicweb. Cubic has a couple of core concepts. An entity-relationship model
    of the data. Views to present results of queries (RQL, soon SPARQL). The
    visible web app uses html and json views; there are also views that
    output rdf and owl.
    Cubicweb's back-end combines/aggregates various sources such as sql, RQL, LDAP,
    comma separated files and is queryable with RQL. So if you don't like the
    second layer (the web engine), you can always reuse the back-end layer as that
    only communicates with plain queries. The aggregation allows you to store for
    instance metadata in an sql database ("last modification time" and so),
    cubicweb will aggregate it. In his demo at the end he showed turbogears as a
    front-end as proof that you can use the back-end separately.
    For the front-end, there is support for partially generated user interfaces.
    And there is a library of reusable components (called "cubes").
    They're keen on agile methodologies at Logilab. So cubicweb supports that.
    For instance by generating a basic CRUD (create, delete, etc) user interface
    based on a data model. That's all you need to get started. You can then
    improve views progressively. And there's support for data migration as the
    data of course also evolves. They're using cubicweb internally in logilab for
    5 years now and always managed to migrate the older content.
    Aformentioned "cubes" are python classes that define their attributes in a
    schema style (like zope's schema). There are more frameworks that do that
    now, but 7 years ago it was much less common. Those entities are tied
    together by relations: also a class, but now with a and an
    attribute (so source/target for the relation). Semantic web style
    linking! Cubicweb aggregates all those cubes' content so that you can query
    it.
    Some examples of build-in semantic views: owl, foaf (friend of a friend,
    social networking), doap (description of a project) and a couple of common
    microformats as RDFa, iCal, vCard. [Less]

Read all Zope 3 articles…


Who uses Zope 3?

Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar

Who contributes to Zope 3?

Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar
I'm a contributor

Who manages Zope 3?

I'm a manager

Where in the world?



Related Projects by Tags

Grok, ict-ok.org, Key Solutions Releases, s3storage, z3book



Project Cost

This calculator estimates how much it would cost to hire a team to write this project from scratch. More »
Include
Codebase 214,797
Effort (est.) 54 Person Years
Avg. Salary $ year
$ 2,986,309