Ideas for a possible FAQ Solid App

Indeed. I think the general need that @timbl expressed could be described as:

Need: Make knowledge generated in one place (channel) easily available (‘pubsub’) to any other place (app) where its valuable.

(Note that ‘PubSub’ is just conceptional, not necessarily a direct component of the technical implementation)

This refers to where you subscribe to the knowledge, which is either directly to the channel where it is generated, or to some aggregation point. The latter might be fed with knowledge coming from many different channels. The aggregator decouples from the channels.

This refers to the use case that is interesting to you, i.e. the ‘app’ part of the equation that consumes knowledge from connected aggregators or channels.

Your app has generated new knowledge as it were, and to make that available to other you now take the role of a ‘channel’ that published it.

I perceive about 4 parts possibly, namely:

  1. the vocab design and that may include rules for how it should be represented in UI’s
  2. the actual channel plugin that is capable of rendering the UI for that particular channel
  3. the whole infrastructure for distributing the appropriate locations
  4. the storage and aggregation of knowledge

For my case I see the best role in 3) is ActivityPub + Fediverse. In 1) a big role for Linked Data. Part 2) is wholly channel-specific, and 4) seems best suited to what Solid brings to the table on top of Linked Data.

For a generic applicability of the solution the separation of concerns this offers is important. Reformulating the above the general process is:

Extraction → Distribution → Aggregation → Consumption

Each of these steps may have some tailored processes that depend on the use case. For a MVP we should keep as simple as possible but recognize the extensibility points that exist in this top-level process.

I think the main question is: Could we define a good wire format that captures a FAQ knowledge snippet? I guess that’s a Yes (e.g. JSON-LD). Other than that:

  • Extraction: depends on a) the channel you wanna use b) your requirements for gathering data from said channel.
  • Distribution: might be provided mostly out-of-the-box, without custom requirements to consider.
  • Aggregation: might also be mostly readily available as general components to deploy.
  • Consumption: is then the part where most of custom needs must be addressed (e.g. collaborative editing)

You might object that Aggregation cannot be box-standard, because review + collaborative editing must first occur to assure knowledge quality. But I see that as just another Consumer app / component in the overall flow, where the processed result (‘enriched knowledge’) is fed back in the system.

I see this as a concern in the Extraction step of the process flow. How are snippets of knowledge created, and how does that affect how people interact in that particular channel?

There may some rather generic channel implementation available for the most simple use cases. Other than that custom requirements may arise. One such requirement may be that only particular stakeholders have the ability to define knowledge snippets for aggregation.

I will give an example scenario, completely different than @timbl’s Solid FAQ app that has this requirement. Here goes…


Use case: Improve Github issue management

Problem statement

In our project we have great interaction from our development community and contributors. Many issues are created and thoroughly discussed until either a PR is created or the issue is closed as “Not doing”. But as our project grows in size and complexity we have to tackle some important bottlenecks:

  • Our maintainers spend more time than needed in issue management to follow-up in all ongoing discussions.
  • Even when an issue is still open the amount of text gets Too Long; Didn’t Read for many, leading to inefficient communication.
  • After the issue is closed the discussion contains many implicit design + architecture decisions that become hard to find.

Solution

Give maintainers the ability to markup knowledge snippets in their responses to issue comments, that are automatically aggregated to the various documentation artifacts of the project. An example of such response might look like:

@TheMaintainer wrote:
Thank you @SomeUser for that explanation. I wasn’t aware that our project was in use for such large-scale deployment. We see that we must support this for you and future customers, so I hereby define:

Requirement: The server MUST support at least 500 concurrent connections.

As for your other points … [bla bla yada yada] …

@SolidKnowledgeBot: I added 1 Requirement to Functional design on behalf of @TheMaintainer and related to #3456.

SolidKnowledgeBot might update docs directly, but more likely would create PR’s if the functional design was a Markdown file in /docs. But there might be multiple consumers, such as a Trello board where a card is created, or a Discourse forum where a discussion topic is created for project community.

1 Like