OpenBSD - why and how?

ich glaube nicht daran, dass die Fortsetzung meiner Gedanken hier noch was bringt.
Trotzdem will ich kurz wiederholen, dass ein Grund für mich, OpenBSD nicht zu mögen, die für mich nicht nachvollziehbare Eigen-Werbung über "besonders reinen Code" war. Ich zweifele nach wie vor an diesen Behauptungen.

Nun habe ich den letzten Beitrag von mipl zunächst mal ernst genommen und versucht, der Reihe nach Code zu lesen. Das erste, was ich auf der OpenBSD Seite öffnete hatte die folgende zweite Zeile:
Code:
* Copyright © 2009  Red Hat, Inc.

Bis vor wenigen Jahren war ich auch noch überzeugt, in FreeBSD stecke kein (oder kaum) GNU und dafür in Mac-OS-X viel FreeBSD. Nachdem ich das mit meinen bescheidenen Mitteln etwas genauer ansah, fand ich in beiden (FreeBSD und OS-X) viel mehr GNU, als ich erwartet hatte.
Theo de Raadt hatte möglicherweise vor Jahren gute Gründe, als er gegen Linux wetterte und deren Code schlecht redete. Vielleicht gab es aber auch keine wirklich guten technischen Argumente. Die Hauptkritik an den unseriösen Kommentaren war sicher keine funktionelle Beeinträchtigung und bald nach der Kritik verschwanden diese Kommentare auch (ich meine, das war noch vor Linux 2 oder so um den Dreh herum). Aus solchen Kritiken bilden sich sehr leicht Mythen, die Zeiten überdauern ohne jemals wieder hinterfragt zu werden. Als ich damals OpenBSD aufspielte und nutzte, machte es noch Werbung mit Sprüchen, wie lange es keine Fehler mehr im Basis-System gegeben hatte. Das wurde dann geändert zu "wenige Fehler in verdammt langer Zeit" und inzwischen scheint das ganz verschwunden zu sein.

Wenn es eine Methode gibt, durch Einfluss auf die äußere Form und die Gestaltung von Code tatsächlich bessere SW zu produzieren, dann würde sich das doch verbreiten und bliebe nicht OpenBSD-spezifisch. Das wurde oben ja auch schon mal so angedeutet.
Wenn das nicht so ist, machen sich die OpenBSD-Leute mit ihren Aussagen vielleicht ein Stück weit einfach selber froh. Denke ich.
 
Nun habe ich den letzten Beitrag von mipl zunächst mal ernst genommen und versucht, der Reihe nach Code zu lesen. Das erste, was ich auf der OpenBSD Seite öffnete hatte die folgende zweite Zeile:
Der Link ist falsch. Ich hatte zuerst auf openports.se verlinkt, das aber in den Link geändert, der *angezeigt* wird. Der richtige Link lautet also:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/
Da gibt es kein (c)Redhat.

Wenn Du der Meinung bist, dass "sauberer" Code nichts bringt, dann kannst Du ruhigen Gewissens Software benutzen, die auf "unsauberem" Code basiert - ich sehe das halt anders. Deine Argumentation klingt für mich ein wenig wie "Drehmomentangaben bei Radmuttern brauche ich nicht, ich mache das nach Gefühl und da ist in 50 Jahren nichts passiert". Kann funktionieren, muss aber nicht.

Als ich damals OpenBSD aufspielte und nutzte, machte es noch Werbung mit Sprüchen, wie lange es keine Fehler mehr im Basis-System gegeben hatte. Das wurde dann geändert zu "wenige Fehler in verdammt langer Zeit" und inzwischen scheint das ganz verschwunden zu sein.
Ist es nicht, steht da groß und rot: http://www.openbsd.org/
Aber ob Du das jetzt glaubst oder für Werbung hältst ist dann glaube ich Deine Sache.

bessere SW zu produzieren, dann würde sich das doch verbreiten
Hehe... als wenn sich auf diesem Planeten die "besseren" Dinge durchsetzen würden... das wäre mir komplett neu. :D
 
/*-
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Kevin Fall.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

#if 0
#ifndef lint
static char const copyright[] =
"@(#) Copyright (c) 1989, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#endif

#ifndef lint
#if 0
static char sccsid[] = "@(#)cat.c 8.2 (Berkeley) 4/27/95";
#endif
#endif /* not lint */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: releng/11.0/bin/cat/cat.c 288645 2015-10-04 01:56:11Z sbruno $");

#include <sys/param.h>
#include <sys/stat.h>
#ifndef NO_UDOM_SUPPORT
#include <sys/socket.h>
#include <sys/un.h>
#include <errno.h>
#include <netdb.h>
#endif

#include <ctype.h>
#include <err.h>
#include <fcntl.h>
#include <locale.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

static int bflag, eflag, lflag, nflag, sflag, tflag, vflag;
static int rval;
static const char *filename;

static void usage(void) __dead2;
static void scanfiles(char *argv[], int cooked);
static void cook_cat(FILE *);
static void raw_cat(int);

#ifndef NO_UDOM_SUPPORT
static int udom_open(const char *path, int flags);
#endif

/*
* Memory strategy threshold, in pages: if physmem is larger than this,
* use a large buffer.
*/
#define PHYSPAGES_THRESHOLD (32 * 1024)

/* Maximum buffer size in bytes - do not allow it to grow larger than this. */
#define BUFSIZE_MAX (2 * 1024 * 1024)

/*
* Small (default) buffer size in bytes. It's inefficient for this to be
* smaller than MAXPHYS.
*/
#define BUFSIZE_SMALL (MAXPHYS)

