Pure python web application development is becoming a hot topic. With Anaconda backing and developing PyScript and a major software company adopting Streamlit, pure python web application development is here to stay… finally. My guide to pure python web applications has been through many phases and it is time for a serious revamping once again.
First Some History
About 2 years ago, the idea of using only Python to develop web applications started gaining traction. To be sure, there were solutions 5-10 years ago – Anvil, Nagare, Reahl and Muntjac were all solving industrial strength problems at corporate level using Python only. And of those 4, only 3 are still actively maintained… Muntjac has not been maintained.
So, being enamored of the metalinguistic beauty of pure python web application development, I did the following:
- I first tossed up a Github readme and started listing pure python web application solutions there
- I was not happy with the ability to have a table of contents, so I moved over to a Google docs document and also started classifying the pure python web application solutions as one of 3 things:
- Builders – tools that are designed as libraries that other things can build frameworks on. E.g. Anvil is built on Skulpt and PyScript is built on Pyodide,.
- Frameworks – things that compete and are just as feature-complete as Django or Flask – NO EXCEPTIONS.
- Other – things that only generate HTML or have other limitations.
- After awhile, I thought hard about things I wanted people to be able to reach for a complete solution and never started with a solution but not be able to scale out. The most popular pure python web application solution is Streamlit, hands down. But it is by no means the most complete or the most technically sound. And many a person have faced a headache after drinking the Streamlit k00l-aid: it is great for simple things but a PITA to scale out. The same goes for Dash…. that was when I came up with the idea of creating classes of solutions – Class A, Class B, Class C, etc as well as a strict set of criteria to be considered Class A. But really, the class distinction is not fair because certain things are simply building blocks – they do a simple thing and do it well – they are not a lower class. They simply are not feature-complete and should not be.
The current pure python web application list has pros and cons:
- It has a table of contents that allows for multiple levels of overview and navigation
- Authors can (and have) contacted me using the contact system for the blog
Cons (and there are many)
- the table of contents does not scroll properly with the content. And there is a LOT of content here. We will get to solutions for the problems in the next section
- it is currently hosted at a blog site with a ton of other things not related to Python
- the Class system has been useful because I downgraded Transcrypt from Class A to Class B because the author needs help with maintenance and I dont want anyone trusting a Class A solution and then getting stuck because they dont have a maintained production. The criteria for Class A systems was designed to protect people from getting the rug pulled out from under them. That being said, the Class System has led to quite a bit of pained feedback from authors and perhaps rightfully so. Imagine working hard on your product and then seeing your product in a “lower class” just because some yahoo who has never used it but only glanced over the repo and docs made a snap decision about it? Because that’s pretty much what this list is – I’ve used Nagare and Reahl at fortune 500 companies but have no practical experience with ANY of the other 50 other solutions besides keeping track of their updates… and that’s how I know that Streamlit of the hot topic in this space, I’m always adding to the gallery section of the tool, not to mention I’ve seen presentations of Streamlit where I work as well.
- How can a tool that claims that pure python web apps are good and useful use WORDPRESS or GOOGLE DOCS to present the information? Where is the relational database-backed web app allowing rating, comments, etc ALL WRITTEN IN PURE PYTHON? Don’t be a hypocrite.
Next steps (I’m open to suggestions)
Get high-quality overview and navigation by switching to a new document authoring system?
I think Gitbook is the best? I REALLY WOULD LIKE SOME SUGGESTIONS ON A GOOD BOOK AUTHORING SYSTEM… IDEALLY GITHUB-INTEGRATED.