Quality is only when someone is responsible: for the generation lost in the market

Quality is only when someone is responsible: for the generation lost in the market

Original: A Generation Lost in the Bazaar (published in ACM Queue vol 10, no 8, 2012..)
Author: Paul - Henning Cape (Poul-Henning Kamp) Translation: @ Lisong Feng
Thanks @ @ Yong Jiang Tao Tsai CSDN teacher recommended on Sina Weibo

Thirteen years ago, the emerging grassroots open source software movement was in full swing, and Eric Raymond's "Cathedral and Bazaar" (O'Reilly Media, 2001) redefines our vocabulary, almost predicting waterfall models and large-scale software The end of the company. This book is provocative, but it didn't convince me. At the same time, since I am fully committed to the open source movement, I can't help but rather believe that he is right.

And the book I brought to the beach house this summer is equally provocative, even more provocative than Raymond's (this book is quite positive when it comes to "The Cathedral and the Bazaar"), and that is Frederick The Original Design by P. Brooks (Addison-Wesley Professional, 2010). Brooks’s book keeps resonating with me, and I am more and more admire his language skills and the views he put forward. However, the more resonant, the more sad and disappointed.
Insert picture description here
Thirteen years ago, at the time of the .COM boom, young web programmers abound, and college students who dropped out of school to start a business are not uncommon. While teaching some of those programming skills in the past, I also had a lot of fun. Like what tests restore backups, write scripts to install operating systems, version control, and so on. Of course, looking at it now, that's the case (some things are not as exciting as you think, right). Moreover, we have nowhere to escape. The entire .COM era is a disaster for IT/CS in general, especially for software quality and Unix.

It seems that no one has ever analyzed how much the IT industry has grown during the years when .COM was flooded. Based on my personal experience, I estimate that the entire industry (including the employment opportunities created by the IT industry) has increased by about two orders of magnitude, or more precisely, it has reached ten thousand percent (100 times).

It is easy to learn computer programming, as easy as learning to use nails to nail two boards together. But the problem is-to use an inappropriate analogy, the market's demand for "two boards nailed together" is really too small, except for the family pleasure of "proud grandpa". Moreover, further learning to nail a chair or make a cupboard requires talent, practice and training. The 99-fold increase of ours comes from people who have neither practical experience nor good training. When these people have time to study and receive training, the party is over and most people have lost their jobs. It can be optimistically assumed that those who persevere are the most talented and the most experienced. Even so, we still have nowhere to escape, because as IT professionals, most of them are abusive due to lack of basic skills!

Unfortunately, what Raymond preached-the opposite of the idea of ​​carefully building a cathedral before the .COM bubble-"just hack it", did not follow the .COM bubble. It burst into ashes. Today, the Unix ship is sinking quickly because of its embarrassment.

1 Memetic theory is a new theory that explains the laws of cultural evolution based on Darwin's theory of evolution. See here. ——Translator's Note

I just upgraded my laptop. Up to now, I have been running the FreeBSD development version for 18 years, but it still takes a whole day to compile my Spartan working environment from the source code because it has to sort out the clutter in the messy software market in Raymond. A cathedral was built in China.

Macroscopically speaking, FreeBSD's Ports Collection will try its best to draw a map of this market so that FreeBSD users can easily find their applications. So far, this map is composed of 22,198 files, and these files are a brief description of each stall in the market: tell you what a stall sells in a few words, and where to find more information. In addition, there are 23 214 Makefiles that tell you what you can do with the software on each booth. These Makefiles also want to tell you what options are available, what to choose, and what default values ​​are more sensible when not making a choice. For convenience, this map also provides 24,400 patch files to make up for the flaws in the craftsmanship of these toys, but generally speaking, it is because they are inconvenient to carry (portability), so these patches were born.

Finally, the map provides some constructive comments, such as if you want www/firefoxit, you have to get it first devel/nspr、security/nss、databases/sqlite3, and so on. After you hold the map in hand and find these dependencies, and the dependencies of these dependencies, you will find that your shopping list is full of 122 packages, and you must www/firefoxbuy them all before you can buy them.

Of course, modularity and code reuse are both good ideas. However, even in the simplest case, the CS/IT code reuse creed has no use in the market: the software in the FreeBSD Ports Collection contains at least 1342 copy and paste encryption algorithms.

If someone is desperate or obsessive, and insists on code reuse, and the result is a complete and non-dependent software package, then you have to exchange for this easy-to-manage package and enjoy the results of code reuse, even if you spend more money Worth it! But such a thing has never happened: various packages make a mess of the Web, relying on them casually, entangled with each other, the more code is reused, the more serious the waste.

Give an example of waste. Sam Leffler’s graphics/libtiffis one www/firefoxof the 122 packages mentioned earlier that must be installed before installation, but the installed Firefox browser cannot render TIFF images. I haven’t had time to find out where the problem is, but 10 of these 122 packages require Perl and 7 require Python; one of these packages devel/glib20depends on both Perl and Python. As for why, I haven’t thought about it until now. through.