int
main(int argc, char *argv[])
{
int ch;
struct flock stdout_lock;

setlocale(LC_CTYPE, "");

while ((ch = getopt(argc, argv, "belnstuv")) != -1)
switch (ch) {
case 'b':
bflag = nflag = 1; /* -b implies -n */
break;
case 'e':
eflag = vflag = 1; /* -e implies -v */
break;
case 'l':
lflag = 1;
break;
case 'n':
nflag = 1;
break;
case 's':
sflag = 1;
break;
case 't':
tflag = vflag = 1; /* -t implies -v */
break;
case 'u':
setbuf(stdout, NULL);
break;
case 'v':
vflag = 1;
break;
default:
usage();
}
argv += optind;

if (lflag) {
stdout_lock.l_len = 0;
stdout_lock.l_start = 0;
stdout_lock.l_type = F_WRLCK;
stdout_lock.l_whence = SEEK_SET;
if (fcntl(STDOUT_FILENO, F_SETLKW, &stdout_lock) == -1)
err(EXIT_FAILURE, "stdout");
}

if (bflag || eflag || nflag || sflag || tflag || vflag)
scanfiles(argv, 1);
else
scanfiles(argv, 0);
if (fclose(stdout))
err(1, "stdout");
exit(rval);
/* NOTREACHED */
}

static void
usage(void)
{

fprintf(stderr, "usage: cat [-belnstuv] [file ...]\n");
exit(1);
/* NOTREACHED */
}

static void
scanfiles(char *argv[], int cooked)
{
int fd, i;
char *path;
FILE *fp;

i = 0;
fd = -1;
while ((path = argv) != NULL || i == 0) {
if (path == NULL || strcmp(path, "-") == 0) {
filename = "stdin";
fd = STDIN_FILENO;
} else {
filename = path;
fd = open(path, O_RDONLY);
#ifndef NO_UDOM_SUPPORT
if (fd < 0 && errno == EOPNOTSUPP)
fd = udom_open(path, O_RDONLY);
#endif
}
if (fd < 0) {
warn("%s", path);
rval = 1;
} else if (cooked) {
if (fd == STDIN_FILENO)
cook_cat(stdin);
else {
fp = fdopen(fd, "r");
cook_cat(fp);
fclose(fp);
}
} else {
raw_cat(fd);
if (fd != STDIN_FILENO)
close(fd);
}
if (path == NULL)
break;
++i;
}
}

static void
cook_cat(FILE *fp)
{
int ch, gobble, line, prev;

/* Reset EOF condition on stdin. */
if (fp == stdin && feof(stdin))
clearerr(stdin);

line = gobble = 0;
for (prev = '\n'; (ch = getc(fp)) != EOF; prev = ch) {
if (prev == '\n') {
if (sflag) {
if (ch == '\n') {
if (gobble)
continue;
gobble = 1;
} else
gobble = 0;
}
if (nflag && (!bflag || ch != '\n')) {
(void)fprintf(stdout, "%6d\t", ++line);
if (ferror(stdout))
break;
}
}
if (ch == '\n') {
if (eflag && putchar('$') == EOF)
break;
} else if (ch == '\t') {
if (tflag) {
if (putchar('^') == EOF || putchar('I') == EOF)
break;
continue;
}
} else if (vflag) {
if (!isascii(ch) && !isprint(ch)) {
if (putchar('M') == EOF || putchar('-') == EOF)
break;
ch = toascii(ch);
}
if (iscntrl(ch)) {
if (putchar('^') == EOF ||
putchar(ch == '\177' ? '?' :
ch | 0100) == EOF)
break;
continue;
}
}
if (putchar(ch) == EOF)
break;
}
if (ferror(fp)) {
warn("%s", filename);
rval = 1;
clearerr(fp);
}
if (ferror(stdout))
err(1, "stdout");
}

static void
raw_cat(int rfd)
{
int off, wfd;
ssize_t nr, nw;
static size_t bsize;
static char *buf = NULL;
struct stat sbuf;

wfd = fileno(stdout);
if (buf == NULL) {
if (fstat(wfd, &sbuf))
err(1, "stdout");
if (S_ISREG(sbuf.st_mode)) {
/* If there's plenty of RAM, use a large copy buffer */
if (sysconf(_SC_PHYS_PAGES) > PHYSPAGES_THRESHOLD)
bsize = MIN(BUFSIZE_MAX, MAXPHYS * 8);
else
bsize = BUFSIZE_SMALL;
} else
bsize = MAX(sbuf.st_blksize,
(blksize_t)sysconf(_SC_PAGESIZE));
if ((buf = malloc(bsize)) == NULL)
err(1, "malloc() failure of IO buffer");
}
while ((nr = read(rfd, buf, bsize)) > 0)
for (off = 0; nr; nr -= nw, off += nw)
if ((nw = write(wfd, buf + off, (size_t)nr)) < 0)
err(1, "stdout");
if (nr < 0) {
warn("%s", filename);
rval = 1;
}
}

#ifndef NO_UDOM_SUPPORT

static int
udom_open(const char *path, int flags)
{
struct addrinfo hints, *res, *res0;
char rpath[PATH_MAX];
int fd = -1;
int error;

/*
* Construct the unix domain socket address and attempt to connect.
*/
bzero(&hints, sizeof(hints));
hints.ai_family = AF_LOCAL;
if (realpath(path, rpath) == NULL)
return (-1);
error = getaddrinfo(rpath, NULL, &hints, &res0);
if (error) {
warn("%s", gai_strerror(error));
errno = EINVAL;
return (-1);
}
for (res = res0; res != NULL; res = res->ai_next) {
fd = socket(res->ai_family, res->ai_socktype,
res->ai_protocol);
if (fd < 0) {
freeaddrinfo(res0);
return (-1);
}
error = connect(fd, res->ai_addr, res->ai_addrlen);
if (error == 0)
break;
else {
close(fd);
fd = -1;
}
}
freeaddrinfo(res0);

/*
* handle the open flags by shutting down appropriate directions
*/
if (fd >= 0) {
switch(flags & O_ACCMODE) {
case O_RDONLY:
if (shutdown(fd, SHUT_WR) == -1)
warn(NULL);
break;
case O_WRONLY:
if (shutdown(fd, SHUT_RD) == -1)
warn(NULL);
break;
default:
break;
}
}
return (fd);
}

#endif

/* $OpenBSD: cat.c,v 1.25 2016/07/01 22:40:44 schwarze Exp $ */
/* $NetBSD: cat.c,v 1.11 1995/09/07 06:12:54 jtc Exp $ */

/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Kevin Fall.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/

