I really feel like Python has an embarrassment of riches in terms of web frameworks. Django, Flask, and even FastAPI are master classes in how to build great open source projects that will survive the test of time. In my opinion they're a huge reason why Python continues to be a popular language for backend development.
After a cursory browse of the last few months of issues, this looks legitimate and not even a case of "ornery maintainers close everything as won't fix." (Not that it isn't their right to do so, but I did wonder.)
Just echoing what a lot of people here have said – I love Flask. It was the first time I ever could relax and just enjoy programming. It was beautiful, simple, easy, thoughtful. I had been programming for years, and it just felt like a breath of fresh air at the time.
Fully developed Flask projects tend to be significantly more hairballish and custom compared to something like Django, but it's extremely hard to kick the habit and convenience once something has initially been prototyped in Flask (or Bottle, same deal). Commercially I'd much rather encounter an existing Django project, but at home 90% of the time I'll reach for Flask first, the rest being cases where there are some off-the-shelf Django components that will definitely save a ton of time, and the ceremony is worth paying.
I love flask so much. Along with requests it has been among the two single most useful things about Python for me and the things I typically reach for Python for.
Flask ain’t going anywhere, but i’m a serious FastAPI devotee now.<p>pydantic validation throwing a 422 with what’s wrong before my endpoint ever gets hit is a fucking superpower.
Really awesome feat.<p>As a side note, not sure if it's just me, but I feel a sort of "tip jar effect" with projects that have no open PRs/issues. I feel like I'd be far less willing to submit one if there's no others there. Like all eyes would be on me if I were to do so. Something about adding your issue to the pile just feels a little more welcoming. Just me?
I've been similarly impressed by the quality of Sequel [1], a database toolkit for Ruby that accomplishes a similar feat. 0 open / 1150 closed issues, 0 open / 672 closed PRs.<p>[1] <a href="https://github.com/jeremyevans/sequel" rel="nofollow">https://github.com/jeremyevans/sequel</a>
Go to for me has been a simple Flask framework and HTMX to make my sites seem and feel more dynamic, and then deploy the whole thing with Zappa as an AWS Lambda function. Super simple to add a new endpoint in Flask and ping it with HTMX.
I've been using flask for 10+ years now, mostly for prototyping webapps, but it's cool to see those projects which never got too large for needing something more scalable or apt to complexity that are still up and running with minimal maintenance needed to be done on them. I think that most of the problems in flask programs I might have encountered are just problems with the language it's written in, and the tradeoffs you have to make in a dynamically typed language in terms of tooling, but those are just things you get used to as a developer wielding double edged swords all over the place.<p>It just does an incredible job of staying out of the way and never having become some bloated beast which ends up causing problems due to some misplaced voracious appetite for eating as many batteries to include as possible.
I started with, and still normally use Django if I'm doing web, but I have used Flask and quite like it. In many ways it reminds me of early Django, when it did just a few things, well. I bet it's part of how Flask's maintainer was able to get to such a "no open issues" state. We need more software like that.
I love the Python web framework community and how friendly it is. The first two replies are congratulations from major Django contributors (Jeff Triplett and Andrew Godwin).
I love flask. I use restful flask on every project and I experimented with flask restplus and flask restx. I don't feel technically limited with Flask or it's derivative API frameworks.<p>Flask will always be my go to framework but I am looking forward to actually sitting down learning Fast API and Nestjs with Typescript.<p>FastAPI for my usecase doesn't offer anything new but the hype is defeaning and Typer CLI seems like a good way to build CLI projects.<p>and Nestjs is something I should learn because I should learn. I didn't enjoy django but I need to learn a "professional" backend framework and also Typescript.
I had opened issues and MRs with projects that David Lord was a maintainer (since he's been handling lots of Pallet Team's open source projects now). Wasn't very impressive with his "my way or the high way" approach.<p>Take a look them yourself:<p><a href="https://github.com/pallets/flask/issues?q=is%3Aissue+is%3Aclosed" rel="nofollow">https://github.com/pallets/flask/issues?q=is%3Aissue+is%3Acl...</a><p>I am quite disgusted by his self-congratulatory tweet like that, TBH.<p>Those tickets that the community posts questions and asked for help, he just shut people down.
Well done, Flask! I always enjoy Flask. I don't like using Flask for a full-blown complex website, but for most of our API work, we use Flask and it's almost perfect fit.
I've never used Flask before and come from mostly PHP/JavaScript.<p>One of the first things that struck me reading the tutorial was the use of "g" which seems to stand for "global" and is used to access things like the DB via "g.db".<p>This seems similar to using $GLOBALS['db'] in PHP which would be a code smell and I think it's impossible as of PHP 8.1.<p>If I saw this in a PHP Framework I would assume it was made by an amateur. Can anyone explain if this is common practice in Python and perhaps why it's different and not a worry?
Is this one of those repos that auto-close any issue, regardless of the topic, after a few weeks of inactivity? Those always have so many closed issues!<p>Wontfix is the new completed, from what I can tell.
This post inspired me to check on Bottle, and it can't say the same: <a href="https://github.com/bottlepy/bottle" rel="nofollow">https://github.com/bottlepy/bottle</a>