We’ve started a discussion about improving the library feature within KoBoToolbox, and if you’re reading, you’re invited to participate It’s already possible to organize questions, blocks, and templates within collections and to share that content with other users, but we want to facilitate collaboration on a larger scale and make it easier for people to find each other’s shared content.
This post is now a wiki! Please edit it directly. I’ve included the notes from an initial meeting of the KoBoToolbox team below, but further discussion will take place here, on the public forum.
Reference material
- Old InVision screens: https://projects.invisionapp.com/boards/MQ1ZESK2KWRHJ#/3331748
- @mike.destaubin’s new mockups: https://app.atomic.io/d/Mb6TvK9HKid0
User stories
“my library content”—since the concept is repeated frequently, let’s define it as the following:
- my own questions, blocks, and templates
- questions, blocks, and templates explicitly shared with me
- questions, blocks, and templates contained in collections that are explicitly shared with me
- questions, blocks, and templates contained in public collections to which I have subscribed
I want to… ( indicates already possible)
- create, organize, and share library items:
- use a familiar interface (from the “Projects” UI) to create a new library item
- click the “New” button and see a centered modal right away, then
- choose between:
- question/block
- template
- collection
- upload
- enter metadata if only I have chosen template or collection
- go directly to the form builder if I have chosen question/block or template
- upload a file if I have chosen upload (this already works, but which types do we handle?)
- just go back to the library list if I have chosen collection, or to a collection landing page or modal? Answer: go back to the library list
- create private questions, blocks, and templates inside my library
- share those library items explicitly with one or more people
- create private collections within my library
- place questions, blocks, and templates inside those collections
- share those collections explicitly with one or more people, so that they receive access to all items inside the collections
- share one or more collections publicly so that they appear in a list visible to all users on the system
- be prompted to enter metadata when sharing publicly
- organization, country, and primary sector are required
- tags and description are optional
- be prevented from publicly sharing an empty collection (but if a collection that’s already public has all its content removed, that’s okay)
- be prompted to enter metadata when sharing publicly
- add tags to any of my library items
- use a familiar interface (from the “Projects” UI) to create a new library item
- browse through the library:
- see only items owned by me (“My Library”). Items’ icons shall have a globe overlay when shared publicly, and a head+torso overlay when shared with individual users. If simultaneously shared individually and publicly, show the globe overlay.
- see items either shared with me explicitly or public collections to which I’ve subscribed (“Shared With Me”)
- see public collections to which I have not yet subscribed (“Discover”). This is the MVP new list view of collections!
-
see which collection contains a particular item (collection name as a column?) Answer: replace “Type” column with collection name (blank if none).
- Replace question/block/template rounded rectangles with smaller icons. Showing a number in the icon is not necessary.
- always see the owner’s username, even for me-only views (Google Drive’s convention)
- with one query, search through all of my library content (see definition above)
- filter and sort any tabular lists of library items using a consistent interface within the column headers
- open any item (question/block, template, or collection) and see a familiar UI from the “Projects” section of the application, including a landing page and a settings page
-
We wanted metadata to be links, so that clicking any piece of metadata would execute a new search using that attribute as the criterion. Do we still want that, and if so, would that happen on the landing page?Answer: let’s postpone this for now. - when opening a collection, see a list of the items it contains
- see an Enketo preview of any of these items
- if an item is a block, see how many questions it contains
-
- when “discovering” new public collections, open a quick-view modal—without leaving the list view of collections—that displays metadata, contents (with Enketo preview links), and maybe (low-low priority) a popularity graph.
- see an indicator when a collection to which I’ve subscribed has changed since my last viewing (low-low priority)
- discover others’ public collections:
- search for public collections by:
- organization
- country
- primary sector
- tags
- language
- date
- name
- description
- label of each question within the collection + its blocks and templates? Anwer: No labels.
- use a Gmail-style search guide that displays the resulting query in an input box that I can see and modify
- see public collections sorted descending by modification date by default
- see how many subscribers each public collection has
- see whether a public collection is “trending,” i.e. its increase in number of subscriptions over some interval of time exceeds a certain threshold (low priority)
- click a shortcut link to have sorting quickly adjusted:
- “Newest”: descending by modification date
- “Popular”: descending by number of subscribers
- “Trending”: descending by “trendiness” (as yet undefined; low priority)
- Avoid seeing empty collections—they should be omitted from the list
- subscribe to others’ public collections
- search for public collections by:
- make use of library content:
- see my library content (definition above) in the “Add from Library” sidebar when building a form
- create a new form from any template within my library content
- Bug: “Create project: Choose template” shows the “Owner” as “me” even when the template is part of someone else’s public collection
- clone another user’s public collection in its entirety
- learn about new library features through an in-app message / forum post once they are released
For future discussion
- Global toggle to show/hide tags in list view. Right now, they can only be shown by clicking each individual library item
- Or, always show tags in a compact way (similar to Discourse?)