#include <sys/types.h>
#include <sys/stat.h>

#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b))

extern char *__progname;

int bflag, eflag, nflag, sflag, tflag, vflag;
int rval;
char *filename;

void cook_args(char *argv[]);
void cook_buf(FILE *);
void raw_args(char *argv[]);
void raw_cat(int);

int
main(int argc, char *argv[])
{
int ch;

setlocale(LC_ALL, "");

if (pledge("stdio rpath", NULL) == -1)
err(1, "pledge");

while ((ch = getopt(argc, argv, "benstuv")) != -1)
switch (ch) {
case 'b':
bflag = nflag = 1; /* -b implies -n */
break;
case 'e':
eflag = vflag = 1; /* -e implies -v */
break;
case 'n':
nflag = 1;
break;
case 's':
sflag = 1;
break;
case 't':
tflag = vflag = 1; /* -t implies -v */
break;
case 'u':
setvbuf(stdout, NULL, _IONBF, 0);
break;
case 'v':
vflag = 1;
break;
default:
(void)fprintf(stderr,
"usage: %s [-benstuv] [file ...]\n", __progname);
exit(1);
/* NOTREACHED */
}
argv += optind;

if (bflag || eflag || nflag || sflag || tflag || vflag)
cook_args(argv);
else
raw_args(argv);
if (fclose(stdout))
err(1, "stdout");
exit(rval);
/* NOTREACHED */
}

void
cook_args(char **argv)
{
FILE *fp;

fp = stdin;
filename = "stdin";
do {
if (*argv) {
if (!strcmp(*argv, "-"))
fp = stdin;
else if ((fp = fopen(*argv, "r")) == NULL) {
warn("%s", *argv);
rval = 1;
++argv;
continue;
}
filename = *argv++;
}
cook_buf(fp);
if (fp == stdin)
clearerr(fp);
else
(void)fclose(fp);
} while (*argv);
}

void
cook_buf(FILE *fp)
{
int ch, gobble, line, prev;

line = gobble = 0;
for (prev = '\n'; (ch = getc(fp)) != EOF; prev = ch) {
if (prev == '\n') {
if (sflag) {
if (ch == '\n') {
if (gobble)
continue;
gobble = 1;
} else
gobble = 0;
}
if (nflag) {
if (!bflag || ch != '\n') {
(void)fprintf(stdout, "%6d\t", ++line);
if (ferror(stdout))
break;
} else if (eflag) {
(void)fprintf(stdout, "%6s\t", "");
if (ferror(stdout))
break;
}
}
}
if (ch == '\n') {
if (eflag && putchar('$') == EOF)
break;
} else if (ch == '\t') {
if (tflag) {
if (putchar('^') == EOF || putchar('I') == EOF)
break;
continue;
}
} else if (vflag) {
if (!isascii(ch)) {
if (putchar('M') == EOF || putchar('-') == EOF)
break;
ch = toascii(ch);
}
if (iscntrl(ch)) {
if (putchar('^') == EOF ||
putchar(ch == '\177' ? '?' :
ch | 0100) == EOF)
break;
continue;
}
}
if (putchar(ch) == EOF)
break;
}
if (ferror(fp)) {
warn("%s", filename);
rval = 1;
clearerr(fp);
}
if (ferror(stdout))
err(1, "stdout");
}

void
raw_args(char **argv)
{
int fd;

fd = fileno(stdin);
filename = "stdin";
do {
if (*argv) {
if (!strcmp(*argv, "-"))
fd = fileno(stdin);
else if ((fd = open(*argv, O_RDONLY, 0)) < 0) {
warn("%s", *argv);
rval = 1;
++argv;
continue;
}
filename = *argv++;
}
raw_cat(fd);
if (fd != fileno(stdin))
(void)close(fd);
} while (*argv);
}

void
raw_cat(int rfd)
{
int wfd;
ssize_t nr, nw, off;
static size_t bsize;
static char *buf = NULL;
struct stat sbuf;

wfd = fileno(stdout);
if (buf == NULL) {
if (fstat(wfd, &sbuf))
err(1, "stdout");
bsize = MAXIMUM(sbuf.st_blksize, BUFSIZ);
if ((buf = malloc(bsize)) == NULL)
err(1, "malloc");
}
while ((nr = read(rfd, buf, bsize)) != -1 && nr != 0)
for (off = 0; nr; nr -= nw, off += nw)
if ((nw = write(wfd, buf + off, (size_t)nr)) == 0 ||
nw == -1)
err(1, "stdout");
if (nr < 0) {
warn("%s", filename);
rval = 1;
}
}

(Nachtrag: ich sehe erst im Test, dass bei der Darstellung im Spoiler die Einrückungen verschwinden, die in den Codes vorhanden sind. Auch diese sind nahezu identisch in beiden zitierten Code-Blöcken. Wer sich detaillierter interessiert, kann selbst einfach in die Quellen sehen, nötig ist das nicht, insbesondere nicht zum Verständnis dessen, was ich anschließend ausführe)

Also, aus den Quellcodes vergleiche ich oben mal zwei zu cat.
Man sieht Unterschiede.
Vielleicht ahne ich da sogar ein wenig, was die Statements von OpenBSD meinen, aber für mich, als unwissendem Zuschauer sehen die Unterschiede nun nicht gerade Weltbewegend aus.

Eines will ich nochmal klarstellen: es ist ja nicht so, als fordere ich "unsauberen und unleserlichen" Code.
Im Gegenteil. Was ich da bei manchen OpenBSD Seiten als Forderung lese, das kommt mir dermaßen selbstverständlich vor, dass dann, wenn andere Systeme derartige Regeln außer acht lassen, ich selbst das ja schon beinahe als sträflich empfinde.
Es ist aber Eines, derartige Dinge zu fordern, es ist ein Zweites, diese auch stringent umzusetzen und ein Weiteres, ob aus diesen Regeln dann tatsächlich ein besseres Ergebnis generiert wird. Wenn ich cat unter GNU/Linux einsetze oder unter FreeBSD oder unter OpenBSD, dann funktioniert jedes von denen und macht, was ich möchte und oft sogar, mit gleichen oder vergleichbaren Optionen. So, what?

