Evasion Project

license:Evasion Project COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
URI:http://www.evasionproject.com

What is it?

The EvasionProject is a toolbox that allows you to make Point of Sale (POS), Ticket Pickup Machines or other types of applications. It is written in Python for rapid development and cross platform support.

For example a ticket pickup system would use the following parts:

Director: This is the “main” program which loads and monitors the program parts. The director runs a broker all other parts can connect to publish and / or subscribe to signals.

Agency: This is used to load agents that could drive a ticket printer, payment device or magswipe. Each agent can communicate with anyone connected to the broker via signals. The agency is managed by the director.

Web: This is a web application which provides the GUI for the ticket pickup system. It is run and managed as a process under the director.

Viewpoint: This is a special internet browser the director can run and point at the web application. The web application can signal the viewpoint to change what it is looking at. The viewpoint can be managed by the director or run outside of its control.

Who uses it?

NewmanOnline provides a Cinema Administration and Ticketting system. It uses the EvasionProject as the basis for its Windows based ATM, Kiosk and Usherpoint systems. These are used through-out Europe and allow for unmanned sales and pickup.

PythonPro uses the EvasionProject as the basis for its Prepay Internet Cafe system. It is used to manage the various part of its highly customised Linux client.

Why Use it?

  • The EvasionProject runs on most major platform Windows, Linux or Mac OSX.
  • The project is a highly modular toolbox, you can use all of it or just the parts you need.
  • The project allows a web application developer to escape the confines of “just” web development.

Project Parts

The project “toolbox” is made up of a number of parts. Each of these parts is a Python package under the “evasion” namespace.

Director

The “evasion.director” is an init.d like management program. It runs and maintains the broker, agency, web application, viewpoint and any other program under its care.

The director uses simple INI based configuration. It can be configured to run an arbitrary amount of programs used to make up an application.

Broker

The broker is the heart of messaging and hardware abstraction. The “evasion.messenger” library is the higher level library all parts use when dealing with it. The director provides its own STOMP broker based on the MorbidQ_by default. For larger scale systems, distributed across a network, other brokers could be used for example ActiveMQ or RabbitMQ. This would allow for seamless scalability as the messaging traffic increases.

Agency

The agency manages the hardware drivers called agents. An agent is simply a special Python package conforming to a certain interface. The agents are dynamically loaded from director configuration at run time.

Viewpoint

The viewpoint is a XUL application which is run on the latest Firefox or GRE (Gecko Runtime Environment). This allows your web application to use the very latest features of HTML5, CSS3 and Javascript. This viewpoint also provides a single browser type to develop for. This means no hack are needed to support other browsers. If Firefox supports it, you can use it!

The Evasion viewpoint is generally a reference implementation and companies to to branch it and implement their own versions. This allows you to customise the start or screen or further refine the interface.

Web

The “evasion.web” is a customised version of the Pylons web framework. It allows a web application to be made out of “Apps”. Each “App” could provide all of the web application or specific parts. Each App is a special Python package. They can derive from each other and so can allow highly reuseable functionality to be developed.

“evasion.web” can be used on its own and is not dependant on the other parts. It could also be potentially be replaced with other web framework such as Django, Flask, etc. You could even decide to use static files and javascript to generate the interface.

Table Of Contents

Next topic

Evasion Director

This Page