git.s-ol.nu mmm / aab83d4
lots more writing s-ol 1 year, 11 months ago
25 changed file(s) with 411 addition(s) and 239 deletion(s). Raw diff Collapse all Expand all
55 for key, val in kv\gmatch '([a-z]-)%s*=%s*{(.-)}'
66 info[key] = val
77
8 title = (info) ->
9 assert info.title, "cite doesn't have title"
10 inner = i info.title
11 if info.url
12 a inner, href: info.url, style: display: 'inline'
8 title = () =>
9 assert @title, "cite doesn't have title"
10 inner = i @title
11 if @url
12 a inner, href: @url, style: display: 'inline'
1313 else
1414 b inner
1515
16 format_full = (info) ->
17 tt = title info
18 dot, com = if info.title\match '[.?!]$' then '', '' else '.', ','
19 switch info._type
16 format_full = () =>
17 tt = title @
18 dot, com = if @title\match '[.?!]$' then '', '' else '.', ','
19 switch @_type
2020 when 'book', 'article'
21 span "#{info.author} (#{info.year}), ", tt, "#{dot} #{info.publisher}"
22 when 'web'
23 -- note = if info.note then ", #{info.note}" else ''
24 visited = if info.visited then " from #{info.visited}" else ""
25 span tt, "#{com} #{info.url}#{visited}"
21 span with setmetatable {}, __index: table
22 \insert "#{@author} (#{@year}), "
23 \insert tt
24 if @journal
25 \insert "#{dot} "
26 \insert i @journal
27 \insert ", volume #{@volume}" if @volume
28 \insert ", pages #{@pages}" if @pages
29 \insert "#{dot} #{@publisher}" if @publisher
30 when 'web', 'online'
31 span with setmetatable {}, __index: table
32 \insert "#{@author} (#{@year}), " if @author and @year
33 \insert tt
34 \insert " (#{@year})" if @year and not @author
35 \insert "#{com} #{@url}"
36 \insert " from #{@visited}" if @visited
2637 else
27 span "#{info.author} (#{info.year}), ", tt, "#{dot} #{info.publisher}"
28
38 span with setmetatable {}, __index: table
39 \insert "#{@author} (#{@year}), "
40 \insert tt
41 \insert "#{dot} #{@publisher}" if @publisher
42 span tbl
2943 {
3044 converts: {
3145 {
00 abstract
1 problem-statement
1 motivation
2 historical-approaches
23 framework
34 mmmfs
45 examples
56 evaluation
7 conclusion
68 references
79 ba_log
0 import div, section, h1, h2, hr from require 'mmm.dom'
1 import link_to from (require 'mmm.mmmfs.util') require 'mmm.dom'
2 import ropairs from require 'mmm.ordered'
3
4 =>
5 div {
6 h1 link_to @, "appendix: project log"
7 table.unpack for post in *@children
8 continue if post\get 'hidden: bool'
9
10 section {
11 hr!
12 h2 link_to post, post\gett 'name: mmm/dom'
13 (post\gett 'mmm/dom')
14 }
15 }
0 import div, h3, ul, li from require 'mmm.dom'
0 import div, h1, ul, li from require 'mmm.dom'
11 import link_to from (require 'mmm.mmmfs.util') require 'mmm.dom'
22 import ropairs from require 'mmm.ordered'
33
44 =>
55 div {
6 h3 link_to @
6 h1 link_to @, "appendix: project log"
77 ul do
88 posts = for post in *@children
99 continue if post\get 'hidden: bool'
11 ==========
22
33 ## examples
4 In this section I will take a look at the implementations of the example for the use cases outlined above,
5 and evaluate them with regard to the framework derived in the corresponding section above.
6
47 ### publishing and blogging
58 Since mmmfs has grown out of the need for a versatile CMS for a personal publishing website, it is not surprising to
69 to see that it is still up to that job. Nevertheless it is worth taking a look at its strengths and weaknesses in this
158161 fileder can be edited. This means that content cannot be edited in its context, which is particularily annoying
159162 due to the fragmentation of content that mmmfs encourages.
160163
161 As a result, the experiences of interacting with the system at large is still a very different experience than
162 editing content (and thereby extending the system) in it. This is expected to represent a major hurdle for users
163 getting started with the system, and is a major shortcoming in enabling end-user programming as set as a goal for
164 As a result, interacting with the system at large is still a very different experience than editing content (and
165 thereby extending the system) in it. This is expected to represent a major hurdle for users getting started with the
166 system, and is a major shortcoming in enabling end-user programming as set as a goal for
164167 this project. A future iteration should take care to reconsider how editing can be integrated more holistically
165168 with the other core concepts of the design.
33 -- resolves to a value of type mmm/dom
44 =>
55 html = require 'mmm.dom'
6 import h4, div, a, span from html
6 import h4, div, a, span, ul, li from html
7 import link_to from (require 'mmm.mmmfs.util') html
78
89 -- render a preview block
910 preview = (child) ->
1314 -- get 'preview' as a DOM description (nil if no value or conversion possible)
1415 content = child\get 'preview', 'mmm/dom'
1516
16 div {
17 h4 title, style: { margin: 0, cursor: 'pointer' }, onclick: -> BROWSER\navigate child.path
18 content or span '(no renderable content)', style: { color: 'red' },
19 style: {
20 display: 'inline-block',
21 width: '300px',
22 height: '200px',
23 padding: '4px',
24 margin: '8px',
25 border: '4px solid #eeeeee',
26 overflow: 'hidden',
27 },
28 }
17 -- div {
18 -- h4 title, style: { margin: 0, cursor: 'pointer' }, onclick: -> BROWSER\navigate child.path
19 -- content or span '(no renderable content)', style: { color: 'red' },
20 -- style: {
21 -- display: 'inline-block',
22 -- width: '300px',
23 -- height: '200px',
24 -- padding: '4px',
25 -- margin: '8px',
26 -- border: '4px solid #eeeeee',
27 -- overflow: 'hidden',
28 -- },
29 -- }
2930
30 content = for child in *@children
31 li link_to child
32
33 content = ul for child in *@children
3134 preview child
3235
33 table.insert content, 1, (@gett 'intro: mmm/dom')
36 -- table.insert content, 1, (@gett 'intro: mmm/dom')
37 -- div content
3438
35 div content
39 div (@gett 'intro: mmm/dom'), content
0 Two of the earliest wholistic computing systems, the Xerox Alto and Xerox Star, both developed at Xerox PARC and introduced in the 70s and early 80s, pioneered not only graphical user-interfaces, but also the "Desktop Metaphor".
1 The desktop metaphor presents information as stored in "Documents" that can be organized in folders and on the "Desktop". It invokes a strong analogy to physical tools.
2 One of the differences between the Xerox Star system and other systems at the time, as well as the systems we use currently, is that the type of data a file represents is directly known to the system.
0 evaluation framework
1 ====================
32
4 <div class="sidenote"><mmm-embed raw path="../references/xerox-star"></mmm-embed></div>
3 In the following section, I will collect approaches and reviews of different end-user software systems from current
4 literature, as well as derive and present my own requirements and guiding principles for the development of a new system.
55
6 > In a Desktop metaphor system, users deal mainly with data files, oblivious to the existence of programs.
7 > They do not "invoke a text editor", they "open a document".
8 > The system knows the type of each file and notifies the relevant application program when one is opened.
9 >
10 > The disadvantage of assigning data files to applications is that users sometimes want to operate on a file with a program other than
11 its "assigned" application. \[...\]
12 > Star's designers feel that, for its audience, the advantages of allowing users to forget
13 about programs outweighs this disadvantage.
14
15 Other systems at the time lacked any knowledge of the type of files,
16 and while mainstream operating systems of today have retro-fit the ability to associate and memorize the preferred applications to use for a given file based on it's name suffix, the intention of making applications a secondary, technical detail of working with the computer has surely been lost.
17
18 Another design detail of the Star system is the concept of "properties" that are stored for "objects" throughout the system (the objects being anything from files to characters or paragraphs).
19 These typed pieces of information are labelled with a name and persistently stored, providing a mechanism to store metadata such as user preference for ordering or defaut view of a folder for example.
20
21 ***
22
23 Fig. 8 - Star Retrospective
24
25 The earliest indirect influence for the Xerox Alto and many other systems of its time,
26 was the *Memex*. The *Memex* is a hypothetical device and system for knowledge management.
27 Proposed by Vannevar Bush in 1945, the concept predates much of the technology that later was used to implement many parts of the vision. In essence, the concept of hypertext was invented.
28
29 ***
30
31 One of the systems that could be said to have come closest to a practical implementation of the Memex might be Apple's *Hypercard*.
32
33 https://archive.org/details/CC501_hypercard
34
35 "So I can have the information in these stacks tied together in a way that makes sense"
36
37 In a demonstration video, the creators of the software showcase a system of stacks of cards that together implement, amongst others, a calendar (with yearly and weekly views), a list of digital business cards for storing phone numbers and addresses, and a todo list.
38 However these stacks of cards are not just usable by themselves, it is also demonstrated how stacks can link to each other in meaningful ways, such as jumping to the card corresponding to a specific day from the yearly calendar view, or automatically looking up the card corresponding to a person's first name from a mention of the name in the text on a different card.
39
40 Alongside Spreadsheets, *Hypercard* remains one of the most successful implementations of end-user programming, even today.
41 While it's technical abilities have been long matched and passed by other software (such as the ubiquitous HTML hypertext markup language), these technical successors have failed the legacy of *Hypercard* as an end-user tool:
42 while it is easier than ever to publish content on the web (through various social media and microblogging services), the benefits of hypermedia as a customizable medium for personal management have nearly vanished.
43 End-users do not create hypertext anymore.
44
45 The *UNIX Philosophy* <mmm-link path="../references/unix"></mmm-link>
46 describes the software design paradigm pioneered in the creation of the Unix operating system at the AT&T Bell Labs
47 research center in the 1960s. The concepts are considered quite influental and are still notably applied in the Linux community.
48 Many attempts at summaries exist, but the following includes the pieces that are especially relevant even today:
6 The *UNIX Philosophy* <mmm-link path="../references/unix"></mmm-link> describes the software design paradigm
7 pioneered in the creation of the Unix operating system at the AT&T Bell Labs research center in the 1960s. The
8 concepts are considered quite influental and are still notably applied in the Linux community. Many attempts at
9 summaries exist, but the following includes the pieces that are especially relevant even today:
4910
5011 > Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well.
5112 > Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can't be
5314 > than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs,
5415 > become general and useful tools.
5516
56 This approach has multiple benefits with regard to end-user programmability:
57 Assembling the system out of simple, modular pieces means that for any given task a user may want to implement,
58 it is very likely that preexisting parts of the system can help the user realize a solution.
59 Wherever such a preexisting part exists, it pays off designing it in such a way that it is easy to integrate for the user later.
60 Assembling the system as a collection of modular, interacting pieces also enables future growth and customization,
61 since pieces may be swapped out with customized or alternate software at any time.
62
63 ***
17 This approach has multiple benefits with regard to end-user programmability: Assembling the system out of simple,
18 modular pieces means that for any given task a user may want to implement, it is very likely that preexisting parts
19 of the system can help the user realize a solution. Wherever such a preexisting part exists, it pays off designing it
20 in such a way that it is easy to integrate for the user later. Assembling the system as a collection of modular,
21 interacting pieces also enables future growth and customization, since pieces may be swapped out with customized or
22 alternate software at any time.
6423
6524 Based on this, a modern data storage and processing ecosystem should enable transclusion of both content and behaviours
6625 between contexts.
0 historical approaches
1 =====================
2
3 Two of the earliest wholistic computing systems, the Xerox Alto and Xerox Star, both developed at Xerox PARC and
4 introduced in the 70s and early 80s, pioneered not only graphical user-interfaces, but also the "Desktop Metaphor".
5 The desktop metaphor presents information as stored in "Documents" that can be organized in folders and on the
6 "Desktop". It invokes a strong analogy to physical tools. One of the differences between the Xerox Star system and
7 other systems at the time, as well as the systems we use currently, is that the type of data a file represents is
8 directly known to the system.
9
10 In a retrospective analysis of the Xerox Star's impact on the computer
11 industry<mmm-link path="../references/xerox-star" ></mmm-link>, the desktop metaphor is described as follows:
12
13 > In a Desktop metaphor system, users deal mainly with data files, oblivious to the existence of programs.
14 > They do not "invoke a text editor", they "open a document".
15 > The system knows the type of each file and notifies the relevant application program when one is opened.
16 >
17 > The disadvantage of assigning data files to applications is that users sometimes want to operate on a file with a
18 > program other than its "assigned" application. \[...\]
19 > Star's designers feel that, for its audience, the advantages of allowing users to forget about programs outweighs
20 > this disadvantage.
21
22 Other systems at the time lacked any knowledge of the type of files, and while mainstream operating systems of today
23 have retro-fit the ability to associate and memorize the preferred applications to use for a given file based on it's
24 name suffix, the intention of making applications a secondary, technical detail of working with the computer has
25 surely been lost.
26
27 Another design detail of the Star system is the concept of "properties" that are stored for "objects" throughout the
28 system (the objects being anything from files to characters or paragraphs). These typed pieces of information are
29 labelled with a name and persistently stored, providing a mechanism to store metadata such as user preference for
30 ordering or the defaut view mode of a folder for example.
31
32 <div class="sidenote" style="margin-top: 1rem;">
33 <p><i>How systems influenced later systems. This graph summarizes how various systems related to Star have influenced
34 one another over the years. Time progresses downwards. Double arrows indicate direct successors (i.e.,
35 follow-on versions). [...]</i></p>
36 <mmm-embed raw path="../references/xerox-star"></mmm-embed></div>
37 <mmm-embed nolink path="star-graph"></mmm-embed>
38
39 The earliest indirect influence for the Xerox Alto and many other systems of its time, was the *Memex*.
40 The *Memex* is a hypothetical device and system for knowledge management. Proposed by Vannevar Bush in 1945<mmm-link
41 path="../references/memex"></mmm-link>, the concept predates much of the technology that later was used to implement
42 many parts of the vision.
43
44 While the article extrapolates from existing technology at the time, describing at times
45 very concrete machinery based on microfilm and mechanical contraptions, many of the conceptual predictions became
46 true or inspired ....
47
48 One of the most innovative elements of Bush's predictions is the idea of technologically cross-referenced and
49 connected information, which would later be known and created as *hypertext*. While hypertext powers the majority of
50 today's internet, many of the advantages that Bush imagined have not carried over into the personal use of computers.
51 There are very few tools for creating personal, highly-interconnected knowledgebases, even though this is technically
52 feasible, and a proven concept (exemplified for example by the massively successful online encyclopedia *Wikipedia*<mmm-link
53 path="../references/wikipedia"></mmm-link>).
54
55 While there are little such tools available today, one of the systems that could be said to have come closest to a
56 practical implementation of such a Memex-inspired system for personal use might be Apple's *HyperCard*.
57
58 In a live demonstration<mmm-link path="../references/hypercard"></mmm-link>, the creators of the software showcase
59 a system of stacks of cards that together implement, amongst others, a calendar (with yearly and weekly views), a
60 list of digital business cards for storing phone numbers and addresses, and a todo list. However these stacks of
61 cards are not just usable by themselves, it is also demonstrated how stacks can link to each other in meaningful ways,
62 such as jumping to the card corresponding to a specific day from the yearly calendar view, or automatically looking
63 up the card corresponding to a person's first name from a mention of the name in the text on a different card.
64
65 Alongside Spreadsheets, *HyperCard* remains one of the most successful implementations of end-user programming, even
66 today. While it's technical abilities have been long matched and surpassed by other software (such as the ubiquitous
67 *Hypertext Markup Language*, HTML), these technical successors have failed the legacy of *HyperCard* as an end-user
68 tool: while it is easier than ever to publish content on the web (through various social media and microblogging
69 services), the benefits of hypermedia as a customizable medium for personal management have nearly vanished.
70 End-users do not create hypertext anymore.
0 # mmmfs
1 `mmmfs` seeks to improve on two fronts.
0 mmmfs
1 =====
22
3 One of the main driving ideas of the mmmfs is to help data portability and use by making it simpler to inter-operate with different data formats.
4 This is accomplished using two major components, the *Type System and Coercion Engine* and the *Fileder Unified Data Model* for unified data storage and access.
3 `mmmfs` is a newly developed personal data storage and processing system. It was developed first as a tool for
4 generating static websites, but has been extended with live interaction and introspection, as well as embedded
5 editing capabilities as part of this work.
6
7 mmmfs has been designed with a focus on data ownership for users. One of the main driving ideas is to unlock data
8 from external data silos and file formats by making data available uniformly across different storage systems and
9 formats. Secondly, computation and interactive elements are also integrated in the paradigm, so that mmmfs can be
10 seemlessly extended and molded to the users needs.
11
12 The abstraction of data types is accomplished using two major components, the *Type System and Coercion Engine* and
13 the *Fileder Unified Data Model* for unified data storage and access.
514
615 ## the fileder unified data model
716 The Fileder Model is the underlying unified data storage model.
1928 but determined loosely based on multiple heuristics depending on the system and context.
2029 Some notable mechanism are:
2130
22
2331 - Suffixes in the name are often used to indicate what kind of data a file should contain. However there is no standardization
2432 - over this, and often a suffix is used for multiple incompatible versions of a file-format.
2533 - Many file-formats specify a specific data-pattern either at the very beginning or very end of a given file.
3644 it is possible for files to be labelled as or considered as being in different formats at the same time by different components of the system.
3745 <div class="sidenote" style="margin-top: -5rem;">
3846 The difference between changing a file extension and converting a file between two formats is commonly unclear to users,
39 for example: see <a href="https://askubuntu.com/questions/166602/why-is-it-possible-to-convert-a-file-just-by-renaming-its-extension">
40 Why is it possible to convert a file just by renaming it?</a>, https://askubuntu.com/q/166602
41 <!-- https://www.quora.com/What-happens-when-you-rename-a-jpg-to-a-png-file --> from 2019-12-18
47 see for example <a href="https://askubuntu.com/questions/166602/why-is-it-possible-to-convert-a-file-just-by-renaming-its-extension">
48 Why is it possible to convert a file just by renaming it?</a>, https://askubuntu.com/q/166602 from 2019-12-18
49 <!-- https://www.quora.com/What-happens-when-you-rename-a-jpg-to-a-png-file -->
4250 </div>
4351 This leads to confusion about the factual format of data among users, but can also pose a serious security risk:
4452 Under some circumstances it is possible that a file contains maliciously-crafted code and is treated as an executable
160168 It is also important to prevent some nonsensical results from occuring, such as displaying a link to content instead of the content itself because
161169 the link requires less steps to create than completely converting the content does.
162170
163 ***
164
165 Type coercion is implemented using a general pathfinding algorithm, similar to A*.
171 Type coercion is implemented using a general pathfinding algorithm, similar to A\*.
166172 First, the set of given *types* is found by selecting all *facets* of the *fileder* that match the *name* given in the query.
167173 The set of given *types* is marked in green in the following example graph.
168174
0 motivation
1 ==========
2
3 The majority of users interacts with modern computing systems in the form of smartphones, laptops or desktop PCs,
4 using the mainstream operating systems Apple iOS and Mac OS X, Microsoft Windows or Android.
5
6 All of these operating systems share the concept of *Applications* (or *Apps*) as one of the core pieces of their interaction model.
7 Functionality and capabilities of the digital devices are bundled in, marketed, sold and distributed as *Applications*.
8
9 In addition, a lot of functionality is nowadays delivered in the form of *Web Apps*, which are used inside a *Browser* (which is an *Application* itself).
10 *Web Apps* often offer similar functionality to other *Applications*, but are subject to some limitations:
11 In most cases, they are only accessible or functional in the presence of a stable internet connection,
12 and they have very limited access to the resources of the physical computer they are running on.
13 For example, they usually cannot interact directly with the file system, hardware peripherals or other applications,
14 other than through a standardized set of interactions (e.g. selecting a file via a visual menu, capturing audio and video from a webcam, opening another website).
15
16 On the two Desktop Operating Systems (Mac OS X and Windows), file management and the concepts of *Documents* are still central
17 elements of interactions with the system. The two prevalent smartphone systems deemphasize this concept by only allowing access to the
18 data actually stored on the device through an app itself.
19
20 This focus on *Applications* as the primary unit of systems can be seen as the root cause of multiple problems:
21 Because applications are the products companies produce, and software represents a market of users,
22 developers compete on features integrated into their applications.
23
24 However this lack of control over data access is not the only problem the application-centric approach induces:
25 A consequence of this is that interoperability between applications and data formats is rare.
26 To stay relevant, monlithic software or software suites are designed to
27 As a result applications tend to accrete features rather then modularise and delegate to other software [P Chiusano].
28 Because applications are incentivised to keep customers, they make use of network effects to keep customers locked-in.
29 This often means re-implementing services and functinality that is already available
30 and integrating it directly in other applications produced by the same organisation.
31
32 This leads to massively complex file formats,
33 such as for example the .docx format commonly used for storing mostly
34 textual data enriched with images and videos on occasion.
35 The docx format is in fact an archive that can contain many virtual files internally,
36 such as the images and videos referenced before.
37 However this is completely unknown to the operating system,
38 and so users are unable to access the contents in this way.
39 As a result, editing an image contained in a word document is far from a trivial task:
40 first the document has to be opened in a word processing application,
41 then the image has to be exported from it and saved in its own, temporary file.
42 This file can then be edited and saved back to disk.
43 Once updated, the image may be reimported into the .docx document.
44 If the word-processing application supports this,
45 the old image may be replaced directly, otherwise the user may have to remove the old image,
46 insert the new one and carefully ensure that the positioning in the document remains intact.
47
48 Let us take as an example the simple task of collecting and arranging a mixed collection of images, videos
49 and texts in order to brainstorm. To create an assemblage of pictures and text, many might be tempted to open an
50 Application like Microsoft Word or Adobe Photoshop and create a new document there. Both photoshop files and
51 word documents are capable of containing texts and images, but when the files are saved, direct access to the
52 contained data is lost. It is for example a non-trivial and unenjoyable task to edit an image file contained
53 in a word document in another application and have the changes apply to the document. In the same way,
54 text contained in a photoshop document cannot be edited in a text editor of your choice.
55
56
57 https://www.theverge.com/2019/10/7/20904030/adobe-venezuela-photoshop-behance-us-sanctions
58
59
60 The application-centric computing paradigm common today is harmful to users,
61 because it leaves behind "inert" data, as D. Cragg calls it:
62
63 [Cragg 2016]
64 D. Cragg coins the term "inert data" for the data created, and left behind, by apps and applications in the computing model that is currently prevalent:
65 Most data today is either intrinsically linked to one specific application, that controls and limits access to the actual information,
66 or even worse, stored in the cloud where users have no direct access at all and depend soley on online tools that require a stable network connection
67 and a modern browser, and that could be modified, removed or otherwise negatively impacted at any moment.
68
69 This issue is worsened by the fact that the a lot of software we use today is deployed through the cloud computing and SaaS paradigms,
70 which are far less reliable than earlier means of distributing software:
71 Software that runs in the cloud is subject to outages due to network problems,
72 pricing or availability changes etc. at the whim of the company providing it, as well as ISPs involved in the distribution.
73 Cloud software, as well as subscription-model software with online-verification mechanisms are additionally subject
74 to license changes, updates modifiying, restricting or simply removing past functionality etc.
75 Additionally, many cloud software solutions and ecosystems store the users' data in the cloud,
76 where they are subject to foreign laws and privacy concerns are intransparently handled by the companies.
77 Should the company, for any reason, be unable or unwanting to continue servicing a customer,
78 the data may be irrecoverably lost (or access prevented).
79
80 Data rarely really fits the metaphora of files very well,
81 and even when it does it is rarely exposed to the user that way:
82 The 'Contacts' app on a mobile phone or laptop for example does not store each contacts's information
83 in a separate 'file' (as the metaphora may have initially suggested),
84 but rather keeps this database hidden away from the user.
85 Consequently, access to the information contained in the database is only enabled through the contacts applications GUI.
86
87 <div class="sidenote">Note that 'creative' here does not only mean 'artistic': this applies to any field, and it limits the
88 ability of domain experts to push the boundaries of practice by using technology in innovative ways.</div>
89 Creative use of computer technology is limited to programmers, since applications constrain their users to the
90 paths and abilities that the developers anticipated and deemed useful.
91
92 --
93
94 Chiusano blames these issues on the metaphor of the *machine*, and likens apps and applications to appliances.
95 According to him, what should really be provided are *tools*:
96 composable pieces of software that naturally lend themselves to, or outrightly call for,
97 integration into the users' other systems and customization,
98 rather than lure into the walled-gardens of corporate ecosystems using network-effects.
99
100 Data is inert [Cragg 2016]
101
102 Key points:
103 - data ownership
104 data needs to be freely accessible (without depending on a 3rd party) and unconditionally accessible
105 - data compatibility
106 data needs to be usable outside the context of it's past use (in the worst case)
107 - functionality
108 user needs many, complex needs met
109
110
111 Today, computer users are losing more and more control over their data. Between web and cloud
112 applications holding customer data hostage for providing the services, unappealing and limited mobile file
113 browsing experiences and the non-interoperable, proprietary file formats holding on to their own data has
114 become infeasible for many users. mmmfs is an attempt at rethinking file-systems and the computer user
115 experience to give control back to and empower users.
116
117 mmmfs tries to provide a filesystem that is powerful enough to let you use it as your canvas for thinking,
118 and working at the computer. mmmfs is made for more than just storing information. Files in mmmfs can interact
119 and morph to create complex behaviours.
0 -- main content
1 -- doesn't have a name prefix (e.g. preview: fn -> mmm/dom)
2 -- uses the 'fn ->' conversion to execute the lua function on @get
3 -- resolves to a value of type mmm/dom
4 =>
5 html = require 'mmm.dom'
6 import article, h1, h2, h3, section, p, div, a, sup, ol, li, span, code, pre, br from html
7 import moon from (require 'mmm.highlighting').languages
8
9 article with _this = class: 'sidenote-container', style: { 'max-width': '640px' }
10 append = (a) -> table.insert _this, a
11
12 footnote, getnotes = do
13 local *
14 notes = {}
15
16 id = (i) -> "footnote-#{i}"
17
18 footnote = (stuff) ->
19 i = #notes + 1
20 notes[i] = stuff
21 sup a "[#{i}]", style: { 'text-decoration': 'none' }, href: '#' .. id i
22
23 footnote, ->
24 args = for i, note in ipairs notes
25 li (span (tostring i), id: id i), ': ', note
26 notes = {}
27 table.insert args, style: { 'list-style': 'none', 'font-size': '0.8em' }
28 ol table.unpack args
29
30 append h1 'Empowered End-User Computing', style: { 'margin-bottom': 0 }
31 append p "A Historical Investigation and Development of a File-System-Based Environment", style: { 'margin-top': 0, 'padding-bottom': '0.2em', 'border-bottom': '1px solid black' }
32
33 -- render a preview block
34 do_section = (child) ->
35 -- get 'title' as 'text/plain' (error if no value or conversion possible)
36 title = (child\get 'title: text/plain') or child\gett 'name: alpha'
37
38 -- get 'preview' as a DOM description (nil if no value or conversion possible)
39 content = (child\get 'preview: mmm/dom') or child\get 'mmm/dom'
40
41 section {
42 h3 title, style: { margin: 0, cursor: 'pointer' }, onclick: -> BROWSER\navigate child.path
43 content or span '(no renderable content)', style: { color: 'red' },
44 }
45
46 for child in *@children
47 append (child\get 'print: mmm/dom') or (child\gett 'mmm/dom')
48 -- do_section child
49
50 append getnotes!
+0
-128
root/articles/mmmfs/problem-statement/text$markdown+sidenotes.md less more
0 # motivation
1
2 The majority of users interacts with modern computing systems in the form of smartphones, laptops or desktop PCs,
3 using the mainstream operating systems Apple iOS and Mac OS X, Microsoft Windows or Android.
4
5 All of these operating systems share the concept of *Applications* (or *Apps*) as one of the core pieces of their interaction model.
6 Functionality and capabilities of the digital devices are bundled in, marketed, sold and distributed as *Applications*.
7
8 In addition, a lot of functionality is nowadays delivered in the form of *Web Apps*, which are used inside a *Browser* (which is an *Application* itself).
9 *Web Apps* often offer similar functionality to other *Applications*, but are subject to some limitations:
10 In most cases, they are only accessible or functional in the presence of a stable internet connection,
11 and they have very limited access to the resources of the physical computer they are running on.
12 For example, they usually cannot interact directly with the file system, hardware peripherals or other applications,
13 other than through a standardized set of interactions (e.g. selecting a file via a visual menu, capturing audio and video from a webcam, opening another website).
14
15 On the two Desktop Operating Systems (Mac OS X and Windows), file management and the concepts of *Documents* are still central
16 elements of interactions with the system. The two prevalent smartphone systems deemphasize this concept by only allowing access to the
17 data actually stored on the device through an app itself.
18
19 This focus on *Applications* as the primary unit of systems can be seen as the root cause of multiple problems:
20 Because applications are the products companies produce, and software represents a market of users,
21 developers compete on features integrated into their applications.
22
23 However this lack of control over data access is not the only problem the application-centric approach induces:
24 A consequence of this is that interoperability between applications and data formats is rare.
25 To stay relevant, monlithic software or software suites are designed to
26 As a result applications tend to accrete features rather then modularise and delegate to other software [P Chiusano].
27 Because applications are incentivised to keep customers, they make use of network effects to keep customers locked-in.
28 This often means re-implementing services and functinality that is already available
29 and integrating it directly in other applications produced by the same organisation.
30
31 This leads to massively complex file formats,
32 such as for example the .docx format commonly used for storing mostly
33 textual data enriched with images and videos on occasion.
34 The docx format is in fact an archive that can contain many virtual files internally,
35 such as the images and videos referenced before.
36 However this is completely unknown to the operating system,
37 and so users are unable to access the contents in this way.
38 As a result, editing an image contained in a word document is far from a trivial task:
39 first the document has to be opened in a word processing application,
40 then the image has to be exported from it and saved in its own, temporary file.
41 This file can then be edited and saved back to disk.
42 Once updated, the image may be reimported into the .docx document.
43 If the word-processing application supports this,
44 the old image may be replaced directly, otherwise the user may have to remove the old image,
45 insert the new one and carefully ensure that the positioning in the document remains intact.
46
47 https://www.theverge.com/2019/10/7/20904030/adobe-venezuela-photoshop-behance-us-sanctions
48
49
50 The application-centric computing paradigm common today is harmful to users,
51 because it leaves behind "intert" data as D. Cragg calls it:
52
53 [Cragg 2016]
54 D. Cragg coins the term "inert data" for the data created, and left behind, by apps and applications in the computing model that is currently prevalent:
55 Most data today is either intrinsically linked to one specific application, that controls and limits access to the actual information,
56 or even worse, stored in the cloud where users have no direct access at all and depend soley on online tools that require a stable network connection
57 and a modern browser, and that could be modified, removed or otherwise negatively impacted at any moment.
58
59 This issue is worsened by the fact that the a lot of software we use today is deployed through the cloud computing and SaaS paradigms,
60 which are far less reliable than earlier means of distributing software:
61 Software that runs in the cloud is subject to outages due to network problems,
62 pricing or availability changes etc. at the whim of the company providing it, as well as ISPs involved in the distribution.
63 Cloud software, as well as subscription-model software with online-verification mechanisms are additionally subject
64 to license changes, updates modifiying, restricting or simply removing past functionality etc.
65 Additionally, many cloud software solutions and ecosystems store the users' data in the cloud,
66 where they are subject to foreign laws and privacy concerns are intransparently handled by the companies.
67 Should the company, for any reason, be unable or unwanting to continue servicing a customer,
68 the data may be irrecoverably lost (or access prevented).
69
70 Data rarely really fits the metaphora of files very well,
71 and even when it does it is rarely exposed to the user that way:
72 The 'Contacts' app on a mobile phone or laptop for example does not store each contacts's information
73 in a separate 'file' (as the metaphora may have initially suggested),
74 but rather keeps this database hidden away from the user.
75 Consequently, access to the information contained in the database is only enabled through the contacts applications GUI.
76
77 --
78
79 According to some researchers in the field of Human-Computer-Interaction, the state of computing is rather dire.
80
81 It seems that a huge majority of daily computer users have silently accepted
82 that real control over their most important everyday tool will be forever out of reach,
83 and surrendered it to the relatively small group of 'programmers' curating their experience.
84
85 - Applications are bad
86 - Services are worse
87
88
89 Chiusano blames these issues on the metaphor of the *machine*, and likens apps and applications to appliances.
90 According to him, what should really be provided are *tools*:
91 composable pieces of software that naturally lend themselves to, or outrightly call for,
92 integration into the users' other systems and customization,
93 rather than lure into the walled-gardens of corporate ecosystems using network-effects.
94
95 Data is inert [Cragg 2016]
96
97 Key points:
98 - data ownership
99 data needs to be freely accessible (without depending on a 3rd party) and unconditionally accessible
100 - data compatibility
101 data needs to be usable outside the context of it's past use (in the worst case)
102 - functionality
103 user needs many, complex needs met
104
105
106 Today, computer users are losing more and more control over their data. Between web and cloud
107 applications holding customer data hostage for providing the services, unappealing and limited mobile file
108 browsing experiences and the non-interoperable, proprietary file formats holding on to their own data has
109 become infeasible for many users. mmmfs is an attempt at rethinking file-systems and the computer user
110 experience to give control back to and empower users.
111
112 mmmfs tries to provide a filesystem that is powerful enough to let you use it as your canvas for thinking,
113 and working at the computer. mmmfs is made for more than just storing information. Files in mmmfs can interact
114 and morph to create complex behaviours.
115
116 Let us take as an example the simple task of collecting and arranging a mixed collection of images, videos
117 and texts in order to brainstorm. To create an assemblage of pictures and text, many might be tempted to open an
118 Application like Microsoft Word or Adobe Photoshop and create a new document there. Both photoshop files and
119 word documents are capable of containing texts and images, but when the files are saved, direct access to the
120 contained data is lost. It is for example a non-trivial and unenjoyable task to edit an image file contained
121 in a word document in another application and have the changes apply to the document. In the same way,
122 text contained in a photoshop document cannot be edited in a text editor of your choice.
123
124 Creative use of computer technology is limited to programmers, since applications constrain their users to the
125 paths and abilities that the developers anticipated and deemed useful.
126 Note that 'creative' here does not only encompass 'artistic': this applies to any field and means
127 that innovative use of technology is unlikely to happen as a result of practice by domain experts.
00 xerox-star
1 memex
2 hypercard
3 wikipedia
14 unix
25 subtext
36 inkandswitch
00 @web{aspect:ratios,
11 title = {Aspect-ratio independent UIs},
22 url = {https://s-ol.nu/aspect-ratios},
3 author = {Bekic, S.}
3 author = {Bekic, Sol}
44 year = {2019},
55 visited = {2019-12-18},
66 }
0 @online{hypercard,
1 title = {Computer Chronicles, Episode 501},
2 url = {https://archive.org/details/CC501_hypercard},
3 visited = {2019-12-18},
4 year = {1987},
5 }
0 @web{23295968,
0 @web{linux:exec,
11 title = {How does Linux execute a file?},
22 url = {https://stackoverflow.com/a/23295724/1598293},
33 publisher = {stackoverflow.com},
0 @article{memex,
1 author = {Bush, Vannevar},
2 title = {As we may think},
3 journal = {Atlantic Monthly},
4 year = {1945},
5 volume = {176},
6 pages = {101-108},
7 }
11 author = {Albertini, Ange},
22 title = {Abusing file formats; or, Corkami, the Novella},
33 year = {2015},
4 journal = {PoC||GTFO 7},
4 journal = {PoC||GTFO},
5 volume = {7},
6 pages = {18-41},
57 }
00 =>
11 html = require 'mmm.dom'
2 import ol, li from html
2 import div, h1, ol, li from html
33
4 ol for ref in *@children
5 li ref\gett 'mmm/dom'
4 div {
5 h1 "references"
6 ol for ref in *@children
7 li ref\gett 'mmm/dom'
8 }
0 @web{wikipedia,
1 title = {Hyperlink - Wikis},
2 url = {https://en.wikipedia.org/wiki/Hyperlink#Wikis},
3 publisher = {wikipedia.org},
4 visited = {2019-12-18},
5 }
0 @article{xerox:star,
1 author = {Johnson, Jeff et. al},
2 title = {The Xerox Star: A Retrospective},
3 journal = {Computer},
4 issue_date = {September 1989},
5 volume = {22},
6 number = {9},
7 month = sep,
8 year = {1989},
9 issn = {0018-9162},
10 pages = {11-26, 28-29},
11 url = {http://dx.doi.org/10.1109/2.35211},
12 doi = {10.1109/2.35211},
13 acmid = {66894},
14 publisher = {IEEE Computer Society Press},
15 address = {Los Alamitos, CA, USA},
16 }