Es ist mir klar, dass ein System insgesamt aus wesentlich mehr Code besteht und der Vergleich mit diesem einzelnen Beispiel hinken mag.
Es ist aber auch so, dass ich (wie oben schon mal gesagt), nicht sonderlich an einem reinen OpenBSD das so gut wie nichts macht, interessiert bin. Ich betreibe keine akademischen Lehrstudien. Wenn ich für meinen Gebrauch als Desktop dann zusätzliche SW installieren muss, für die die strikten und möglicherweise positiven Regeln für den Code nicht gelten, dann relativiert sich die Sicherheit des komplett-Systems (Desktop mit zahlreichen Anwendungen) gegenüber dem vielleicht wunderbar sicheren Basis-System schon deutlich.
Wenn ich dann auch lese, dass gerade um das Basis-System schlank zu halten Anwendungen entfernt werden und dann über das Ports-System installiert werden müssen, das eben nicht so strikt überwacht wird, dann kann ich nicht umhin, als mich dadurch als Anwender ein wenig verschaukelt zu fühlen.
Klar, ich habe für das Ansinnen großes Verständnis.
Gerade ein System, das genau im Blick gehalten werden will, sollte auf möglichst viel unnötigen Code verzichten. Das verstehe ich gut und ich finde es auch gut. Aber wie gesagt, wenn ich als Anwender nicht nur dieses Basis-System brauche und dann gezwungen werde, aus nicht gar so sicheren Ports zu installieren, ist das für mich irgendwie unnütz, dass die Basis wunderbar rein und klein ist.

Aber auch bei der Basis selbst und so sehr ich die Bemühungen bei OpenBSD gut heiße, es fehlt mir die Evidenz dass der von OpenBSD gewählte Style dem anderer Betriebssysteme tatsächlich überlegen ist, bzw oder viel wichtiger, dass er zu besseren und sichereren Ergebnissen führt.

Das muss ich aber auch nochmal versuchen deutlich zu machen.
Ich weiß darüber nichts und kenne mich damit nicht aus und habe deshalb gefragt und nicht behauptet, dass es so oder anders ist.
Mir ist die Werbung von OpenBSD etwas säuerlich aufgestoßen und sie hat mir nicht gefallen. Trotzdem habe ich es eingesetzt und einige Wochen benutzt. Ich bin nicht zu einem Gegner von OpenBSD mutiert und rede nicht gegen die verfolgten Ziele oder deren Umsetzung. Es konnte aber keinen derart positiven Eindruck auf mich machen, dass ich zu einem Anhänger geworden wäre. Nein, es hat mich als Endanwender nicht überzeugen können und dabei spielte es für mich keine Rolle, ob der Code nun gut leserlich und in sauberer Form geschrieben ist.

Lasst mich nochmal ausdrücklich danken für die gelieferte Information und die Links. Das hat mir einige vergnügliche Stunden bereitet und manches gerade gerückt.
In einigen Antworten fand ich meine Gedanken nicht getroffen und das zeigt mir, dass ich sie nicht gut und verständlich rüber bringen konnte.
Es geht hier um die Frage: OpenBSD - why and how?
Dazu wollte ich nur am Rande anfügen, weshalb bei mir der Funke nicht gezündet hat, in leichter Erweiterung des Themas.
Was ich keinesfalls wollte, war eine Bewegung zu fordern, die bewusst keine Regeln beim Erstellen von Code einhält und nichts dokumentiert und nur unsinnige Kommentare einbaut.

Wie andere Systeme das jeweils handhaben, weiß ich nicht. Aber mir kommt das Gehabe von OpenBSD etwas Großspurig vor, als ob nur die wüssten, wie man so etwas richtig und gut macht und alle, die andere Wege gehen, seien Versager. Angesichts der von mir erlebten Ergebnisse passt das nicht. Und das soll nun wieder keine Kritik sein, nur eine Beschreibung, wie das auf mich wirkt und das trägt eindeutig auch dazu bei, dass ich damit nicht glücklich werde und lieber bei FreeBSD bleibe und gelegentlich GNU/Linux oder busybox/Linux einsetze.

Ich denke, dabei sollten wir zumindest die Diskussion um meinen Einwand nun belassen.
 
Es ist aber auch so, dass ich (wie oben schon mal gesagt), nicht sonderlich an einem reinen OpenBSD das so gut wie nichts macht, interessiert bin.
Ich betreibe keine akademischen Lehrstudien.
Mir platzt so langsam der Kragen.. Dieses "so gut wie nichts" ist bei uns international im Einsatz und sichert mit "so gut wie nichts" Firmen ab, die einige Mio Umsatz im Monat machen.
Das ist dann auch nicht eine akademische Lehrstudie.

Wie das auf Dich wirkt, ist mir inzwischen dann auch wurscht.
 
Mir platzt so langsam der Kragen.. Dieses "so gut wie nichts" ist bei uns international im Einsatz und sichert mit "so gut wie nichts" Firmen ab, die einige Mio Umsatz im Monat machen.
Das ist dann auch nicht eine akademische Lehrstudie.

Wie das auf Dich wirkt, ist mir inzwischen dann auch wurscht.

Das ist schon OK.
Ich glaube, meine Motivation, warum nicht OpenBSD, ausreichend verdeutlicht zu haben und dass das auch eine Art emotionaler Entscheidung ist.

Was aber den Betrieb von Systemen angeht, so sehe ich auch seit mehr als zehn Jahren in 24x7 laufende Win-NT Rechner ohne Probleme und ebenfalls einige Lösungen mit minimiertem, spezialisiertem Linux. Das sind keine Erfahrungen aus Rechenzentren, aber doch in der Größenordnung etwa 50 verschiedene Installationen und größtenteils wurde ein zuvor betriebenes SUN Betriebssystem damit ersetzt (das über seine Jahre jeweils ebenfalls ohne Probleme gelaufen war) und das sind alles Systeme im professionellen Einsatz und von Profis installiert, keine ZuHause-Anwendungen.
Das Spezialisieren der Systeme auf ihre Aufgaben und dementsprechende Beschränkung auf wenige, wohlbekannte zusätzliche SW trägt sicherlich auch hier zu diesem Erfolg bei. (In diesen Systemen werden zum Teil nicht mal Sicherheits-Updates eingespielt (nicht nur, weil es keine mehr gibt)). Auch diese Systeme würde ich zu der Gruppe derer zählen, die "fast nichts machen", obwohl damit tagtäglich sehr wichtige Aufgaben wahrgenommen werden.

