-
Notifications
You must be signed in to change notification settings - Fork 148
Description
I am a newcomer to the project both as a user and one reviewing the current development activities, and I am excited about the prospect of a notes application, as well as the larger Nextcloud platform, to provide a less distracting, intrusive, and inflexible alternative to commercial services, while retaining high standards of design quality and operational reliability.
Having made a best effort to understand the current project state and future ambitions, I have come to think it appropriate now to consider the desired user experience of the notes app as it relates to files, filenames, titles, and metadata, and whether the current file-driven backend storage strategy ultimately allows that experience to be realized.
Since I am new, I hope that I am not merely creating distractions by repeating old suggestions, whether they were earlier accepted or rejected. I also respect that some may variously feel the time too soon or too late for this discussion, but I would say better early than late, and better slightly late than very late.
Currently, in the backend storage, as much as I understand, each note is a file in a directory tree, and all data related to each note are completely determined by the file contents and location. The discussion in #190 is considering whether the file may be also given a user-specified name, to serve as the note title.
Agreeing with many writing in #190, I expect that many users would be frustrated by being unable to select an explicit title. Three reasons are apparent:
- As I explained earlier and at length in decouple note title from first line of contents #289, linking the first line of a file body to how it is displayed in a list breaks the common assumption that file name is used to select what information is processed, and is distinct from the information itself. This problem may have limited consequences if the notes app is the only application that processes the notes files, but then much of the benefit of the file-based representation is lost. Consider the possibility that the ultimate target of a notes file is pandoc.
- MarkDown is intended for relatively short sequences of text, with support for heading structure, but not for titles. It is not suitable, without extensions, for self-contained documents, and no feature common to all current dialects provides documents with a way to specify a title that is recognized and properly formatted by a processor. Any title assigned to a MarkDown sequence must be specified externally. YAML metadata blocks are employed by pandoc, and other solutions elsewhere.
- More generally, as many will intuitively realize, the assumption is overly restrictive, and often invalid, that the title of a set of structured text is necessarily equal to the first line. It may be third line, or the first line combined with the second, and so on.
A further consideration, more broad than mere titles, is that many users, I think, will be unhappy with a notes application that looks sufficiently similar to a file browser. They have no reason not to use the latter, if they find no experience in the former that more intuitively facilitates their need to constantly collect and to organize mundane text.
As such, the modes that a human intuitively organizes information, separate from how software engineers have done so, is the central concern.
Increasingly, users think of computer data as they think of physical objects, based on what they are rather than what they have been labeled. When we look for an e-mail message in our inbox, we think about the date, sender, and subject. The message headers may contain unique identifiers, but users don't know or care. The data element most similar to file name or title in an e-mail message is the subject line, but its purpose is to describe not to identify. Equally, in recent days, I have used a photo browser, a music player, and voice recorder, and while in each case the underlying assets were files, the representation in the interface was driven not by file name or location, but by content and metadata, such as thumbnail, artist name, or recording length. Details of the file tree could be shown in the application if desired, but by default were abstracted from my view.
Commonly-used note applications are similar. They generally attach metadata to each note, such as timestamp, and sometimes cached thumbnail previews. More, the ones I have used will even let me create an exact copy of any note, body and title, with no need to resolve a name collision. The duplicate appears identical to the original, including having an identical title, and is created instantly and unconditionally.
If the application is to produce an experience that allows it to compete for the same user base as these solutions, then it is difficult for me to see how the simple file-tree representation is adequate. To be sure, many commercial solutions are bloated, and it is unnecessary to consider more than a minimal set of features that makes a notes application handle the range of common uses. (Which side of this divide to place attachments is to me an open question.)
From the above concerns, I offer some suggestions:
- Support titles, but don't require them for every note. Coping with either case appropriately is a presentation issue, so making it a persistence issue will cause problems. An application could, for example, represent a list of notes by title, if given, otherwise its first line, along with modification date. Automatically assigning and saving a title based on the first line of the first draft is also reasonable, but not dynamic. Redundant data need not be persisted when the user interface can dynamically resolve the missing fields such that they always reflect the current values of the fields from which they derive. A dynamic approach also means that display issues from bugs are resolved immediately upon upgrade, even for data sets created by the earlier buggy version.
- If the model of one file per note is easy and appealing, then keep it. I have advocated for its advantages. But different notes ought to be able to have the same title, and all notes must have metadata, not limited to titles. Creation and modification date should be saved, and they are different from the corresponding fields in the file system. If a cloud instance is copied to a new storage volume, then the file timestamps might change, so the application-level metadata must be separate, perhaps inside a database table. If a table that holds these fields points to a filename, then each note must have a file name that is static, automatic, and unique. A hash code or timestamp-base naming scheme each work, the latter being more transparent.
- If file-level client synchronization of a notes collection is useful, but files are given opaque names for reasons appearing above, then perhaps exposing a virtual file-tree view via WebDAV or REST is a better option than directly exposing the physical file tree. Maybe "file name" could be a metadata field of each note, exposed as the filename within the virtual view, to facilitate integration with client software (e.g. standalone MD editors and processors) that opens files by name. This virtual file view avoids the problem of exposing opaque file names to the client, while still allowing the application to reliably produce metadata-driven user interactions. This model also allows metadata to be represented directly in each file header, if desired, rather than in an external database table, because the header can be filtered away in the virtual view.
- Support tags. While I personally like that categories can be nested as tree elements, not simply flat lists, I think that this advantage is less important than (though not in conflict with) the demand for tags, which are currently supported both by other Nextcloud apps and by many client applications written expressly for the Nextcloud notes app. In the latter case, tags are saved on the client but cannot be synchronized with the server, or with other clients, because of the limitation. If the notes app does not support tags, then it will be conspicuous in the Nextcloud ecosystem for their absence.
I apologize to anyone who finds my observations pedantic or distracting. My objective is to help suggest how the design efforts might be directed toward making the notes app as effective as possible.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.