Tech stack for Python aurweb

Lukas Fleischer lfleischer at archlinux.org
Mon May 18 21:49:41 UTC 2020


Context: In light of growing demand/requests for modernizing the aurweb
code base and switching the code base to a more popular programming
language, we did some preparatory research and work to allow for writing
new subsystems in Python. Frédéric proposed a lightweight dual stack
implementation that allows us to implement different parts of the
website with different tech stacks.

A full rewrite, as proposed before, can be carried out gradually and
ported subsystems will be usable early. Independent of these efforts, we
suggest that new subsystems will be written in Python and any components
that undergo major changes should be reimplemented in Python if the
extra effort is manageable.

With a dual stack PoC and a first use case (SSO), I would like to
briefly discuss some design decisions before we start implementing.

Everybody involved in these efforts seemed to prefer Flask [1] so far.
It's a mature micro framework and has a relatively low barrier of entry.

Being the default template engine for Flask, Jinja [2] is a natural
choice. PHP and Python versions of base templates will co-exist. Despite
the fact that these base templates are rarely modified and maintaining
two copies will not involve significant extra work, it is beneficial to
deduplicate as much as possible. With this in mind, a language agnostic
engine such as mustache [3] might be an option worth considering. This
is open for discussion.

As briefly discussed before, SQLAlchemy [4] will be used as database
toolkit.

We appreciate any comments and we would be happy to discuss alternative
frameworks/toolkits.

If I forgot any important aspect here, please feel free to chime in too!

[1] https://flask.palletsprojects.com/
[2] https://palletsprojects.com/p/jinja/
[3] https://mustache.github.io/
[4] https://www.sqlalchemy.org/


More information about the aur-dev mailing list