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