Was ich nicht beurteilen kann, ist die Frage, inwieweit OpenBSD unter solchen Systemen dann einen Vorteil durch seinen besseren Code hat. Für mich sehen andere Systeme mit dann ja offenbar schlechterem Code in der Praxis nicht schlechter aus; Systeme, die nicht von mir installiert wurden, wo nicht ich die Entscheidung getroffen habe, sondern gut bezahlte Speziallisten (deren Gründe ich natürlich wiederum nicht kenne).
Meine Schlüsse ziehe ich aus der Beobachtung meiner Praxis und nicht aus der Analyse des Quelltextes. Es kommt in meinem beruflichen Umfeld (bisher) kein *BSD zum Einsatz.
 
Für mich sehen andere Systeme mit dann ja offenbar schlechterem Code in der Praxis nicht schlechter aus;
Wie sagte Dolly Buster einmal: "Für mich sieht diese ganze AIDS-Panik wie eine Kampagne der katholischen Kirche aus..."

Klingt nach diesen "Ich nutze immer noch XP ohne Firewall mit Flash und Facebook, weil das sicher ist, schließlich habe ich noch kein Problem bemerkt." Die Rechner dieser Art von Leuten finden sich minütlich in meinen Logs mit dem Hinweis "Win32/Sasser", "Win32/Blaster", "Win32/Conficker" und so weiter. Profis... denen ich niemals auch nur eine Gabel in meiner Küche ohne Bedenken anvertrauen würde... :p

Davon abgesehen: Ich kann mangels Praxis auch nicht beurteilen, ob bei einer Herz-OP sauberes OP-Besteck irgendwelche Vorteile hat (alles desinfizieren... nanana, da bekommen die Kinder ja Allergien von... stand in der Brigitte. Diese pingelige Sauberkeit ist mir eh suspekt.). TROTZDEM glaube ich einfach mal denen, die vielleicht davon Ahnung haben.
 
Klingt nach diesen "Ich nutze immer noch XP ohne Firewall (...)"

Wenn wir hier schon über Leute lästern, die vermeintlich weniger Ahnung(tm) haben als wir, dann wenigstens fundiert:
"Personal Firewalls" (Marketingsprech für "Paketfiltersoftware") sind weitgehend nutzlos zur Abwehr von Schädlingen, deren Autor sich was dabei gedacht hat.

Eine Firewall funktioniert nur wie gewünscht, wenn sie vor und nicht auf dem zu schützenden System läuft.
 
die vermeintlich weniger Ahnung(tm) haben als wir
Ahnung habe ich von vielem auch nicht... das ist ja auch kein Problem, denn ich bin mir dessen bewusst und akzeptiere das Wissen und eventuelle Ratschläge von Leuten, denen ich "Ahnung" zutraue - und zwar solange, bis ich selber tief genug in der Materie stecke, um das selbst zu beurteilen (meistens habe ich aber andere Sachen zu tun...).
 
@pit
OpenBSD ist ein wirklich out-of-the-box hervorragendes OS für deine Desktopanwendungen.
Der einzige Grund, weshalb ich damit auf die Nase gefallen bin, war die verwegene Idee mit Current produktiv zu arbeiten und dann in einem noch verwegeneren, aber vor allem verschlafeneren Moment "mal eben" ein Update zu machen. Danach lief dann leider fast nichts mehr, aber das hätte ich vorher schon ahnen/wissen können, wenn ich denn mal nachgelesen hätte.
Mit Stable wäre mir das alles nicht passiert.

Was für mich OpenBSD auszeichnet ist, daß es enorm ressourcenfreundlich ist und viel problemloser auf meinen Laptop zu bringen war als FreeBSD.
 
Profis... denen ich niemals auch nur eine Gabel in meiner Küche ohne Bedenken anvertrauen würde

Nun, ich denke schon, dass wir da in unserer Firma einige Leute haben, die sich sehr gut auskennen und sehr gewissenhaft mit dem sind, was sie an SW aufspielen.
Die Systeme, von denen ich oben sprach, werden nie von irgendjemanden nach Gut-Dünken installiert. Es gibt nur komplette Images mit Betriebssystem und Anwender-SW (die wohl größtenteils bei uns im Haus entwickelt wird) und alle HW ist wohlbekannt und darf nicht einfach gegen irgendwelche Komponenten getauscht werden. Es wird also nicht mal ein kleiner Treiber aus beliebiger Quelle installiert oder auch nur ein Drucker zusätzlich angeschlossen, ohne dass die Produkthaftung erlischt (davon abgesehen, dass jemand die benötigten Passworte erst klauen müsste). Die Systeme werden auch nach USA verkauft und da ist es bekanntermaßen überlebenswichtig für ein Unternehmen, sich keine Schlamperei zu erlauben, besonders, wenn ein Fehler in der Anwendung (SW oder HW) eine Verletzung von lebenden Menschen bedeuten kann.
Die ausgiebigen Tests bedingen unter anderem auch, dass wir keine aktuelle SW benutzen. Wir haben von Win-NT bis Win 7 im Einsatz und Win 10 ist noch in der Testphase (bzw Anpassungsphase, weil vermutlich etliche Funktionen für unsere Zwecke eher hinderlich sein und deshalb lahm gelegt werden dürften).

Warum sich bisher niemand für ein *BSD entschieden hat, wo wir doch eine glorreiche Vergangenheit mit SUN hatten und stattdessen nun Microsoft-Systeme bevorzugt werden, das kann ich nicht wirklich nachvollziehen. Vielleicht gibt es auch Markt-Strategische Überlegungen. Offenbar hatten die Microsoft-Systeme jedoch keine massiven Nachteile. Außer Microsoft wird heute noch sehr gerne QNX/Neutrino eingesetzt und bekommt da ebenfalls sehr spezielle Aufgaben. Der Anteil an OpenSource SW ist relativ bescheiden.

