Mercurial > docs > unix-phil
comparison unix-phil.ms @ 38:3628e9649046
wrote uzbl summary and did several spell fixes
author | meillo@marmaro.de |
---|---|
date | Sat, 03 Apr 2010 12:56:38 +0200 |
parents | 9282c4cea18c |
children | c87143793d82 |
comparison
equal
deleted
inserted
replaced
37:9282c4cea18c | 38:3628e9649046 |
---|---|
29 .AB | 29 .AB |
30 .ti \n(.iu | 30 .ti \n(.iu |
31 This paper discusses the importance of the Unix Philosophy in software design. | 31 This paper discusses the importance of the Unix Philosophy in software design. |
32 Today, few software designers are aware of these concepts, | 32 Today, few software designers are aware of these concepts, |
33 and thus most modern software is limited and does not make use of software leverage. | 33 and thus most modern software is limited and does not make use of software leverage. |
34 Knowing and following the tenets of the Unix Philosophy makes software more valuable. | 34 Knowing and following the guidelines of the Unix Philosophy makes software more valuable. |
35 .AE | 35 .AE |
36 | 36 |
37 .\".if t .2C | 37 .\".if t .2C |
38 | 38 |
39 .FS | 39 .FS |
715 Elm, pine, mutt, and a whole bunch of graphical \s-1MUA\s0s | 715 Elm, pine, mutt, and a whole bunch of graphical \s-1MUA\s0s |
716 followed Mail's direction. | 716 followed Mail's direction. |
717 They are large, monolithic programs which include all emailing functions. | 717 They are large, monolithic programs which include all emailing functions. |
718 .PP | 718 .PP |
719 A different way was taken by the people of \s-1RAND\s0 Corporation. | 719 A different way was taken by the people of \s-1RAND\s0 Corporation. |
720 In the beginning, they also had used a monolitic mail system, | 720 In the beginning, they also had used a monolithic mail system, |
721 called \s-1MS\s0 (for ``mail system''). | 721 called \s-1MS\s0 (for ``mail system''). |
722 But in 1977, Stockton Gaines and Norman Shapiro | 722 But in 1977, Stockton Gaines and Norman Shapiro |
723 came up with a proposal of a new email system concept \(en | 723 came up with a proposal of a new email system concept \(en |
724 one that honors the Unix Philosophy. | 724 one that honors the Unix Philosophy. |
725 The concept was implemented by Bruce Borden in 1978 and 1979. | 725 The concept was implemented by Bruce Borden in 1978 and 1979. |
752 | 752 |
753 .NH 2 | 753 .NH 2 |
754 Contrasts to monolithic mail systems | 754 Contrasts to monolithic mail systems |
755 .LP | 755 .LP |
756 All \s-1MUA\s0s are monolithic, except \s-1MH\s0. | 756 All \s-1MUA\s0s are monolithic, except \s-1MH\s0. |
757 Although there might acutally exist further, very little known, | 757 Although there might actually exist further, very little known, |
758 toolchest \s-1MUA\s0s, this statement reflects the situation pretty well. | 758 toolchest \s-1MUA\s0s, this statement reflects the situation pretty well. |
759 .PP | 759 .PP |
760 Monolithic \s-1MUA\s0s gather all their functions in one program. | 760 Monolithic \s-1MUA\s0s gather all their functions in one program. |
761 In contrast, \s-1MH\s0 is a toolchest of many small tools \(en one for each job. | 761 In contrast, \s-1MH\s0 is a toolchest of many small tools \(en one for each job. |
762 Following is a list of important programs of \s-1MH\s0's toolchest | 762 Following is a list of important programs of \s-1MH\s0's toolchest |
800 The user does not leave the shell to run \s-1MH\s0, | 800 The user does not leave the shell to run \s-1MH\s0, |
801 but he uses the various \s-1MH\s0 programs within the shell. | 801 but he uses the various \s-1MH\s0 programs within the shell. |
802 Using a monolithic program with a captive user interface | 802 Using a monolithic program with a captive user interface |
803 means ``entering'' the program, using it, and ``exiting'' the program. | 803 means ``entering'' the program, using it, and ``exiting'' the program. |
804 Using toolchests like \s-1MH\s0 means running programs, | 804 Using toolchests like \s-1MH\s0 means running programs, |
805 alone or in combinition with others, even from other toolchests, | 805 alone or in combination with others, even from other toolchests, |
806 without leaving the shell. | 806 without leaving the shell. |
807 | 807 |
808 .NH 2 | 808 .NH 2 |
809 Data storage | 809 Data storage |
810 .LP | 810 .LP |
1143 One month after the first code showed up, | 1143 One month after the first code showed up, |
1144 a mailing list was installed to coordinate and discuss further development. | 1144 a mailing list was installed to coordinate and discuss further development. |
1145 A wiki was set up to store documentation and scripts that showed up on the | 1145 A wiki was set up to store documentation and scripts that showed up on the |
1146 mailing list and elsewhere. | 1146 mailing list and elsewhere. |
1147 .PP | 1147 .PP |
1148 In the, now, one year of uzbl's existance, it was heavily developed in various branches. | 1148 In the, now, one year of uzbl's existence, it was heavily developed in various branches. |
1149 Plaetinck's task became more and more to only merge the best code from the | 1149 Plaetinck's task became more and more to only merge the best code from the |
1150 different branches into his main branch, and to apply patches. | 1150 different branches into his main branch, and to apply patches. |
1151 About once a month, Plaetinck released a new version. | 1151 About once a month, Plaetinck released a new version. |
1152 In September 2009, he presented several forks of uzbl. | 1152 In September 2009, he presented several forks of uzbl. |
1153 Uzbl, acutally, opened the field for a whole family of web browsers with similar shape. | 1153 Uzbl, actually, opened the field for a whole family of web browsers with similar shape. |
1154 .PP | 1154 .PP |
1155 In July 2009, \fILinux Weekly News\fP published an interview with Plaetinck about uzbl. | 1155 In July 2009, \fILinux Weekly News\fP published an interview with Plaetinck about uzbl. |
1156 In September 2009, the uzbl web browser was on \fISlashdot\fP. | 1156 In September 2009, the uzbl web browser was on \fISlashdot\fP. |
1157 | 1157 |
1158 .NH 2 | 1158 .NH 2 |
1259 As uzbl does neither have its own download manager nor depends on a | 1259 As uzbl does neither have its own download manager nor depends on a |
1260 specific one, thus uzbl's browsing abilities will not be lowered by having | 1260 specific one, thus uzbl's browsing abilities will not be lowered by having |
1261 a bad download manager. | 1261 a bad download manager. |
1262 Uzbl's download capabilities will just as good as the ones of the best | 1262 Uzbl's download capabilities will just as good as the ones of the best |
1263 download manager available on the system. | 1263 download manager available on the system. |
1264 Of course, this applies to all of the other supplimentary tools, too. | 1264 Of course, this applies to all of the other supplementary tools, too. |
1265 | 1265 |
1266 .PP | 1266 .PP |
1267 .B "Use software leverage to your advantage" . | 1267 .B "Use software leverage to your advantage" . |
1268 Shell scripts are a good choice to extend uzbl. | 1268 Shell scripts are a good choice to extend uzbl. |
1269 Uzbl is designed to be extended by external tools. | 1269 Uzbl is designed to be extended by external tools. |
1301 .B "Avoid captive user interfaces" . | 1301 .B "Avoid captive user interfaces" . |
1302 One could say, that uzbl, to a large extend, actually \fIis\fP | 1302 One could say, that uzbl, to a large extend, actually \fIis\fP |
1303 a captive user interface. | 1303 a captive user interface. |
1304 But the difference to most other web browsers is, that uzbl is only | 1304 But the difference to most other web browsers is, that uzbl is only |
1305 the captive user interface frontend and the core of the backend. | 1305 the captive user interface frontend and the core of the backend. |
1306 Many parts of the backend are independed of uzbl. | 1306 Many parts of the backend are independent of uzbl. |
1307 Some are distributed with uzbl, for some external programs, handler scripts | 1307 Some are distributed with uzbl, for some external programs, handler scripts |
1308 are distributed, arbitrary additional functionality can be added if desired. | 1308 are distributed, arbitrary additional functionality can be added if desired. |
1309 .PP | 1309 .PP |
1310 The frontend is captive \(en that is true. | 1310 The frontend is captive \(en that is true. |
1311 This is okay for the task of browsing the web, as this task is only relevant | 1311 This is okay for the task of browsing the web, as this task is only relevant |
1324 The only case when one might want to automate the rendering function is | 1324 The only case when one might want to automate the rendering function is |
1325 to generate images of rendered webpages. | 1325 to generate images of rendered webpages. |
1326 | 1326 |
1327 .PP | 1327 .PP |
1328 .B "Small is beautiful" | 1328 .B "Small is beautiful" |
1329 is not easy to apply to a web browser, primary because the rendering task | 1329 is not easy to apply to a web browser, primary because modern web technology |
1330 is very complex. | 1330 is very complex; hence the rendering task is very complex. |
1331 Modern web browsers will always consist of many thousand lines of code, | 1331 Modern web browsers will always consist of many thousand lines of code, |
1332 unfortunately. | 1332 unfortunately. |
1333 Using the toolchest approach and wrappers can split the browser into | 1333 Using the toolchest approach and wrappers can split the browser into |
1334 several small parts, tough. | 1334 several small parts, tough. |
1335 .PP | 1335 .PP |
1336 Uzbl-core consists of about 3\,500 lines of C code. | 1336 Uzbl-core consists of about 3\,500 lines of C code. |
1337 The distribution includes another 3\,500 lines of Shell and Python code, | 1337 The distribution includes another 3\,500 lines of Shell and Python code, |
1338 which are the handler scripts and plugins like a modal interface. | 1338 which are the handler scripts and plugins like a modal interface. |
1339 Further more, uzbl uses external tools like \fIwget\fP, \fInetcat\fP. | 1339 Further more, uzbl uses functionality of external tools like |
1340 \fIwget\fP and \fInetcat\fP. | |
1340 Up to this point, uzbl looks pretty neat and small. | 1341 Up to this point, uzbl looks pretty neat and small. |
1341 The ugly part of uzbl is the web content renderer webkit. | 1342 The ugly part of uzbl is the web content renderer, webkit. |
1342 Webkit consists of roughly 400\,000 (!) lines of code. | 1343 Webkit consists of roughly 400\,000 (!) lines of code. |
1344 Unfortunately, small web render engines are not possible anymore | |
1345 because of the modern web. | |
1346 The problems section will explain this in more detail. | |
1343 | 1347 |
1344 .PP | 1348 .PP |
1345 .B "Build a prototype as soon as possible" . | 1349 .B "Build a prototype as soon as possible" . |
1346 Plaetinck made his code public, right from the beginning. | 1350 Plaetinck made his code public, right from the beginning. |
1347 Discussion and development was open to everyone interessted. | 1351 Discussion and development was, and still is, open to everyone interested. |
1348 Within this first year of uzbl's existance, a new version was released, | 1352 Development versions of uzbl can be obtained very simply from the code |
1353 repository. | |
1354 Within the first year of uzbl's existence, a new version was released | |
1349 more often than once a month. | 1355 more often than once a month. |
1350 Development version can be optained very simply from the code repository. | 1356 Different forks and branches arose. |
1351 Different forks and branches arose, new features were tested for suitability. | 1357 They introduced new features, which were tested for suitability. |
1352 The experiences of using prototypes influenced further development. | 1358 The experiences of using prototypes influenced further development. |
1353 Actually, all development was community driven. | 1359 Actually, all development was community driven. |
1354 Plaetinck says: | 1360 Plaetinck says, three months after uzbl's birth: |
1355 ``Right now I hardly code anything myself for Uzbl. | 1361 ``Right now I hardly code anything myself for Uzbl. |
1356 I just merge in other people's code, ponder a lot, and lead the discussions.'' | 1362 I just merge in other people's code, ponder a lot, and lead the discussions.'' |
1357 .[ | 1363 .[ |
1358 %A FIXME | 1364 %A FIXME |
1359 %O http://lwn.net/Articles/341245/ | 1365 %O http://lwn.net/Articles/341245/ |
1361 | 1367 |
1362 | 1368 |
1363 .NH 2 | 1369 .NH 2 |
1364 Problems | 1370 Problems |
1365 .LP | 1371 .LP |
1366 broken web | 1372 Similar to \s-1MH\s0, uzbl, too suffers from being different. |
1367 | 1373 It is sad, but people use what they know. |
1368 .PP | 1374 Fortunately, uzbl's user interface can look and feel very much the |
1369 But all functionality should be accessable at the backend too. | 1375 same as the one of the well known web browsers, |
1370 Uzbl fails here, mainly because of webkit. | 1376 hiding the internal differences. |
1371 Uzbl is not clearly separated into frontend and backend, | 1377 But uzbl has to provide this similar look and feel to be accepted |
1372 especially the render engine is not an separate building part, | 1378 as a ``normal'' browser by ``normal'' users. |
1373 like, for instance, the download manager is. | 1379 .PP |
1374 This comes from the design of webkit. | 1380 The more important problem is the modern web. |
1375 Webkit is not a self-standing program but a library to include. | 1381 The modern web is simply broken. |
1376 This might be of need for a graphical application to avoid complexity, | 1382 It has state in a state-less protocol, |
1377 but webkit has a lot of features included that do not belong to the | 1383 it misuses technologies, |
1378 webpage rendering job; a browsing history is just one example. | 1384 and it is helplessly overloaded. |
1379 .PP | 1385 The result are web content render engines that must consist |
1380 Ideally, webkit would just render the source of a webpage into a | 1386 of hundreds of thousands lines of code. |
1381 nice formated representation. | 1387 They also must combine and integrate many different technologies, |
1382 .PP | 1388 only to make our modern web usable. |
1383 be a black box | 1389 Website to image converter are hardly possible to run without |
1384 | 1390 human interaction because of state in sessions, impossible |
1391 deep-linking, and unautomatable technologies. | |
1392 .PP | |
1393 The web was misused to provide all kinds of imaginable wishes. | |
1394 Now web browsers, and eventually the users, suffer from it. | |
1385 | 1395 |
1386 | 1396 |
1387 .NH 2 | 1397 .NH 2 |
1388 Summary uzbl | 1398 Summary uzbl |
1389 .LP | 1399 .LP |
1390 | 1400 ``Uzbl is a browser that adheres to the Unix Philosophy'', |
1401 that is how uzbl is seen by its authors. | |
1402 Indeed, uzbl follows the Unix Philosophy in many ways. | |
1403 It consists of independent parts that work together, | |
1404 its core is mainly a mediator which glues the parts together. | |
1405 .PP | |
1406 Software leverage can excellently be seen in uzbl. | |
1407 It makes use of external tools, separates independent tasks | |
1408 in independent parts, and glues them together with small | |
1409 handler scripts, around uzbl-core. | |
1410 .PP | |
1411 As uzbl, more or less, consists of a set of tools and a bit | |
1412 of glue, anyone can put the parts together and expand it | |
1413 in any desired way. | |
1414 Uzbl is very flexible and customizable. | |
1415 These properties make it valuable for advanced users, | |
1416 but may keep novice users from using it. | |
1417 .PP | |
1418 Uzbl's main problem is the modern web, that makes it hard | |
1419 to design a sane web browser. | |
1420 Despite this bad situation, uzbl does a fairly good job. | |
1391 | 1421 |
1392 | 1422 |
1393 .NH 1 | 1423 .NH 1 |
1394 Final thoughts | 1424 Final thoughts |
1395 | 1425 |