I never used Bottle and don't doubt the comments saying it's a great framework, but I'm more interested on the "single file" approach in general.
bottle.py may be a single file but it's 4,425 lines long. That doesn't strike me as particularly simple. Any project could potentially be "a single file" if it's a very long file.
Why would splitting it into a few separate files make it more complex? There's a reason why every modern programming language supports modules, and that's precisely to break down complexity into smaller, simpler units.
because it's extremely easy to "deploy" on old-fashioned cgi-hosts. You need a python-cgi configured, drop 2 files with ftp and your app is up and running. Also auditing is a lot easier (and you only have to trust a handful of maintainers).
Why does a single file mean you only have a trust a handful of maintainers? Each line of the ~4k lines could have been written by a different person and merged by a different maintainer.
because generally projects like these have some opinionated person who is maintaining it, which actively blocks "get the ssh-keys"-patches. compare that to the 100+ dependencies of your typical node-package.
Having many dependencies can be a problem. And the node ecosystem is a total joke.
But if the question was why not split it up into smaller files (which it was), then that's nothing to do with the number of dependencies or the number maintainers. My point is that auditing a program with no external dependences doesn't get any easier if the code is contained in one file or across ten.
Ok, ease of deployment in that specific context makes some sense. You could still have separate source files, and bundle them together for deployment, but that would add a build step so it's a trade off.
All the other reasons I heard, I don't really see what they have to do with having a single or multiple files.
In a similar vein, the creator of nomadlist.com also runs a remote job site called remoteok.io. The site runs via a single PHP file called index.php (150kb) with 4.5k lines of code. No frameworks or libraries. Note: this tweet is from Dec 2017 so things may have changed.
bottle.py may be a single file but it's 4,425 lines long. That doesn't strike me as particularly simple. Any project could potentially be "a single file" if it's a very long file.
Why would splitting it into a few separate files make it more complex? There's a reason why every modern programming language supports modules, and that's precisely to break down complexity into smaller, simpler units.