5 ms·
> The Plan 9 implementations tend to not be as feature rich as the proper upstream variants. This is IMO the biggest drawback. Why wouldn't any user want the s
by kccqzy 2y ago
> The Plan 9 implementations tend to not be as feature rich as the proper upstream variants.
This is IMO the biggest drawback. Why wouldn't any user want the software to be feature rich? In fact, looking at Plan 9, I often feel that the provided software is just a MVP.
- ori_b 2y agoFor the same reason people prefer languages like Python over Perl. Simplicity improves usability and understandability. It's pleasant to use a minimalist, viable product. 9front is not the only OS I use, but it is one of my daily drivers.
- sfpotter 2y agoPython isn't simple.
- ori_b 2y agoPerl is less simple. Though, I suppose lua would be a better comparison.
- 3np 2y agoI fail to see your point. To me, these three are all very close to each other in "simplicity" and any ordering seems arguable. If anything, isn't Perl simpler than Python and if not, why? Perhaps vast differences in ergonomics and language-culture-fit but that's orthogonal/unrelated?
- ori_b 2y agoThe point is that simplicity is an ergonomic consideration, regardless of how you nitpick the analogy.
- 3np 2y agoIn context though, you gave it as an example why people would not want more feature-rich software. The supposed simplicity of Python over Perl has nothing to do with Perl being more feature-rich and that compromising its simplicity. It seems like Plan9 would get closer to "Python simplicity" by adding features and extending interfaces. Which would be at conflict with the "minimalist MVP simplicity". You present it as mutually exclusive. I believe it's the same word used for two fundamentally different aspects of software - less of a nit.
- ori_b 2y agoYou're absolutely right, my analogy sucked. Python is not a good example of a simple language. Complexity is in conflict with usable composition. Because of simple, small interfaces, the surface area needed for composition to cover all cases in a plan 9 environment is much smaller. This allows for things like remote login to be implemented as a small number of 'mount' calls, git to serve repos in a way that can be scripted without writing gobs of porcelain, or sshnet to trivially replace the entire network stack in userspace (namespace by namespace), so that software doesn't need to implement features like socks proxy support. The simplicity and uniformity of the interfaces and tools is an enabler. But, you're right. I should have picked scheme or lua as an analogy. Scheme is a particularly good one: the simplicity of its syntax enables easier macro manipulation. How many special cases would you need to have if you were implementing a lisp style macro system for C++? Smaller interfaces and implementations, lead to smaller sets of special cases and contexts to keep in mind, easier interposition and emulation, and faster debugging. > You present it as mutually exclusive. I honestly have no idea what you mean. What is the "it" that I am presenting, and what do you think I presented it as excluding?
- 3np 2y ago> > You present it as mutually exclusive. > I honestly have no idea what you mean. What is the "it" that I am presenting, and what do you think I presented it as excluding? Simplicity vs feature-rich. Your last follow-up mostly resolves that, I think. BTW, I think you just sold me on diving into Plan9 some time soonish (:
- johnisgood 2y agoLua is great, and `eval "$(luarocks path --bin)"` in your ~/.bash_profile or ~/.bashrc seems fine, better than Perl's where you gotta export PERL5LIB, PERL_LOCAL_LIB, PERL_MB_OPT, and PERL_MM_OPT, for example.
- nutrie 2y agoHe didn't say Python was simple. He mentioned simplicity, those are different things.
- lagniappe 2y agoHey Ori :) I particularly enjoyed your video talk "not dead just resting" - thanks for everything you do https://www.youtube.com/watch?v=6m3GuoaxRNM https://www.youtube.com/watch?v=6m3GuoaxRNM
- tbrownaw 2y agoPython's `venv` Just Works (and is standard), while whatever it was that I dug up to get the same effect in Perl mostly didn't. I somewhat prefer Perl for things where this isn't an issue. I should probably make time look again in case I missed something or it's improved in the last decade.
- hollerith 2y agoPython started out decades ago as a language for beginners or non-professional programmers, but is the current language simple or minimalistic?
- pjmlp 2y agoNot at all, it has C++ complexity level, if one wants to master it at all levels. Additionally, since even minor versions introduce breaking changes, getting something from e.g. Python 1.6 to run on 3.12 is an exercise in trial and error, or unexpected surprises at some moment at runtime.
- stinos 2y ago> Not at all, it has C++ complexity level, if one wants to master it at all levels. Would be interesting to hear what levels you think those are because as someone who has been learning and writing C++ and Python for over 20 years now, I'd say there's no level of Python which comes even close to the complexity of C++ at a comparative level. > getting something from e.g. Python 1.6 to run on 3.12 is an exercise in trial and error, or unexpected surprises at some moment at runtime. Fair enough. But then again: that's irrelevant for any new project written since about the start of the last decade. And to continue the C++ comparison: whereas Python 1 -> 2 -> 3 imo solved some real issues, the consecutive C++ standards never did this resulting in something which is, yes, backwards comptible (roughly - try getting 30-40 year old code getting to compile with /std:c++latest and /Wall - or look at all those tiny behavior changes between the last couple of standard iterations) but also seriously plagued by that as it holds back innovation. Modern C++ minus a lot of the old UB-prone stuff would definitely be better and less complex than what we have now.
- okasaki 2y agoThe dynamic and metaprogramming parts of Python can get pretty complicated, especially when it's done in a large program/library like SQLAlchemy.
- pjmlp 2y agoEasy, mastering the language (everything you can do with it, everything!), the main language runtime, the C extensions API, and the complete standard library. Then just like C++, add the set of key implementations, CPython, Cython, PyPy, key libraries everyone uses (parallel to Boost). Since you have such a wide Python experience, naturally you already printed out all the PDFs of Python documentation, and read them cover to cover. I did such thing back on Python 2.0 days, and it only grew bigger. How many pages was it again?
- linguae 2y agoCounterpoint: Plan 9 is supposed to be the ultimate realization of the Unix philosophy. One important aspect of the Unix philosophy is composable software. Instead of large, feature-rich programs where functionality is often siloed off from other programs, users have a toolbox of small, composable programs that “do only one thing and do it well” and that they could connect together using pipes and other inter-process communication primitives. Composable software is something I’m highly interested in. There were efforts in the 1990s to make desktop software more composable, such as COM from Windows and OpenDoc from Apple, but the desktop world is still dominated by large applications such as those that constitute Microsoft Office and the Adobe Creative Suite. It would have been a wonderful opportunity for the Linux desktop world to embrace components, but, alas, the community embraced OpenOffice, GIMP, and other large applications.
- nrr 2y agoThe irony is that Acorn's RISC OS arguably came the closest to this ideal with any pragmatism. The way that file choosers worked effectively allowed one to pipe a saved file from one application to another and then do it again through the same workflow in the next application and so on.
- foul 2y agoThis kind of IPC lurks in every major OS, drag to an app window is supported by Xorg Mac and Windows.
- nrr 2y agoI suppose this is IPC in the loosest possible sense? It's more like GetOpenFileName() and GetSaveFileName() in Win32 but getting handed a HANDLE outright instead of an LPCSTR to pass to CreateFile() later.
- flomo 2y agoAgreed. And one could argue that Unix wasn't really popular because of the "philosophy", but because it would get out of the way and let you run big monolithic applications like OracleDB or CAD software or even Emacs and etc. So no popular application using "Plan 9 philosophy" ever emerged.
- drdaeman 2y ago> Why wouldn't any user want the software to be feature rich? Users want feature rich systems. Individual programs are best feature-complete, but focused on a single task and capable of cooperating with others when something out of scope is desired. From my personal viewpoint: It's not easy to hack on large monoliths, even for senior software engineers. But if every logical piece of the monolith tries to be as small as it meaningfully could, the barriers are drastically lower.
- akritid 2y agoIt is a personal choice of course, but some people enjoy the feeling of fully learning a piece of software, which is impossible with most.
- deleted 2y ago[deleted]
- emmelaich 2y agoBecause there's diminishing returns on effort for each feature and some features just don't fit well with in plan9. And sometimes there's a workable alternative. Lastly, it's really not for general users. It's for (academic?) computer people who are dexterous and willing to try new things.