-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcomparison.html
More file actions
689 lines (624 loc) · 32.5 KB
/
comparison.html
File metadata and controls
689 lines (624 loc) · 32.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Software Literacy Complications</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
<style>
th {
text-align: center;
}
td.explained {
text-align: center;
vertical-align: middle !important;
}
.glyphicon { color: #666666; }
td.explained .glyphicon { color: #cccccc; }
td.explained.info .glyphicon { color: #a7ccde; }
td.explained.success .glyphicon { color: #a6d294; }
td.explained.warning .glyphicon { color: #e6dcab; }
td.explained.danger .glyphicon { color: #e7b4b4; }
</style>
</head>
<body>
<div class="container">
<h1>Comparison of existing platforms</h1>
<p>The goal of <em>zells</em> is to enable Software Literacy by providing a software platform without the incidental complications found in current platforms. The [manifesto] describes these complications in details, although in a rather abstract manner. The purpose of this document is to look at a selection of current platforms more closely and how certain complications materialize in them.</p>
<p>Restricted by my own knowledge, the list of platforms is all but complete and not every complication is discussed for every platform. If you find something missing, wrong or imprecise, please <a href="https://github.com/zells/core/edit/master/comparison.html">help improving this document</a>. Any form of contribution or feedback will be appreciated.</p>
<p>For an up-to-date list and descriptions of identified complications and how they are avoided in <em>zells</em>, please refer to the <a href="https://github.com/zells/core/blob/master/manifesto.md">manifesto</a>.</p>
<h2>Platforms</h2>
<p>This list contains a variety of software products and protocols which I all consider to be <em>platforms</em>, since they allow users to create, run and share their own software.</p>
<p>The categories are <em>protocols</em> for platforms that are defined by standards rather than an implementation, <em>operating systems</em> for everything which is located directly between user and hardware, <em>virtual machines</em> for things that could be called programming languages and everything else is considered an <em>application</em>.</p>
<p>The lines between these categories are fluent since it could be argued that some virtual machines behave like operating systems or have well defined protocols and some applications behave like virtual machines.</p>
<h2>Complications</h2>
<div class="table-responsive">
<table class="table table-bordered table-hover table-condensed">
<tr>
<th></th>
<th>Set-Up
<span class="explained">
<p>Getting from zero to developing, knowledge assumed</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Usually no set-up required and free download without installation</td></tr>
<tr><td class="success">Free download and simple installation or wide-spread availability</td></tr>
<tr><td class="warning">Not free or cumbersome installation</td></tr>
<tr><td class="danger">Costly to acquire or complicated to install</td></tr>
</table>
</span></th>
<th>Syntax
<span class="explained">
<p>Burden of learning a specific syntax</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Wide range or interchangable syntaxes available</td></tr>
<tr><td class="success">Multiple syntaxes available</td></tr>
<tr><td class="warning">Single, but simple syntax</td></tr>
<tr><td class="danger">Single syntax</td></tr>
</table>
</span></th>
<th>Interactivity
<span class="explained">
<p>Level of direct and immediate interaction with pieces of software</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">All parts of running system can be directly inspected and manipulated</td></tr>
<tr><td class="success">Easy inspection and more or less direct manipulation</td></tr>
<tr><td class="warning">Indirect manipulation but quick feedback or complicated or non-persistent more direct manipulation</td></tr>
<tr><td class="danger">Only very indirect manipulation with slow feedback</td></tr>
</table>
</span></th>
<th>Discoverability
<span class="explained">
<p>Finding useful third-party services</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Built-in discovery of service functionality and usage, and new services</td></tr>
<tr><td class="success">In-context discovery of functionality and usage common, good documentation of existing services</td></tr>
<tr><td class="warning">Context switch for discovery usually necessary</td></tr>
<tr><td class="danger">Very difficult to discover anything</td></tr>
</table>
</span></th>
<th>Dependencies
<span class="explained">
<p>Using third-party services</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Services can be directly accessed without installation or authentication</td></tr>
<tr><td class="success">Direct access without installation but usually requires authentication</td></tr>
<tr><td class="warning">Services must be downloaded and managed but tool support is common</td></tr>
<tr><td class="danger">Manual download and management necessary</td></tr>
</table>
</span></th>
<th>Serialization
<span class="explained">
<p>Need for and ease of serialization</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Serialization completely automated</td></tr>
<tr><td class="success">Little serialization neccessary, usually automated</td></tr>
<tr><td class="warning">Good tool support for serialization, standardized formats exist</td></tr>
<tr><td class="danger">Complicated serialization causing much frustration</td></tr>
</table>
</span></th>
<th>Data Safety
<span class="explained">
<p>Risk of losing software (program or data)</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Almost impossible to lose data</td></tr>
<tr><td class="success">Built-in tools for data safety</td></tr>
<tr><td class="warning">Third-party tools available and common</td></tr>
<tr><td class="danger">Manual data management, tools uncommon</td></tr>
</table>
</span></th>
<th>Segregation
<span class="explained">
<p>Difference between environments of creating and using software</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Software is written and used in the same environment</td></tr>
<tr><td class="success">Software can always be modified with an easy switch in environments</td></tr>
<tr><td class="warning">Modification possible but switch is complicated</td></tr>
<tr><td class="danger">Writing and running software completely segregated</td></tr>
</table>
</span></th>
<th>Sharing
<span class="explained">
<p>Giving access to your software to somebody else</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Extremely likely that any receipient can access software with almost no trouble</td></tr>
<tr><td class="success">Very likely to access and well-defined group</td></tr>
<tr><td class="warning">Receipient must meet certain criteria and expand some effort</td></tr>
<tr><td class="danger">Very unlikely to access without considerable effort</td></tr>
</table>
</span></th>
<th>Autonomy
<span class="explained">
<p>Dependencies on others</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">No permission required, not controlled by anyone</td></tr>
<tr><td class="success">Controlled by public authority, permission always granted</td></tr>
<tr><td class="warning">Controlled by private authority, permission likely to be granted</td></tr>
<tr><td class="danger">Depends completely on single, private authority</td></tr>
</table>
</span></th>
<th>Security
<span class="explained">
<p>Protection of identity and information</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">Very secure against technological and social attacks, no single point of failure</td></tr>
<tr><td class="success">Effective security, very rare breaks</td></tr>
<tr><td class="warning">Unreliable security, breaks are common</td></tr>
<tr><td class="danger">No built-in security measures</td></tr>
</table>
</span></th>
<th>Universality
<span class="explained">
<p>Range of problems that can be solved</p>
<table class="table table-bordered table-condensed">
<tr><td class="info">No limits of applicability</td></tr>
<tr><td class="success">Very wide range of applicability</td></tr>
<tr><td class="warning">Limited applicability</td></tr>
<tr><td class="danger">Very limited in usefulness</td></tr>
</table>
</span></th>
</tr>
<tr>
<th colspan="13">Virtual Machines</th>
</tr>
<tr>
<td><a href="http://pharo.org/" target="_blank">
Smalltalk</a></td>
<td title="Set-Up" class="info explained">
Just download an run the image.</td>
<td title="Syntax" class="warning explained">
Bein a very pure language, the syntax is quite elegant.</td>
<td title="Interactivity" class="info explained">
Every object can be inspected and changed live with immediate effect.</td>
<td title="Discoverability" class="info explained">
Objects are self-documenting, explorable and can be found by text- or example-based search.</td>
<td title="Dependencies"class="warning explained">
Third-party modules must be downloaded manually or from a repository.</td>
<td title="Serialization" class="info explained">
Objects live in the image, no need to serialize them ever.</td>
<td title="Data Safety" class="success explained">
All changes of the image are tracked and can be reverted. The image can get lost or corrupted though.</td>
<td title="Segregation" class="info explained">
Everything happens in the image</td>
<td title="Sharing" class="success explained">
Modules need to be <em>filed-out</em> or exported to a repository. Alternatively, the whole image can be shared. Once the image is obtained, accessing the software is very easy.</td>
<td title="Autonomy" class="info explained">
There are many open-source implementations with high compatibility.</td>
<td title="Security" class="warning explained">
I'm not aware of built-in security mechanisms. It's only as secure as the operating system it runs on.</td>
<td title="Universality" class="info explained">
I'm not aware of any limits. Operating systems, embedded systems and even Smalltalk itself can be written in Smalltalk.</td>
</tr>
<tr>
<td><a href="https://en.wikipedia.org/wiki/JavaScript" target="_blank">
JavaScript</a></td>
<td title="Set-Up" class="info explained">
All you need is a browser and they're almost everywhere.</td>
<td title="Syntax" class="success explained">
Many many languages can be compiled to JavaScript these days.</td>
<td title="Interactivity" class="warning explained">
While some browser allow pretty good inspection into objects, changes are not persistent.</td>
<td title="Discoverability" class="warning explained">
Even experienced JavaScript programmers need to look up every second function name and signature.</td>
<td title="Dependencies" class="warning explained">
There are a million package managers but it gets really messy really quickly (left-pad, anyone?).</td>
<td title="Serialization" class="warning explained">
Almost anything keep-worthy must be serialized. But the native JSON format is basically the de-facto standard on the web.</td>
<td title="Data Safety" class="warning explained">
Nothing buil-in but easy to integrate with any version control system.</td>
<td title="Segregation" class="success explained">
JavaScript programs are almost always delivered in source code so how every you run them is not too far away from how you edit them.</td>
<td title="Sharing" class="success explained">
Just send the files. Everybody has a browser and there are tons of libraries to enhance compatibility.</td>
<td title="Autonomy" class="info explained">
Many open-source implementations are available.</td>
<td title="Security" class="warning explained">
The code has full access to the page it's running on. Most security comes from the virtual machine being sand-boxed in a browser.</td>
<td title="Universality" class="success explained">
Depends on the interpreter but very wide applicability nowadays.</td>
</tr>
<tr>
<td><a href="https://www.python.org/" target="_blank">
Python</a></td>
<td title="Set-Up" class="warning explained">
Depends very much on your operating system. There are also packages to ease set-up but it's usually a hassle.</td>
<td title="Syntax" class="warning explained">
Only one syntax but a rather clean one (if you like significant whitespace).</td>
<td title="Interactivity" class="warning explained">
There are debuggers which allow to inspect a running system but not make changes to it on-the-fly. Also, the use of a debugger is not very common.</td>
<td title="Discoverability" class="success explained">
Objects are self-documenting and can be dynamically explored in the REPL.</td>
<td title="Dependencies" class="danger explained">
Installing packages for Python is too many times very painful.</td>
<td title="Serialization" class="warning explained">
Necessary for persistence but good native support.</td>
<td title="Data Safety" class="warning explained">
Version control system adviced but not commonly used, at least in the scientific community.</td>
<td title="Segregation" class="warning explained">
Python programs are usually run as applications which is far away from the editor to change them. If used as script segregation is less.</td>
<td title="Sharing" class="danger explained">
Few people who are not on Linux have Python installed and even if, it might be the wrong version. Putting a module in a completely self-contained package is very tricky.</td>
<td title="Autonomy" class="info explained">
The language itself is open-source and many open-source implemenations available.</td>
<td title="Security" class="danger explained">
Only as good as the operating system that runs it.</td>
<td title="Universality" class="info explained">
Python can be used for virtually anything.</td>
</tr>
<tr>
<td><a href="http://unisonweb.org/" target="_blank">
unison</a></td>
<td title="Set-Up" class=""></td>
<td title="Syntax" class="danger"></td>
<td title="Interactivity" class="success"></td>
<td title="Discoverability" class=""></td>
<td title="Dependencies" class="success"></td>
<td title="Serialization" class="info"></td>
<td title="Data Safety" class=""></td>
<td title="Segregation" class=""></td>
<td title="Sharing" class=""></td>
<td title="Autonomy" class=""></td>
<td title="Security" class=""></td>
<td title="Universality" class=""></td>
</tr>
<tr>
<td><a href="https://livecode.com/" target="_blank">
LiveCode</a></td>
<td title="Set-Up" class=""></td>
<td title="Syntax" class="warning"></td>
<td title="Interactivity" class=""></td>
<td title="Discoverability" class=""></td>
<td title="Dependencies" class=""></td>
<td title="Serialization" class=""></td>
<td title="Data Safety" class=""></td>
<td title="Segregation" class=""></td>
<td title="Sharing" class=""></td>
<td title="Autonomy" class=""></td>
<td title="Security" class=""></td>
<td title="Universality" class=""></td>
</tr>
<tr>
<td><a href="https://www.java.com" target="_blank">
JVM</a></td>
<td title="Set-Up" class="success explained">
Download and install the Java development kit (JDK).</td>
<td title="Syntax" class="success explained">
Many languages can be compiled to the bytecode of the JVM.</td>
<td title="Interactivity" class="danger explained">
Programs are usually distributed as bytecode and run as applications.</td>
<td title="Discoverability" class="success explained">
As a typed language, support for capability discovery is usually good but requires IDE.</td>
<td title="Dependencies" class="danger explained">
Usage of dependency manager is not common.</td>
<td title="Serialization" class="danger explained">
Object databases are available must most information must be serialized without any good native support. XML is wide-spread and at all times present.</td>
<td title="Data Safety" class="warning explained">
Version control system advised.</td>
<td title="Segregation" class="danger explained">
Programs are usually discributed as bytecode and run as applications.</td>
<td title="Sharing" class="warning explained">
Chances that a Java runtime environment (JRE) is installed are good and it's easy to install if not.</td>
<td title="Autonomy" class="warning explained">
There are open-source implemenations but Java is still controlled by a single company.</td>
<td title="Security" class="warning explained">
Access to the system can be restricted.</td>
<td title="Universality" class="info explained">
Java runs everywhere.</td>
</tr>
<tr>
<th colspan="13">Applications</th>
</tr>
<tr>
<td><a href="http://www.squeakland.org/" target="_blank">
Etoys</a></td>
<td title="Set-Up" class="info explained">
Just download and run the image.</td>
<td title="Syntax" class="success explained">
Tile-based is default but can be switched to textual programming as well.</td>
<td title="Interactivity" class="info explained">
Every object can be inspected and changed while running the program.</td>
<td title="Discoverability" class="success explained">
Objects are self-documenting. Help and an object catalogue are included in the environment.</td>
<td title="Dependencies" class="danger explained">
Actually I've never come across instructions of how to access third-party software.</td>
<td title="Serialization" class="info explained">
Everything lives in the image. Only external data must be de-/serialized.</td>
<td title="Data Safety" class="success explained">
Everything is automatically persisted in the image. Recovering old state is difficult though.</td>
<td title="Segregation" class="info explained">
Writing and running a program happens in the same environment and mode.</td>
<td title="Sharing" class="warning explained">
Projects can be saved as files. The receiver needs to download Etoys and import the project.</td>
<td title="Autonomy" class="success explained">
I'm only aware of a single open-source implementation.</td>
<td title="Security" class="danger explained">
Only as secure as the operating system it's running on.</td>
<td title="Universality" class="warning explained">
Considered an learning environment. Not meant for the creation of complex systems although could be used for anything since it's stil Smalltalk.</td>
</tr>
<tr>
<td><a href="https://scratch.mit.edu/" target="_blank">
Scratch</a></td>
<td title="Set-Up" class="info explained">
Just open the webpage.</td>
<td title="Syntax" class="warning explained">
Only a single tile-based langauge available.</td>
<td title="Interactivity" class="success explained">
Objects can be manipulated easily while the program is running.</td>
<td title="Discoverability" class="success explained">
Inspectors make it easy to discover capabilities of objects and there is a catalogue for existing software.</td>
<td title="Dependencies" class="danger explained">
I don't know if it's possible to access third-party software.</td>
<td title="Serialization" class="success explained">
Very rarely necessary but very difficult if.</td>
<td title="Data Safety" class="success explained">
Automatic saving but no control over history.</td>
<td title="Segregation" class="info explained">
Writing and running programs happens in the same environment.</td>
<td title="Sharing" class="info explained">
By sending a URL.</td>
<td title="Autonomy" class="danger explained">
Complete dependency on MIT.</td>
<td title="Security" class="success explained">
Secure through limitation.</td>
<td title="Universality" class="danger explained">
Very limited usage. Mostly animations and very simple games.</td>
</tr>
<tr>
<td><a href="https://de.libreoffice.org/discover/calc/" target="_blank">
Spreadsheet</a></td>
<td title="Set-Up" class="success explained">
Requires download and installation.</td>
<td title="Syntax" class="warning explained">
Limited but very simple.</td>
<td title="Interactivity" class="info explained">
Values can be directly modified with immediate effect.</td>
<td title="Discoverability" class="warning explained">
Auto-complete for function names and signature. Further information must be obtained from help file.</td>
<td title="Dependencies" class="danger explained">
Very difficult to use third-party spreadsheets.</td>
<td title="Serialization" class="success explained">
Usually no serialization neccessary. If so, CSV is very wide-spread.</td>
<td title="Data Safety" class="danger explained">
Manual saving required and difficult to integrate with VCS.</td>
<td title="Segregation" class="info explained">
No segregation possible.</td>
<td title="Sharing" class="success explained">
Most users have a spreadsheet application installed. Some compatibility issues are common.</td>
<td title="Autonomy" class="warning explained">
Open-source implementations available, but dominated by Microsoft.</td>
<td title="Security" class="danger explained">
No security measures provided. As secure as the operating system.</td>
<td title="Universality" class="danger explained">
Very limited in use cases and permittable complexity.</td>
</tr>
<tr>
<td><a href="http://www.witheve.com/" target="_blank">
Eve</a></td>
<td title="Set-Up" class=""></td>
<td title="Syntax" class="warning"></td>
<td title="Interactivity" class="success"></td>
<td title="Discoverability" class=""></td>
<td title="Dependencies" class=""></td>
<td title="Serialization" class=""></td>
<td title="Data Safety" class=""></td>
<td title="Segregation" class=""></td>
<td title="Sharing" class=""></td>
<td title="Autonomy" class=""></td>
<td title="Security" class=""></td>
<td title="Universality" class=""></td>
</tr>
<tr>
<td><a href="http://mathworks.com" target="_blank">
Matlab</a></td>
<td title="Set-Up" class="danger explained">
Very expensive licence.</td>
<td title="Syntax" class="danger explained">
Optimized for matrix notation.</td>
<td title="Interactivity" class="warning explained">
Sequential debugger, values can be inspected and manipulated.</td>
<td title="Discoverability" class=""></td>
<td title="Dependencies" class="danger explained">
Must be manually managed.</td>
<td title="Serialization" class=""></td>
<td title="Data Safety" class="warning explained">
REPL history kept for a while. Integration with VCS possible but not common.</td>
<td title="Segregation" class="info explained">
Software is usually created and run in the same environment</td>
<td title="Sharing" class="warning explained">
Very difficult to package all dependencies.</td>
<td title="Autonomy" class="danger explained">
Completely dependent on MathWorks</td>
<td title="Security" class="danger"></td>
<td title="Universality" class="warning explained">
Very restricted use cases but extensions are available.</td>
</tr>
<tr>
<td><a href="http://www.adobe.com/products/flash-builder.html" target="_blank">
Flash</a></td>
<td title="Set-Up" class="warning explained">
Download and install application but requires licence.</td>
<td title="Syntax" class="danger explained">
Single syntax available.</td>
<td title="Interactivity" class="success explained">
Objects can be mostly modified directly with immediate effect.</td>
<td title="Discoverability" class="warning explained">
Usage of help file and external documentation neccessary, albeit well structured.</td>
<td title="Dependencies" class="danger explained">
Very difficult to use third-party software.</td>
<td title="Serialization" class="danger explained">
Necessary to persist data, very painful.</td>
<td title="Data Safety" class="danger explained">
Manual saving required and difficult to integrate with VCS.</td>
<td title="Segregation" class="danger explained">
Programs are run with a completely different environment than they are written.</td>
<td title="Sharing" class="success explained">
Flash players used to be very wide-spread but are decreasing in popularity.</td>
<td title="Autonomy" class="danger explained">
Completely dependent on Adobe.</td>
<td title="Security" class="success explained">
Some built-in security mechanisms are provided.</td>
<td title="Universality" class="warning explained">
Programs are quite restricted in their capabilities.</td>
</tr>
<tr>
<th colspan="13">Operating Systems</th>
</tr>
<tr>
<td>Linux</td>
<td title="Set-Up" class="warning explained">
Installation process is improving but still a major hurdle.</td>
<td title="Syntax" class="success explained">
Different interpreters and compilers available.</td>
<td title="Interactivity" class="warning explained">
Memory and disk contents can be directly inspected and manipulated but only in a unstructured way.</td>
<td title="Discoverability" class="success explained">
Man pages allow to discover functionality on-line. New tools must be searched externally.</td>
<td title="Dependencies" class="warning explained">
Package managers exist but changes are often time irreversible.</td>
<td title="Serialization" class="danger explained">
Data must always be serialized for persistence and exchange. Little standardization of formats.</td>
<td title="Data Safety" class="danger explained">
Few mechanisms to guard against irreversible operations.</td>
<td title="Segregation" class="warning explained">
Source code of much software is available and can be edited and executed in terminal.</td>
<td title="Sharing" class="warning explained">
Incompatibilities between distributions and difficult to package all dependencies.</td>
<td title="Autonomy" class="info"></td>
<td title="Security" class="success"></td>
<td title="Universality" class="info"></td>
</tr>
<tr>
<td>Macintosh</td>
<td title="Set-Up" class="success"></td>
<td title="Syntax" class="success"></td>
<td title="Interactivity" class="warning"></td>
<td title="Discoverability" class="warning"></td>
<td title="Dependencies" class="warning"></td>
<td title="Serialization" class="warning"></td>
<td title="Data Safety" class="success"></td>
<td title="Segregation" class="warning"></td>
<td title="Sharing" class="success"></td>
<td title="Autonomy" class="danger"></td>
<td title="Security" class="success"></td>
<td title="Universality" class="info"></td>
</tr>
<tr>
<td>Windows</td>
<td title="Set-Up" class="success"></td>
<td title="Syntax" class="success"></td>
<td title="Interactivity" class="warning"></td>
<td title="Discoverability" class="warning"></td>
<td title="Dependencies" class="danger"></td>
<td title="Serialization" class="warning"></td>
<td title="Data Safety" class="danger"></td>
<td title="Segregation" class="warning"></td>
<td title="Sharing" class="success"></td>
<td title="Autonomy" class="danger"></td>
<td title="Security" class="warning"></td>
<td title="Universality" class="info"></td>
</tr>
<tr>
<td>Android</td>
<td title="Set-Up" class="success"></td>
<td title="Syntax" class="warning"></td>
<td title="Interactivity" class="danger"></td>
<td title="Discoverability" class="success"></td>
<td title="Dependencies" class="warning"></td>
<td title="Serialization" class="warning"></td>
<td title="Data Safety" class="danger"></td>
<td title="Segregation" class="danger"></td>
<td title="Sharing" class="warning"></td>
<td title="Autonomy" class="warning"></td>
<td title="Security" class="success"></td>
<td title="Universality" class="info"></td>
</tr>
<tr>
<td>iOS</td>
<td title="Set-Up" class="success"></td>
<td title="Syntax" class="warning"></td>
<td title="Interactivity" class="danger"></td>
<td title="Discoverability" class="success"></td>
<td title="Dependencies" class="warning"></td>
<td title="Serialization" class="warning"></td>
<td title="Data Safety" class="danger"></td>
<td title="Segregation" class="danger"></td>
<td title="Sharing" class="success"></td>
<td title="Autonomy" class="danger"></td>
<td title="Security" class="success"></td>
<td title="Universality" class="info"></td>
</tr>
<tr>
<th colspan="13">Protocols</th>
</tr>
<tr>
<td>WWW</td>
<td title="Set-Up" class="info explained">
Web browsers are installed on almost every consumer computer.</td>
<td title="Syntax" class="warning explained">
Wide range available for describing dynamic behaviour but limited for layout description.</td>
<td title="Interactivity" class="warning explained">
Elements can inspected and manipulated directly, not persistently though.</td>
<td title="Discoverability" class="warning explained">
Functionality of web application can be discovered easily by humans but not by machines.</td>
<td title="Dependencies" class="success explained">
Available resources can easily be used but sometimes require complicated authentication.</td>
<td title="Serialization" class="warning explained">
Everything must be serialized for communication. Standardized formats are available.</td>
<td title="Data Safety" class="danger explained">
Not meant to be persistent. Persistence is fragile and must be implemented by application.</td>
<td title="Segregation" class="danger explained">
Software is created and executed in two completely different environments.</td>
<td title="Sharing" class="info explained">
Just pass along the URL.</td>
<td title="Autonomy" class="success explained">
Theoretically no dependencies exist but in reality host space and domain names are needed.</td>
<td title="Security" class="warning explained">
Computer is protected by browser but data in the web is prone to many different attacks.</td>
<td title="Universality" class="success explained">
Not suitable for very interactive or time-critical applications.</td>
</tr>
</table>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
// Calculate points
$('tr').each(function () {
points = 0;
$(this).children().each(function (i) {
message = 'not rated';
if ($(this).attr('class')) {
add = 0;
switch($(this).attr('class').split(' ')[0]) {
case 'danger': add = -1; message='complicated'; break;
case 'warning': add = 0; message='ok'; break;
case 'success': add = 1; message='good'; break;
case 'info': add = 3; message='excellent'; break;
}
points += add;
}
$(this).attr('title', $(this).attr('title') + ': ' + message);
});
$(this).children().first().attr('title', unit(points, 'point'));
});
function unit(amount, name) {
return amount + ' ' + name + (Math.abs(amount) == 1 ? '' : 's');
}
$('.explained').each(function () {
$(this).data('content', $(this).html());
$(this).html('<span class="glyphicon glyphicon-info-sign"></span>');
$(this).css('cursor', 'pointer');
$(this).popover({
placement: "top",
trigger: "hover",
container: 'body',
html: true
});
});
</script>
</body>
</html>