Hacker News new | ask | show | jobs
by csmuk 4608 days ago
Signed up to agree.

Canned 6 Ubuntu machines (servers) and replaced with OpenBSD 5.3 recently. So much goodness ships with openbsd it's unreal. Bar Theo's sharp tongue (which is usually spot on), you get pf, opensmtpd (so much cleaner than postfix), nginx in base, miles better manual pages than Linux, no horrid gnu info, small and simple base system, absolutely no surprises, no bloated crap like dbus/upstart, tmux in base and what I can only describe as a warm fuzzy "why the hell isn't everything like this" feeling.

Also, it's just about the only thing I've found that can work adequately entirely offline without having to use google to fix obscure problems and decypher documentation.

I've got a bootable USB stick that contains the base packages, entire FAQ (main documentation source outside manpages), all normal binary packages I use, WiFi firmware and its less than 2Gb.

Thanks as well.

5 comments

Agreed, the base install gives you a system that feels both minimal and complete at the same time.

Plus, every release includes a song: http://www.openbsd.org/lyrics.html#54

The doc is really unbeatable, I know nothing like it anywhere.
Are they much different than the freebsd docs?
From my experience FreeBSD documentation is often outdated and no longer applicable. In my opinion incorrect documentation is worse than having no information as it often causes more problems and frustration.
> From my experience FreeBSD documentation is often outdated and no longer applicable

You were using an open source project and as such feedback is critical. Can you list the bug report you filed on the problems?

> In my opinion incorrect documentation is worse than having no information as it often causes more problems and frustration.

That is your opinion of course. IMO experience, having outdated docs is much better than having none at all.

D-Bus is just a low-level socket protocol(which is, by the way, really quite light); there is nothing "bloated" about it.
Well, its going into the kernel as kdbus, which you could argue is bloated. Linux is much bigger than the BSDs, although it is modular and you can remove it, but the big distros use much of it so you can't if you use them...
A lot of things in linux are faster than in the various bsd kernels, some of this owing to having a few optional codepaths rather than just one.

Also, kdbus basically means there is in fact /less/ code made necessary by using the dbus protocol, since you don't need the daemon anymore, it also means lower latency.

Yeah, what is the point of gnu info?
From https://www.gnu.org/prep/standards/html_node/GNU-Manuals.htm...

The preferred document format for the GNU system is the Texinfo formatting language. Every GNU package should (ideally) have documentation in Texinfo both for reference and for learners. Texinfo makes it possible to produce a good quality formatted book, using TeX, and to generate an Info file. It is also possible to generate HTML output from Texinfo source.

[...]

Make sure your manual is clear to a reader who knows nothing about the topic and reads it straight through. This means covering basic topics at the beginning, and advanced topics only later. This also means defining every specialized term when it is first used.

Programmers tend to carry over the structure of the program as the structure for its documentation. But this structure is not necessarily good for explaining how to use the program; it may be irrelevant and confusing for a user.

Instead, the right way to structure documentation is according to the concepts and questions that a user will have in mind when reading it. This principle applies at every level, from the lowest (ordering sentences in a paragraph) to the highest (ordering of chapter topics within the manual). Sometimes this structure of ideas matches the structure of the implementation of the software being documented—but often they are different. An important part of learning to write good documentation is to learn to notice when you have unthinkingly structured the documentation like the implementation, stop yourself, and look for better alternatives.

For example, each program in the GNU system probably ought to be documented in one manual; but this does not mean each program should have its own manual. That would be following the structure of the implementation, rather than the structure that helps the user understand.

Instead, each manual should cover a coherent topic. For example, instead of a manual for diff and a manual for diff3, we have one manual for “comparison of files” which covers both of those programs, as well as cmp. By documenting these programs together, we can make the whole subject clearer.

The manual which discusses a program should certainly document all of the program’s command-line options and all of its commands. It should give examples of their use. But don’t organize the manual as a list of features. Instead, organize it logically, by subtopics. Address the questions that a user will ask when thinking about the job that the program does. Don’t just tell the reader what each feature can do—say what jobs it is good for, and show how to use it for those jobs. Explain what is recommended usage, and what kinds of usage users should avoid.

