As a Spyce user, it helps to understand the broad design goals of this tool.
Spyce is designed to be:
Feature poor: The philosophy behind the design of Spyce is only
to include features that particularly enhance its functionality over the
wealth that is already available from within Python. One can readily import
and use Python modules for many functions, and there is no need to recode
large bodies of functionality.
Small: There is an active push keep Spyce small, especially the
core engine. The engine currently stands at 3600 lines of code. The
standard modules comprise another 2000 lines.
Modular: Spyce is built to be extended with Spyce modules that
provide additional functionality over the core engine capabilities and
standard Python modules. New features in the core engine and language are
rationalised against the option of creating a new module. Standard Spyce
modules are those that are considered useful in a general setting and are
included in the default Spyce distribution. Users and third-parties are
encouraged to develop their own Spyce modules.
Intuitive: Obey user expectations.
Convenient: Using Spyce should be made as efficient as possible.
This, for example, is the reason behind the choice of [[ as delimeters over alternatives such as <? (php) and <% (jsp).
Functions and modules are also designed with as many defaults as possible.
Single-purpose: To be the best, most versatile, wildly-popular
Python-based dynamic HTML engine. Nothing more; nothing less.
Fast: Performance is important. It is expected that Spyce will
perform comparably with any other dynamic, scripting solutions available. Of
paramount importance, however, is clean design and syntax, and high degree
of modularity and usability. The philosophy is to build and tweak only when
necessary and only for significant performance gains, tested
empirically.