aboutsummaryrefslogtreecommitdiffstats
path: root/root/articles/mmmfs/evaluation
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2019-10-26 11:30:58 +0000
committers-ol <s-ol@users.noreply.github.com>2019-10-26 11:30:58 +0000
commit6a30fbd239b31e293c0833c2bbcbb8def44707f1 (patch)
tree1c6501c3d36f4b09ac5648e44026fd224ccf19c6 /root/articles/mmmfs/evaluation
parentfix bug in deep_tostring (diff)
downloadmmm-6a30fbd239b31e293c0833c2bbcbb8def44707f1.tar.gz
mmm-6a30fbd239b31e293c0833c2bbcbb8def44707f1.zip
mmmfs cleanup
Diffstat (limited to 'root/articles/mmmfs/evaluation')
-rw-r--r--root/articles/mmmfs/evaluation/text$markdown.md74
1 files changed, 74 insertions, 0 deletions
diff --git a/root/articles/mmmfs/evaluation/text$markdown.md b/root/articles/mmmfs/evaluation/text$markdown.md
new file mode 100644
index 0000000..87404cd
--- /dev/null
+++ b/root/articles/mmmfs/evaluation/text$markdown.md
@@ -0,0 +1,74 @@
+Drawbacks & Future Work
+-----------------------
+
+There are multiple limitations in the proposed system that have become obvious in developing and working with the system.
+Some of these have been anticipated for some time and concrete research directions for solutions are apparent,
+while others may be intrinsic limitations in the approach taken.
+
+### global set of converts
+In the current system, there exists only a single, global set of *converts* that can be potentially applied
+to facets anywhere in the system.
+Therefore it is necessary to encode behaviour directly (as code) in facets wherever exceptional behaviour is required.
+For example if a fileder conatining multiple images wants to provide custom UI for each image when viewed independently,
+this code has to either be attached to every image individually (and redundantly), or added as a global convert.
+To make sure this convert does not interfere with images elsewhere in the system, it would be necessary to introduce
+a new type and change the images to use it, which may present yet more propblems and works against the principle of
+compatibility the system has been constructed for.
+
+A potential direction of research in the future is to allow specifying *converts* as part of the fileder tree.
+Application of *converts* could then be scoped to their fileders' subtrees, such that for any facet only the *converts*
+stored in the chain of its parents upwards are considered.
+This way, *converts* can be added locally if they only make sense within a given context.
+Additionally it could be made possible to use this mechanism to locally override *converts* inherited from
+further up in the tree, for example to specialize types based on their context in the system.
+
+### code outside of the system
+At the moment, a large part of the mmmfs codebase is still separate from the content, and developed outside of mmmfs itself.
+This is a result of the development process of mmmfs and was necessary to start the project as the filesystem itself matured,
+but has become a limitation of the user experience now:
+Potential users of mmmfs would generally start by becoming familiar with the operation of mmmfs from within the system,
+as this is the expected (and designated) experience developed for them.
+All of the code that lives outside of the mmmfs tree is therefore invisible and opaque to them,
+actively limiting their understanding of, and the customizability of the system.
+
+This is particularily relevant for the global set of *converts*, and the layout used to render the web view,
+which are expected to undergo changes as users adapt the system to their own content types and domains of interest,
+as well as their visual identity, respectively.
+
+### superficial type system
+The currently used type system based on strings and pattern matching has been largely satisfactory,
+but has proven problematic for satisfying some anticipated use cases.
+It should be considered to switch to a more intricate, structural type system that allows encoding more concrete meta-data
+alongside the type, and to match *converts* based on a more flexible scheme of pattern matching.
+For example it is envisaged to store the resolution of an image file in its type.
+Many *converts* might choose to ignore this additional information,
+but others could use this information to generate lower-resolution 'thumbnails' of images automatically.
+Using these mechanisms for example images could be requested with a maximum-resolution constraint to save on bandwidth
+when embedded in other documents.
+
+### type-coercion alienates
+By giving the system more information about the data it is dealing with,
+and then relying on the system to automatically transform between data-types,
+it is easy to lose track of which format data is concretely stored in.
+In much the same way that the application-centric paradigm alienates users from an understanding
+and feeling of ownership of their data by overemphasizing the tools in between,
+the automagical coercion of data types introduces distance between the user and an understanding of the data in the system.
+It remains to be seen whether this can be mitigated with careful UX and UI design.
+
+### discrepancy between viewing/interacting and editing of content
+Because many *converts* are not necessarily reversible,
+it is very hard to implement generic ways of editing stored data in the same format it is viewed.
+For example, the system trivially converts markdown-formatted text sources into viewable HTML markup,
+but it is hardly possible to propagate changes to the viewable HTML back to the markdown source.
+This problem worsens when the conversion path becomes more complex:
+If the markdown source was fetched via HTTP from a remote URL (e.g. if the facet's type was `URL -> text/markdown`),
+it is not possible to edit the content at all, since the only data owned by the system is the URL string itself,
+which is not part of the viewable representation at all.
+Similarily, when viewing output that is generated by code (e.g. `text/moonscript -> mmm/dom`),
+the code itself is not visible to the user when interacting with the viewable representation,
+and if the user wishes to change parts of the representation the system is unable to relate these changes to elements
+of the code or assist the user in doing so.
+As a result, the experiences of interacting with the system at large is still a very different experience than
+editing content (and thereby extending the system) in it.
+This is expected to represent a major hurdle for users getting started with the system,
+and is a major shortcoming in enabling end-user programming as set as a goal for this project.