In general, a GNU manual should serve both as tutorial and reference. It should be set up for convenient access to each topic through Info, and for reading straight through (appendixes aside). A GNU manual should give a good introduction to a beginner reading through from the start, and should also provide all the details that hackers want. The Bison manual (https://www.gnu.org/software/bison/manual/html_node/Concepts...) is a good example of this—please take a look at it to see what we mean.

That is not as hard as it first sounds. Arrange each chapter as a logical breakdown of its topic, but order the sections, and write their text, so that reading the chapter straight through makes sense. Do likewise when structuring the book into chapters, and when structuring a section into paragraphs. The watchword is, at each point, address the most fundamental and important issue raised by the preceding text.

If necessary, add extra chapters at the beginning of the manual which are purely tutorial and cover the basics of the subject. These provide the framework for a beginner to understand the rest of the manual. The Bison manual (https://www.gnu.org/software/bison/manual/html_node/Concepts...) provides a good example of how to do this.

To serve as a reference, a manual should have an Index that lists all the functions, variables, options, and important concepts that are part of the program. One combined Index should do for a short manual, but sometimes for a complex package it is better to use multiple indices. The Texinfo manual includes advice on preparing good index entries, see Making Index Entries(https://www.gnu.org/software/texinfo/manual/texinfo/html_nod...) in GNU Texinfo, and see Defining the Entries of an Index(https://www.gnu.org/software/texinfo/manual/texinfo/html_nod...) in GNU Texinfo.

Don’t use Unix man pages as a model for how to write GNU documentation; most of them are terse, badly structured, and give inadequate explanation of the underlying concepts. (There are, of course, some exceptions.) Also, Unix man pages use a particular format which is different from what we use in GNU manuals.

[...]

Unix manpages are fine. If you've read the GNU awk manual vs BSD awk, you'll understand what I mean. GNU awk manual is hundreds of pages long and serves only to confuse the user. Not only that, half of it is listing differences between GNU awk and other awks which is just mindnumbing. A fine case of cat -v. And don't get me started on glibc.

The bit that pisses me off is: man awk (see info awk instead). I think they fixed that but it was a pain in the butt for years. Is it in man or is it in info?

One tool for the job.

Edit: cite your sources :)

1 - OpenBSD awk (6 pages if I print preview it): http://www.openbsd.org/cgi-bin/man.cgi?query=awk&apropos=0&s...

2 - GNU awk (330 pages if I print preview it): https://www.gnu.org/software/gawk/manual/gawk.html

Even the document I cited conceded that there are some very good Unix man pages — BSD Awk may very well be one of many, I have not read it. It follows, logically, that there could be some very bad Info documentation manuals, and the GNU Awk manual may very well be one of many; I have not read it.

This does not disprove the point the citation made; namely, that the Unix man page structure is unsuitable for many things since its structure tends to make people write manuals badly, and there is no place for the kind of introductions and tutorials that good manuals should contain. On the contrary, the man page format lends itself to very strict and terse reference documentation, which is not what I would call a “manual”, as such.

Someone should perhaps do a study of which of the two formats seem to generate the better documentation.

> The bit that pisses me off is: man awk (see info awk instead). I think they fixed that but it was a pain in the butt for years. Is it in man or is it in info?

The official GNU system documentation is in Info. Now, the GNU system is meant to be compatible with Unix, and Unix uses man pages. And since many GNU tools were (and are) not actually developed to be used in the GNU system as such, but instead find their major use and development as parts of various Unix variants, it follows that most of them have Unix have man pages too. Since writing documentation is work, and writing duplicated documentation is even more work, the man pages for GNU tools are often overly terse, incomplete and/or out of date compared to the Info documentation, which is the official documentation. Some well-known exceptions exist, notably GNU Bash does not have any Info documentation, but instead has an (enormously long) Unix man page.

> The official GNU system documentation is in Info

There is nobody in the world outside of the GNU foundation who prefers using info pages to man pages.

(You are demonstrably wrong, but I will address your implied point instead of your hyperbole.)

I think that the hostility to Info comes from exposure to the standalone Info reader. It is non-intuitive, non-Unix-like, and does, as far as I know, not even support text attributes, so it looks bad even for a text-based UI. It is not very newbie friendly (like GNU nano with its very explicit menus to guide you). Nor is it consistent with other Unix-based text UIs like “vim” or “less”. Instead it behaves like a brain-damaged Emacs, but without even many basic text-navigation features from Emacs, so even Emacs users feel lost in Info.

I feel that if someone made a module for vim or something to read and navigate Info documentation (and made it the default instead of the barebones standalone Info reader), then Unix people would warm up to Info documentation.

Personally, I read Info documentation using the Emacs built-in reader. It is, unofficially I think, the canonical Info documentation reader, and it is beautifully integrated with Emacs. I prefer reading most manuals this way (if they have an Info version).

I'll pile on with an additional anecdote - in 17 years of working almost daily with *nix/BSD systems (and hitting man pages routinely) - I've never once looked at an info page.
Obligatory xkcd

http://xkcd.com/912/

If I want an introduction to complex topic, I usually won't use man pages. I will open up a web browser and search. That will give me web pages that have pictures, diagrams, and possibly even introductory essays about the topic.

There are many more people who know how to write web pages or forum posts than who know how to write "info" pages. There are also great tools for searching the web, but poor tools for search info pages. "info" pages can't even have diagrams or pictures. Consequently, information obtained via "info" tend to be stale, incomplete, and generally unhelpful.

The real question is why "man" pages are still useful in the era of the internet. The answer is that sometimes, you want a concise, accurate, quick reference to what is installed on your system. "man" fills this function admirably. "info" fills that function awkwardly and poorly.

This is true for me too as long as I don't use OpenBSD. The cause is that GNU/Linux manpages are horrible. They are mostly outdated and not in sync with the versions that are actually installed.

As soon as you log in to your newly installed OpenBSD system, your root account has a mail in her mailbox stating to read the "afterboot" manpage. When I first time entered "man afterboot" in my shell, I was blown away.

http://www.openbsd.org/cgi-bin/man.cgi?query=afterboot

  The idea is to create a list of items that can be checked
  off so that you have a warm fuzzy feeling that something
  obvious has not been missed.
It gives you a fast introduction with all informations you need and then references all locations where you find every other topic. At that point, you don't need google anymore where you again find outdated and incorrect informations.

The documentation is so high quality that this is the biggest advantage I appreciate the most.

An internet search will give me many different choices of documentation of unknown provenance, authorship, official status, datedness, accuracy, and comprehensibility. This, to me, is not helpful, since I have no way of knowing which are any good, even after reading them. On the other hand, Info documentation will give me the official, up-to-date, correct, and mostly well-written documentation.

Internet searches certainly have their place if I want forum posts, mailing lists or blog posts, which I sometimes do. But I often want the official documentation corresponding exactly to my installed version of the software, and this is often harder to find using a web search than simply using the Info documentation, because of the above issues. Also, something to keep in mind in these modern times is that web usage is monitored. Local reading of Info documentation is not.

Tools for searching Info pages are built-in to most Info browsers. I use the Emacs Info browser, which has both the usual Emacs way of searching (C-s and C-r searches both in the current node and in the whole document), and the Info Index, which is what I start with when looking up the reference documentation for something.

Also, contrary to what you claim, Info documentation can and do contain images. For example, the HTML GnuTLS documentation here: (http://gnutls.org/manual/html_node/OpenPGP-certificates.html) was generated from Texinfo, and the images are still there when I browse the corresponding Info documentation with the Emacs Info reader. Those images are simple because they are generated from Dia drawings via EPS files, but images can be anything, just like in HTML.

Given how readily good search and navigation exist, I'd much prefer GNU-style awk man pages to BSD-style awk man pages. 15 years ago I taught myself the AWK programming language using "man awk" on a Red Hat Linux box with no network connection. Had the manual been merely a listing of available switches, that wouldn't have been possible.

I'd actually prefer it if more languages provided man pages with detailed language as opposed to random assortments of HTML posing as documentation. Always liked perl precisely due to this.

That 6 pages, if you read it, includes the language, all functions, flags and examples. Its possible to digest it fully in a few minutes.

It is complete.

install pinfo , and you'll be able to read all the wonderful documentation instead of fighting with the GNU info frontend.
hypertext man pages ? what is it that people don't like about them ?
Isn't there some way to get hypertext into man pages? Eg extend nroff. Then you don't have to have a parallel system.
You can use w3mman (it installs with the w3m package on OBSD) and you'll be able to follow manual xrefs. Html output with links can also be generated, see the afterbook man page linked above for an example.
nroff isn't the problem, the pager is. I view manual pages in acme and they become very hypertexty. It's not perfect, as they weren't written with that in mind, but it's damn good.
NIH
Do you know how it does with high concurrent loads these days?
I think PF in openbsd is still single core[1]. FreeBSD 10.x apparently has an SMP version of PF[2].

My feeling is still that if high performance is desired, FreeBSD is still preferred. For "normal" workloads though, I think OpenBSD would be a fine choice. I do like how "clean" an OpenBSD system feels.

[1]: http://openbsd.7691.n7.nabble.com/Performance-limits-with-Op...

[2]: http://lists.freebsd.org/pipermail/freebsd-pf/2012-June/0066...

I've not done a direct comparison but it feels solid under load. IO bound processes seem to balance IO fairly i.e. no bad neighbour problem where one process will starve another and a fork bomb won't take out the system even though I managed to hit a loadavg of 80! It still was very responsive.

Secondarily, I have a VM on BigV which seems to suffer less pauses and oddness than Ubuntu 12.04LTS did.

Works nicely on UltraSparc machines (U30 and U60 tested) as well which is a bonus. I still find them superior to Intel even if they are power hungry and rather old now. Context switch time seems pretty low on Sparcs. Not sure if it uses hardware contexts or not though - haven't looked at the code.