I probably don’t need to bump this but … Python started out as a small research language mostly for teaching kids to code. The fact that trillons of dollars and the AI revolution/bubble are riding on it now is a quirk of history, and maybe because they realized they were getting big and needed to professionalize. It didn’t happen overnight though.
I like that Julia is still small, yet powerful. It feels like a lot of important work is happening here and that I can learn from it and ask questions without being washed out in the crowd. It still feels fun. But I also do find myself overwhelmed with choice and a lack of best practices when I’m trying to get to a goal that’s not just learn a cool language. I wonder Makie vs Plots and juliac vs PackageCompiler vs PrecompilationTools vs StaticCompiler and Pluto vs REPL vs Jupyter vs BonitoBook or ProfileView vs ProfileSVG vs ProfileCanvas (the answer is ProfileCanvas). I think this sort of churn is natural and a source of creativity, even if it is frustrating to dive into.
I want to remember some history here, because the grass always seems greener. It’s not like python is a shining beacon of professionalism either. They’re doing they’re best, and at least they try their best to be nice as they build.
I learned python in 2004. I found the classic warts blog post a year later. The year after that, Guido posted PEP 3000 and the python3 roadmap blogpost I assume under community and internal pressure from blog posts like the former. Once they had it ready he posted the very helpful What’s new In python 3.0 summary. It’s concise and good, and I read every changelog for each python version in detail for the next 4 years because I was fascinated and curious. And still even with the Benevolent Dictator doing his best, there was a lot of churn where the core wasn’t listening to the needs of the community. requests came along in 2011 because “frustration” (educated guess here but fixing urllib directly seemed too hard and it was too ossified and there was no vision from the python core to do anything about it, even though it was bad), and requests spawned a series of imitator “X for humans” libraries from the community to address gaps in the python standard lib. tornado and Stackless Python predated those and existed because threading was too slow to run serious businesses on (eventually many of their ideas grew up into asyncio). Nowadays it’s the same story, there’s torch vs tensorflow (torch mostly won, but, you know), the whole mess of trying to navigate statsmodels/scipy/pandas, and pytest vs unittest vs doctest vs nose and build vs setuptools vs conda vs uv vs venv vs pip-tools vs poetry (which all sort of interact and sort of don’t).
I especially wish that python’s core would have declared a roadmap for testing and packaging. There are two competing testing frameworks in core, doctest – elegant but not powerful enough – and unittest – powerful but verbose – and no one I know of uses either of them. Packaging was bolted on late to python (because “batteries included” means only the standard library matters to the core?) with a lot of stumbles, led by the community, through several format that all held onto backwards compatibility for longer than was good for them. It was only in ~2021 that development really got adopted (painfully in some cases) by PyPA, and they didn’t even take over the domain packaging.python.org until, uh, maybe last year, and it contained outdated information that was extremely misleading; and if you went to any python forum and tried to ask about it you would get brushed off with “oh yeah you definitely need to not do it that old way” or there’s this offputting “If you don’t trust pypi don’t use it” comment, or how about this very long but very enlightening thread on the difficulties of evolving a tool everyone uses and examples of pretty bad communication of the core’s vision (which did clearly exist) to the users (who had no idea what was up and were recommending deprecated advice to each other that they had little way of knowing was deprecated). PyPA is better about communicating now but their actual products are still coalescing.
Compared to all that Julia has remarkably consistent vision, and so are several of the subcommunities like ModelingToolkit, JuliaStats, JuliaMath.
But +1 to core dev blog posts to make the vision clearer; the py3k post was a wonderful example that I felt welcomed me in and showed me where the sharp edges were all at once.