Die (SW) Sicherheit der Systeme liegt nicht hauptsächlich auf den PCs, sondern in einem Gesamtkonzept des Einsatzes, bei dem die einzelnen PCs gegenüber der Außenwelt in unterschiedlichen Zonen abgeschottet laufen. Es gibt (natürlich nur auf aktuellen Systemen) Virenscanner und Firewalls auf solchen PCs, die irgendwie mit der Außenwelt Schnittstellen haben (nicht nur über Netzwerk, auch wenn CD-ROMS oder USB-Medien gelesen werden können). Dies ist aber eine Option, die nicht zur Grundausstattung gehört, die streng genommen auch außerhalb der eigentlichen Funktionalität liegt und die vor allem bei vielen älteren Anlagen nicht erwünscht war.

IT ist ja nicht nur Internet und Mail und Rechenzentrum mit Daten.
Würde ich für mich selbst etwa eine Firewall benötigen, nähme ich mit großer Sicherheit dafür ein OpenBSD, weil ich eben auch den Aussagen hier und anderswo vertraue. Nicht, weil ich selbst das beurteilen könnte, aber auch nicht wegen des Eigenlobs von OpenBSD auf ihren sauberen Code.

Mit Stable wäre mir das alles nicht passiert
es ist ja schon ein wenig her, aber vermutlich hatte ich damals auch ein Stable installiert.
Auch auf meinem Laptop (Netbook) hatte es sich gut installieren lassen, es funktionierte vieles out-of-the-box und ich kam mit dem System gut klar.
Das Netbook nutze ich noch immer und habe darauf nun FreeBSD laufen. Ich sehe nicht die großen Unterschiede, FreeBSD liegt mir noch besser, es geht schneller und auch, wenn es vielleicht nicht alles kann, was OpenBSD so konnte, fühle ich mich damit wohler.
Kurz vor meiner letzten FreeBSD Installation hatte ich mehrere Installationen mit GNU/Linux darauf versucht und eine solche, mit vergleichbar schmalem Umfang, wie ich das nun unter FreeBSD nutze, war bei weitem am schnellsten, es wurden alle Funktionen unterstützt, der Akku hielt am längsten und stabil war sie außerdem auch noch.
Obwohl ich Anhänger von FreeBSD bin, kann ich nicht anders als hier GNU/Linux in diesen Punkten zu loben.
 
@pit234a kannst du mir mal bitte deine letzten Postings in 2-3 Sätzen zusammen fassen? Mir ist das zu viel zu lesen. Danke
 
  • Like
Reaktionen: lme
kannst du mir mal bitte deine letzten Postings in 2-3 Sätzen zusammen fassen? Mir ist das zu viel zu lesen. Danke

Es geht hier um die Frage: OpenBSD - why and how?
Dazu wollte ich nur am Rande anfügen, weshalb bei mir der Funke nicht gezündet hat, in leichter Erweiterung des Themas.

mir kommt das Gehabe von OpenBSD etwas Großspurig vor, als ob nur die wüssten, wie man so etwas richtig und gut macht und alle, die andere Wege gehen, seien Versager. Angesichts der von mir erlebten Ergebnisse passt das nicht.

Was ich nicht beurteilen kann, ist die Frage, inwieweit OpenBSD unter solchen Systemen dann einen Vorteil durch seinen besseren Code hat. Für mich sehen andere Systeme mit dann ja offenbar schlechterem Code in der Praxis nicht schlechter aus

Und so ähnlich, dann mit weitergehender Begründung und Beantwortung aufgeworfener Fragen.
Ziemlich unwichtig insgesamt.
Wenn das Thema "OpenBSD - why and how?" ist, kann man ja auch durchaus die persönlichen Erfahrungen und Überlegungen mal anfügen, "wieso eben nicht". Das habe ich getan und in dem Zusammenhang gefragt, ob es überhaupt Belege dafür gibt, dass der von OpenBSD geforderte reine Code und die dafür nötige Einhaltung deren Styles in der Praxis tatsächlich belegbar Vorteile bringt oder ob das nur eine Marotte und gute Werbung darstellt.
So in etwa.

Aber damit sollten wir es nun auch wirklich lassen.
Mir ist das nicht so wichtig. Ich wollte einige Meinungen dazu hören, fühlte mich dabei gelegentlich nicht richtig verstanden oder falsch zitiert und hackte deshalb nach. Einige Punkte habe ich kapiert und das war jedenfalls nützlich. Mein Misstrauen gegenüber bestimmter Form des Eigenlobs ist nicht geschwunden, auch nicht gegenüber OpenBSD, obwohl ich denen natürlich vertraue und nicht annehme, dass die einen über den Tisch ziehen möchten (abwegige Gedanken).
Ein bisschen weniger "wir sind die Größten" hätte mich bestimmt weniger gestört.
 
moin

so jetzt muss ich auch mal meinen senf dazugeben.
openbsd verwende ich seit einführung von carp ( 3.5 ).

ich nutze es im bereich firewall / single und HA setup und in allen netzbereichen.

ich liebe es weil

-weniger ist mehr
- sau gute docu
- pf
-verzahnung der einzelenen dienste ineinander
- gute updatebarkeit
- rdomain
- henning ;) ( ok der ist persoenlich , aber henning gehoert zu dem menschen mit dem ich jederzeit um die haeuser ziehen wuerde .) und ich habe ihn durch openbsd kennenlernen
duerfen.
- keep simple

mittlerweile habe ich auch openbsd auf einem alten leonovo notebook laufen ( 2 GB Ram Centrino )
und wundere mich wie gut es laueft.

ich habe den vergleich zu juniper , palo alto und div anderen herstellern und alle kochen nur mit wasser. und unerm strich wuerde ich jederzeit einen dieser hersteller mit
inem openbsd cluster als firewall ablosen.