Continue reading your shopping list, you will continue to find applications that satisfy Peter's law . The so-called Peter's law means that in an organization that promotes people based on their performance, achievements, and value, some people will eventually be promoted to positions where they are not competent. This law is often spoken colloquially as "promote employees to positions they are not qualified for." The same is true in the software industry. You will find yourself in need of three different versions of the makeprogram, a macro processor, an assembler, and other necessary packages. At the end of this "food chain", it is libtooltrying to hide the fact that there is no standard way to build shared libraries in Unix. Indeed, there is no standard way to apply to all Unix variants-such as ld(1)adding a label to the command; at this time Peter's law applies: the job is handed over libtool. At this moment, Peter's law is really awesome, devel/libtoolthe source code reaches 414,740 lines, and half of them are test cases. In principle, this is commendable, but in fact it is the result of Peter's law: these tests are there to verify whether a complex solution for a problem that shouldn't exist is fully functional! What's even more maddening is that 31,085 lines of code are stored in a configureshell script called a shell script. The code format is messy, and it is hard for anyone to understand. This is done to allow the configure script to perform about 200 automatic tests, thereby eliminating libtoolthe pain of manual configuration by the user . This idea is very abusive. As early as the 1980s, when it first appeared, it attracted a lot of criticism. Because the source code relies on configurethe disguise of scripts to make people feel portable, but in fact it is not truly portable. It can be said that it is the remnant of configuration thinking.

Many different Unix implementations appeared in the 1980s: Cray-1s and its 24-bit pointers, Amdahl UTS host Unix, a large number of SysV+BSD mashups from microcomputer manufacturers, quasi-Unix "shims" developed by companies such as Data General, and even Even the paint factory Mark Williams has a pure Unix clone Coherent.

The configurescript at that time was handwritten to detect whether the current system is BSD or SysV style Unix, and then copy one or another Makefile (sometimes with a .h file) to the specified location based on the detection result. Later, configurethe magical powers of this script became more and more powerful, and Peter's law was fully confirmed. We have not seen Unix adopting standard practices to eliminate the dependence on the script. On the contrary, someone wrote a autoconfprogram called to automatically generate the configurescript.

Today, Unix/Posix operating systems, and even IBM’s z/OS mainframe version, are exactly the same as those in the 1980s; libtool31,085 lines of code in this configure script still need to be checked <sys/stat.h>and <stdlib.h>exist, even if it does not. The Unix variant of the two files was executed libtoolwhen there was neither enough memory nor hard disk to store its 16MB source code.

Why is this so?

For reasons not yet known, it autoconfwas written in the obscure M4 macro language, so the actual test code is as follows:

## Whether `make' supports order-only prerequisites.
AC_CACHE_CHECK([whether ${
    
    MAKE-make} supports order-only prerequisites],
  [lt_cv_make_order_only],
  [mkdir conftest.dir
   cd conftest.dir
   touch b
   touch a
cat >confmk << 'END'
a: b | c
a b c:
       touch $[]@
END
  touch c
  if ${
    
    MAKE-make} -s -q -f confmk >/dev/null 2>&1; then
    lt_cv_make_order_only=yes
  else
    lt_cv_make_order_only=no
  fi
  cd ..
  rm -rf conftest.dir
])
if test $lt_cv_make_order_only = yes; then
  ORDER='|'
else
  ORDER=''
fi
AC_SUBST([ORDER])

Needless to say, this is beyond the capacity of most programmers. Even if someone has this ability, the autoconfspecified input files are copied and pasted. Therefore, the expansion of the standard macro code that covers the aforementioned "standard test" is difficult to find, and these macros are designed to deal with 20 years ago. There is no compatibility problem.

I have never understood: Why libtoolis there no less than 26 names in the configuration probe for the Fortan compiler that does not exist in my system, and I have to perform 26 tests to detect these non-existent Fortran compilers. Support does not support -goptions. Maybe this is the reason.

This is the sad reality caused by the bazaar model praised by Raymond in his book: a pile of pustule-like expedient codes, endlessly copied by a group of so-called IT “professionals” who blindly don’t know what IT architecture is. , Pasted. It may be hard for you to believe this matter today, but it is under this extremely embarrassing chaos that the ruins of the beautiful Unix cathedral are sleeping, and Unix is ​​precisely designed with simple design, practical functions, and execution. Elegant and famous in the world. (The glory of the world disappeared...)

Brooks put forward a lot of insightful points, one of which is the so-called quality, which only makes sense when someone is responsible for it, and this "someone" can only be one person, not several people—except for duets . I’m a little surprised why Brooks doesn’t use Unix as the argument for his view, because we can pinpoint the time when Unix began to become fragmented: In the early 1990s, AT&T abandoned Unix, commercialized it, and robbed its architects. that moment.

In recent years, more than one person has come to the same conclusion like Brooks. Some people try to whitewash peace and pretend to be serious, while others use technical standards to achieve similar legislative purposes, hoping to introduce order and structure in the market. So far, their efforts have all ended in failure, because this generation of .com magic boys lost in the market has never seen a cathedral, and it is impossible to know why you need a cathedral, let alone imagine a church. What is it like? In fact, I feel sad to be so sarcastic. Really, those who need to read "The Original Design" most may find that this book is completely incomprehensible. But for those who have suspected that building a web browser actually requires M4 macros to configure autoconf, write shell scripts, and detect 26 Fortran compilers, and feel that this is a bit different, Brooks also carefully pointed out the direction. : There is a better way.

About the author: Poul-Henning Kamp ([email protected]), a 26-year computer programmer, personal website http://bikeshed.org. The software he wrote is widely adopted by open source and commercial products in the form of low-level building blocks. The project he is currently working on is called Varnish HTTP Accelerator, which is used to speed up the response speed of websites with a large number of visits like Facebook.

(End of translation)
Reprinted from: https://www.ituring.com.cn/article/9363

Guess you like

Origin blog.csdn.net/weixin_45402023/article/details/109265500