bmn__
Joined 9 years ago
Joined 9 years ago
Peertube covers the enterprise use case, but makes unreasonable demands from hobbyists, single users, tinkerers. Kids, gather around and learn from the Peertube design mistakes that an experienced and well-meaning software designer would refuse to subject his users/operators to. Why is this important? Because the number of hobbyist operators is much greater than the number of enterprise operators, given the intended target audience of people who are interested in decentralisation and federation. Peertube engineers and product managers should sit down with the intention to make a smart market move, and expend the next half month of effort to optimise for the majority of operators who make up the long tail, not the minority, so that hurdles to entry are demolished and the stated goal shown on the homepage of "community-owned" becomes attainable for many more people than is the case right now. The resulting network effect would be tremendous.
1. Packaging. Peertube is not packaged by the major players. <https://repology.org/project/peertube/versions> Real-life experience shows that this is almost always because of a circumstance which frustrates a distro packager. Other NPM-conformant libraries and software are packaged nearly automatically, there is good support in the distros to create specfile/RPM package, control file/Deb package, etc. from an Nodejs library tarball with just one command. Peertube must investigate why it is so exceptional and difficult to package and demolish the hurdles.
2. Configuration. Peertube must as the installation step make effective an usable configuration that has some sensible defaults, or perhaps auto-configure at install time or run time. A user should be able to install the software (from a distro package, or a git checkout/unpacked tarball and build step), run it, and immediately use it. It is okay when some features are not working until configured. It is not okay for a software to refuse to work altogether until each and every operator spends time and brain power to figure out what are essential configuration options and what are not, and make decisions about them. The reason why I say it is not okay is because this is a clear abdication of responsibility from the Peertube software devs and an externalising of mental burdens onto the many Peertube operators.
3. Database. Peertube should work with Sqlite by default. An enterprise user can configure PostgreSQL additionally when the need arises.
4. Web server. Peertube should work with the Node.js Web server (possibly express.js or a work-alike) by default. An enterprise user can configure Nginx additionally when the need arises.
5. Cache. Peertube should work with a simple file system cache or no cache at all by default. An enterprise user can configure Redis additionally when the need arises.
> Meaning it can be learned. Trained. […] In fact, a college education is a great way to increase your IQ.
You make this argument on the assumption that the effect is causal. But in reality one cannot distinguish whether education raises IQ or whether people with higher IQs stay longer in college.
That's the critique, yes. If I put this grammar into a known good parser, it just works. I have to repeat this to hammer the point home.
A user should not have to waste time to find work-arounds for the undocumented limitations. Since there are many more limitations than just the one example I showed, you should realise that there is not much value explaining the particular limitations to me; all the limitations and the required work-around steps should rather go into the Janet documentation so that all users can see them and make use of them. But that's still a crappy developer experience, I would rather see Janet simply adopt a parser that is free of this kind of limitations.
> can always be fixed by a simple local change
I sceptical of that. I claim once the grammar is of the size required to model real-world problems, say about dozens of production rules, fixes become complex, wide-scoped. In the spirit of HN curiosity, I am willing to cooperate with you by conducting an experiment that is designed to change my mind. I would show a grammar that is of the type which is in common use everywhere, and you would apply the fixes to make it work in Janet/PEG, and then we examine whether the changes are always simple and local. Are you willing?
> [PEG grammar in Tree-sitter]
That reads rather bizarre to me because you describe the opposite direction. I have not had that train of thought because in all of my experience and those of the people I know it has always been the case that one receives a grammar that is of the type which is in common use everywhere. And when we try to express it in PEG, it does not work at all, no one knows what to do to make it work, experts who might help cannot be found, and the solution (after wasting a lot of time) is to either give up or try a different parser.
As an aside, I have not examined Tree-sitter yet, and its documentation does not tell me the information I need, so I cannot put it into the category of known good parsers.
Typical example, ported from <https://news.ycombinator.com/item?id=16600224>:
(pp
(peg/match
'(capture
'{
:main (* :B)
:B (+
(* :A "x" "y")
:C)
:A (+
true
(* "x" "z"))
:C (+
(* :C "w")
"v")})
"xzxy"))
This almost trivial grammar works without any problem in known good parsers. If you want to try out grammars in the wild in Janet, it is nearly guaranteed that they are complex enough for peg to shit itself.Ah, rapist mentality. Once you see the pattern…