selbst das "ueber" feature der palo alto ist naeher betrachten eine gute , ok sehr gute , applications erkennung verzahnt mit einem packetfiler.

ansonsten , laesst man das aussen vor , machen die auch nichts anderes als pf.

holger
 
Nochmal zum Thema, ob "sauberer Code" nur eine Werbebotschaft ist, oder nicht:
Ich werde die folgenden Aussagen nicht mit konkreten Verlinkungen belegen, da mir das zuviel Arbeit ist.

In der Zeit 2002-2005 war ich aktiver OpenBSD-Entwickler mit Fokus auf den Bereich pf(4). Ich bin da 2002 auch etwas
"reingestolpert", da ich pf(4) und pfctl(8) bis auch gleich wieder an die Limitierung benutzt habe (wie vorher ipf/ipchains/iptables/checkpoint/...).
Effektiv wurde ich da eher als Tester, denn als Entwickler aufgenommen.

Der andere Punkt damals war, dass es noch nicht sonderlich viel "Erzaehl-Baer" Doku gab, also musste auch man viel an pf.conf(5) arbeiten.
Man kann aber keine korrekte Doku schreiben, wenn man den Code nicht zumindest nachvollziehen kann.

Was von Daniel damals kam, war in sich geschlossen/schluessig und korrekt, aber mit der Weiterentwicklung durch viele (auch neue), kamen
Dinge dazu, die eine hinreichende Doku erschwert haben.
Die Basics aus 3.0-3.2 waren von dem Punkt, wann ein "Paket" pf(4) erreicht, wie es behandelt wird, und wann es in den ueblichen Netzwerk-
Stack uebergeben wird, sehr gut per Code lesen erschliessbar.

Ich habe zu der Zeit auch den Wechsel von ipchains zu iptables auch gelesen und kann nur sagen: gib mir bitte einen Kotzeimer und ein
Wollknaeuel, dass nach 10 Minuten lesen sich in einen Gordischen-Knoten entwickelt. Mal ganz zu schweigen von der absolut mangelhaften
Umsetzung einer Nachverfolgung eines TCP "keep state".
Das Maximum an "Kotzeimer" war erreicht, als H. Welte auf einer Konferenz erzaehlt hat, dass passive-ftp ja sooo schwer sei, weil sich die
"Laenge" einer IP-Adresse aendern koennte (in ASCII/dotted-quads tut sie das...).

Genau sowas kam dann kurzfristig auf, als Spaghetti-Coder probiert haben, so einen Krampf in pf(4) zu bringen. Absolut unleserlicher
Code, der auch corner-cases aufzog, die dann kaum oder garnicht zu debuggen oder gar zu verstehen waren.
Ich habe da selber gelernt, wie schlecht man eigentlich coden kann, als Henning grosse Teile meines Codes (die Idee war super), in einem
Style neu geschrieben hat, denn ich selber besser verstanden habe (vom Lesen), als vorher meinen eigenen.
Wobei das schon ein "fix" auf den urspruenglichen Code war.

Ich kann da nur sagen: guter Code braucht klar eine gewisse Formatierung, aber das ist bei weitem nicht alles bzw. geht nicht weit genug.
Eine gewisse Abstraktion, gute Datenmodelle usw. usf. machen eine Software erst wirklich gut -- und OpenBSD versucht sich daran
in allem moeglichen Bereichen. strlcpy statt str(n)cpy, die Umstellung zu time_t in 64bit und noch viel mehr.

OpenBSD fixed Probleme nicht nur an einer Stelle, die "auffaellig" wurde, sondern probiert sie zu klassifizieren und dann durch den gesamten
Sourcecode zu fixen. Einige/viele dieser Fixes resultieren nicht selten in neuen library-Funktionen (wie strlcpy). Das Ziel all diesem ist, die
Schnittstellen zwischen Code-Snipets besser zu definieren. Besser heisst da v.a. lesbarer und weniger fehler-anfaellig.
 
64589264.jpg
 
ja nun, ich wüsste nicht, welche Verwendung ich für einen größeren Penis hätte...

@double-p
@mark05
und @andere, bei denen ich das Gefühl habe, dass sie zumindest versuchen meine Fragen ernst zu nehmen und zu beantworten.

Vielen Dank!
Einiges wird mir durch die Darstellungen klar.
Wenn ich das richtig verstehe, ist es nicht unbedingt gesagt, dass ein "sauberer Code" auch tatsächlich ein besseres Ergebnis erzeugt, aber es ist unbedingt so, dass ein verständlicher Code wesentlich besser maintained (es fällt mir grad kein passendes Wort dafür ein) werden kann.
Die Pflege des Codes ist aber immens wichtig, weil nicht nur einfach mal kurz ein Genie-Streich ausgespuckt wird, an dem sich dann alle für alle Zeit laben, sondern eher eine dauernde Weiterentwicklung und Kontrolle notwendig sind. Hier ist wieder nicht das einsame Genie im Mittelpunkt, sondern Teams scheinen wesentlich effektiver zusammen zu arbeiten und wie verschiedene Menschen immer erst eine gemeinsame Sprache finden müssen, ist der Style des Codes die Grundlage für einen erfolgreichen Austausch und eine gelungene Entwicklung. Die Weiterbearbeitung des Codes im Laufe der Zeit, also nach evtlem Ausscheiden der ersten Protagonisten, ist ohne diese grundlegende, von anderen verständliche Form, wenigstens sehr erschwert, so als wäre der Code in einer fremden Sprache abgefasster Text der erst neu verstanden, also übersetzt werden muss.
Soweit liege ich da vermutlich nicht sehr weit daneben, wenn ich das so verstehe.
Das ist auch einleuchtend und vernünftig.
Überhaupt sind einige Positionen, die ich bei OpenBSD fand, absolut überzeugend und ich hielt die eher für selbstverständlich, als das man sie noch eigens formulieren müsste.

Da nun aber solche Bedingungen für mich auffallend für OpenBSD gefordert werden, frage ich mich natürlich auch, ob das tatsächlich bei anderen Systemen so viel schlechter gehandhabt wird und regelrecht eine "Kraut und Rüben"-Mentalität in der Entwicklung vorherrscht. So recht vorstellen kann ich mir das noch immer nicht, bin aber auch vollkommen fremd in der Materie.

