1/

I have spending time thinking of ways you could automatically create ActivityPub / ActivityStreams data from HTML and Markdown

Most people will probably write in plain UTF-8 text, or Markdown, or HTML

How to do you take that and get it onto the Fediverse and Social Web‽

This isn't just a question of how to technically do it — but also a question of user-experience (UX)

I.e., what are "good" ways of doing it‽

...

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

2/

What are "good" ways of automatically creating ActivityPub / ActivityStreams data from HTML and Markdown‽

I think the answer depends on who, for example, is writing HTML, and how they are writing it.

For example, is this a typical user? Is this a power-user? Do they know HTML? And if they do know HTML, how well do they know it? Etc?

I will show you what I mean —

...

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

3/

If a typical user is writing in Markdown, and their Markdown file has a level-1 heading right at the beginning, then —

That could go into the ActivityPub "name" field.

And, similar could be done for HTML, too.

...

But what about power users —

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

4/

I think one mistake some software does is — they create a good experience for beginners, but have a poor experience for power-users.

And keep in mind that — some beginners become power-users later on.

I think it is important to design for power-users, too, in addition to beginners.

...

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

5/

So, what would be a good user-experience (UX) for power-users be — in a system that automatically creates ActivityPub / ActivityStreams data from HTML and Markdown‽

One thought I had is that power-users could explicitly mark what data from their HTML gets into the ActivityPub / ActivityStreams data (if they want to).

I'll explain —

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

6/

Obviously, beginners are NOT going to do this, but — some power-users may want this level of control.

There are different way this could be done, but — one way might be that power-users could use RDFa to explicitly specify what data from the HTML gets into the ActivityPub / ActivityStreams data.

Again, beginners and typical users would NOT do this.

But a power-user might want to.

Here is an example —

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

7/

If you are wondering what RDFa is —

You might be more familiar with OpenGraph.

https://ogp.me/

OpenGraph is usually the thing that causes "preview cards" to be showed for links shared on social-media.

OpenGraph is written in RDFa. Which, in practice, is some special HTML elements added to the page.

For example:

<meta property="og:image" content="https://example.com/img/preview.png" />

So what about ActivityPub‽ —

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

Open Graph protocol

The Open Graph protocol enables any web page to become a rich object in a social graph.

8/

REMEMBER: this is for power-users, not regular users

How would you get ActivityPub / ActivityStreams into HTML using RDFa‽

Like this:

<div vocab="https://www.w3.org/ns/activitystreams#" typeof="Note">
<p property="name">Hello!</p>
<p>How do you do?</p>
</div>

AGAIN, REMEMBER: this is for power-users, not regular users.

Regular users can just write Markdown or HTML and Retejo will figure this out automatically for you

#ActivityPub #ActivityStreams #FediDev #Fediverse #Markdown #retejo #RDFa

ActivityStreams 2.0 Terms

This document lists the terms used for the ActivityStreams 2.0 protocol and its stable extensions, and provides a namespace so each term has an HTTP IRI.

@reiver I don’t fully understand the difference between ActivityPub and ActivityStreams, so that may be confusing the issue for me here. But without interaction this feels like a subscription mechanism akin to RSS or JSONFeeds - a perfectly valid use case if that is the case. But I’m a bit confused about who the actor/author would be for these posts, and whether the concept of federation applies.

@reiver I guess I’m also confused about what value there is in being a first-class object without also publishing an activity by an actor.

What is the intended function of the AP integration on Retejo?

@kaleb

Regarding:

"what value there is in being a first-class object without also publishing an activity by an actor."

People on the Fediverse can still boost, favorite, bookmark, and comment to the content on a Retejo site — even if a Retejo site doesn't have a working inbox.

And, people can view content on a Retejo app from within whatever Fediverse app they are using (rather than have to go to a web-browser).

@kaleb

FWIW, I may create a solution for the Retejo inbox later.

(Maybe by doing an HTTP redirect to something else.)

But, currently, Retejo doesn't have a working inbox (as it is a static site)

@reiver I would actually prefer to not have an inbox on this, but I would want to have some interaction controls at time of publication or at server set-up to prevent comments since I may never receive them.

@kaleb

Technically, there isn't a way to prevent comments.

You could control what comments you tell others about — who ask for comments on your post.

But, comments could exist elsewhere.

...

It ends up depending on what your app does to get comments (to a post).

Does it just ask the post?

Does it look at what comments its home-server is aware of?

Something else?

...

Because the user's home-server may, for example, be aware of some comments that you want to block or filter out.