bittner edited this page Aug 15, 2012 · 19 revisions

What is pyjs?

pyjs is a Rich Internet Application (RIA) Development Platform for both Web and Desktop. With pyjs you can write your JavaScript-powered web applications entirely in Python.

pyjs contains a Python-to-JavaScript compiler, an AJAX framework and a Widget Set API. pyjs started life as a Python port of Google Web Toolkit, the Java-to-JavaScript compiler.

What is pyjs Desktop?

pyjs Desktop allows the exact same Python web application source code to be executed as a standalone desktop application (running under Python) instead of being stuck in a Web browser.

For Free Software platforms, most Linux Distributions now come with pyjs and pyjs Desktop pre-packaged: Debian/Testing, FC13, ArchLinux and Gentoo.

For Windows, pyjs Desktop uses MSHTML. Since MSHTML comes pre-installed on Windows (as part of IE), there is very little extra to download (other than Python itself).

Why should I use pyjs?

You can write web applications in Python - a readable programming language - instead of in HTML and JavaScript, both of which become quickly unreadable for even medium-sized applications. Your application's design can benefit from encapsulating high level concepts into classes and modules (instead of trying to fit as much HTML as you can stand into one page); you can reuse - and import - classes and modules.

Also, the AJAX library takes care of all the browser interoperability issues on your behalf, leaving you free to focus on application development instead of learning all the "usual" browser incompatibilities.

Who are the developers?

  • The original code for the UI Widget Set and the DOM support libraries came from Google Web Toolkit, and was ported by James Tauber. James wrote the original pyjs compiler.
  • Luke Leighton took over the project in 2008, and updated the UI Widget Set, improved the compiler and created the three pyjs Desktop runtimes.
  • Bernd Dorn and his colleagues from Lovely Systems did some dramatic compiler improvements for 0.5.
  • Kees Bos joined because he was not interested in learning JavaScript, but learn he definitely did. Kees is responsible for the majority of the vast improvements and the more esoteric Python interoperability in the compiler, such as "yield", long data type and much much more.
  • C Anthony Risinger took over the project in 2012 to improve the infrastructure and make the project more appealing to a larger audience.

Project responsibility matrix

The following table attempts to depict all duties seen in the pyjs project, and their appointed responsible project members. Note that contributions are always welcome in any area by anyone, no need to be listed here! Though, if you feel you want to take over an area, even a new one, drive it to success, make something better than it is done now, please say so on our mailing list: this list can grow!

Area Responsible Description / Comment
General infrastructure C Anthony Risinger Github management, repository care
Process automation Lex Berezhny Github processes, continuous integration
Social media Peter Bittner Twitter monitoring, general website care