Zum einen habe ich in der letzten Zeit überhaupt erst erlernt, dass das "Code-Genie" bei Entwicklungen gar nicht so entscheidend zu sein scheint, wie ich mir das immer vorstellte, sondern dass viel eher ein "Code-Handwerker" gefragt ist und nun erfahre ich, dass es nicht einen begnadeten Handwerker alleine gibt, sondern dass vielmehr eine Gruppe von Leuten zusammen arbeitet.
Zum anderen scheinen aber starke Typen doch dominant, wie Theo de Raadt für OpenBSD, Matt Dillon für DragonFly oder eben auch Linus Torvalds für Linux oder auch Richard Stallman für GNU. Diese Wahrnehmung kann aber natürlich getrübt sein, durch eine eben falsche Sicht auf die Dinge, die auch durch die allgemein übliche Berichterstattung gefördert wird, die ja generell Helden sucht.
Was natürlich wohl so sein wird, ist ja mit Sicherheit, dass niemand fordert, dass schlechter Code geschrieben wird!
Ganz sicher wollen ja alle in ihren Systemen grundsätzlich ähnlich mit diesem Code arbeiten, wie es bei OpenBSD der Fall ist.
Wenn nun OpenBSD hier einen Vorsprung hat, frage ich mich natürlich auch, wie sich das erklärt. Begreifen die anderen das nicht? Können die es nicht? (was ja dagegen spricht, dass hier erlernbares Handwerk gefordert ist). Oder sind sie einfach zu bequem?
Kann man dazu etwas sagen?
Gibt es wirklich deutliche Unterschiede?
Ich meine, in dem Beispiel das ich oben mal eingespielt hatte (war es cat?), da sehe ich persönlich schon einen kleinen, aber meines Erachtens keinen bedeutenden Unterschied zwischen dem FreeBSD und dem OpenBSD Code. In GNU habe ich nicht eigens nachgesehen, aber es täte mich wundern, wenn da nun etwas großartig anderes drin stehen würde.
Und dann sehe ich, dass im Header sowohl OpenBSD als auch NetBSD aufgeführt sind, woraus ich mal etwas nassforsch ableite, dass da der gleiche Code verwendet wird und daraus bildet sich natürlich die Frage: wenn es besser ist, warum nehmen FreeBSD und andere denn dann nicht einfach den optimalen Code und nutzen ihn auch für sich? Sind die einfach nur stur?

Also, wirklich, Leute. Mich beschäftigen solche Fragen und ich bin sehr froh über eure Antworten und dass ihr euch dafür Zeit genommen habt. Aber es ist natürlich nicht wichtig und ich möchte nicht, dass ihr da Zeit opfert die euch bei eurer sinnvollen Arbeit dann fehlt. Außerdem gehen die Antworten auch immer weiter ins OT und das möchte ich nicht. Bisher sind wir sind wir noch recht nah am Thema, wenn ich aber nach anderen Systemen frage, könnte da eine Diskussion losgetreten werden, die ich nicht möchte.
Deshalb nochmals Dank und gut ist.
 
Gibt es wirklich deutliche Unterschiede?
Das ist wie es überall ist: Wo gearbeitet wird, entwickelt sich so etwas wie eine Kultur, d.h. das es bestimmte Hintergrundannahmen, Selbstverständlichkeiten und Ziele gibt über die (meist) nicht groß geredet wird sondern die einfach unterstellt werden. Und wie überall gibt es eben Leute die mehr Einfluss auf die jeweilige Kultur nehmen als andere, es gibt die eher extrovertierten Leute die nach außen wirken, und die eher eher nach inne wirkenden. Zudem ist das was nach außen vertreten wird nicht immer identisch mit dem wie es innerhalb solcher Teams aussieht und was tatsächlich geleistet wird. Solche Strukturen sind auch nicht statisch festgeschrieben sondern entwickeln und verändern sich im Laufe der Jahre.

Man muss also differenziert fragen um halbwegs vernünftige Informationen zu bekommen denn auf pauschale Fragen gibt es nur pauschale Antworten.
 
Überhaupt sind einige Positionen, die ich bei OpenBSD fand, absolut überzeugend und ich hielt die eher für selbstverständlich, als das man sie noch eigens formulieren müsste.
Software ist immer ein Kompromiss zwischen einer Vielzahl von Anforderungen sowohl technischer als auch sozialer Art und es gibt daher eben nicht den einen, einzigen richtigen Weg. Und jeder beurteilt die Dinge nach den Kriterien die er selbst für wichtig hält. Von daher sagen Beurteilungen nicht nur etwas über das Beurteilte (in diesem Falle ein OS), sonden genau so viel - oder noch mehr - über den Beurteilenden.
 
ja nun, ich wüsste nicht, welche Verwendung ich für einen größeren Penis hätte...

@double-p
@mark05
und @andere, bei denen ich das Gefühl habe, dass sie zumindest versuchen meine Fragen ernst zu nehmen und zu beantworten.

Ganz ehrlich? Ich lese mir deine Beiträge nur noch selten bis gar nicht mehr durch. Du produzierst Beiträge die so derbste lang sind, dass sie unmöglich zu lesen sind, und sich Inhaltlich teils ewig um dem heissen Brei drehen, dass ich meine Zeit nicht damit verschwenden möchte.
Konzentriere dich doch mal auf das wesentliche, anstelle so viel traffic zu produzieren. Danke!
 
Bleibt bitte wieder mehr beim Thema. Auch wenn wir schon sehr abgedriftet sind sollten wir jetzt nicht auch noch über die Diskussion an sich diskutieren.
 
Die quasi Anforderungen, wie man bei OpenBSD Code zu schreiben und zu formen hat, sind auch nicht im stillen Kaemmerlein nieder geschrieben worden.
Das sind durch die Bank Erfahrungswerte. Theo wirkt dabei viel (VIEL!) mehr nach 'innen', als das so ein bischen die Outsider Legende widerspiegeln mag.
 
Zurück
Oben