doc/book/en/20-01-intro.en.txt
author Nicolas Chauvat <nicolas.chauvat@logilab.fr>
Thu, 20 Nov 2008 15:04:33 +0100
changeset 109 10b63bb96e70
parent 108 60faaa480f02
child 111 7a06f06de32f
permissions -rw-r--r--
[doc] fix reference to GAE

.. -*- coding: utf-8 -*-

Introduction
============

What is  `Google AppEngine` ?
------------------------------

`Google AppEngine`_ is provided with a partial port of the `Django`
framework, but Google stated at Google IO 2008 that it would not
support a specific Python web framework and that all
community-supported frameworks would be more than welcome[1]_. 

Therefore Logilab_ ported `CubicWeb` to run on top of `Google AppEngine`'s
datastore.

.. _`Google AppEngine`: http://code.google.com/appengine/docs/whatisgoogleappengine.html
.. _Logilab: http://www.logilab.fr/
.. [1] for more on this matter, read our blog at http://www.logilab.org/blogentry/5216


Essentials
----------

XXXFIXME MERGE WITH 02-foundation.en.txt

Schema

  The schema defines the data model of an application as entities and
  relationships. It is the core of an application.  Entities and
  relationships are modeled with a comprehensive language made of
  Python classes. 

Query language

  A full-blown query language named RQL is used to formulate 
  requests to the datastore.

Result set

  A resultset encapsulates the results of a request sent to
  the datastore and informations about this request.  

Views 

  A view is applied to a `result set` to present it as HTML, XML,
  JSON, CSV, etc. Views are implemented as Python classes. There is no
  templating language.

Generated user interface

  A user interface is generated on-the-fly from the schema definition:
  entities can be created, displayed, updated and deleted. As display
  views are not very fancy, it is usually necessary to develop your
  own. Any generated view can be overridden by defining a new one with
  the same identifier.

Components

  Pieces of schema and sets of views can be combined into
  components. Larger applications can be built faster by importing
  components, adding entities and relationships and overriding the
  views that need to display or edit informations not provided by
  components.