Still no documentation and not anywhere close to done, but my #ActivityPub #PHP library is open source at

My goal is to provide a well-tested, flexible library that handles the complicated parts of ActivityPub (JSON-LD, persistence, addressing, etc.) in a way that can be plugged into an existing PHP codebase with no hassle. That'll help me refactor #Pterotype, and will also make it easy for other developers to make developers to make plugins for Joomla, Drupal, etc.

@jdormit One of my goals for the comming years, not sure whether it could be 2019 or not, depends on how quickly I catch onto C#, but I want to make a library for .NET for ActivityPub first, because it's simpler, and then Zot. second. Seems that all of the other frameworks are covered. Fact that .NET folks are left out's been driving me nuts for a while now.

For sure, make it happen! The more platforms we get on the network the better it gets.


@jdormit Is it even possible, though? I think if it were, then wouldn't someone have done it already? DNN community sorta laughed at me in an odd way when I mentioned it to them. Acted like they didn't have a clue what I was talking about. I mean, the new standards of ActivityPub, Webmention, and so on can't be that new, can they? Then again, there's that whole misconception that anything written for the .NET Framework isn't open source because the underlying OS is not open source. That definition is too narrow for me.

I don't see why it wouldn't be possible, it's just a specification. I don't know too much about The .NET ecosystem though so I can't comment on what it would look like. The API I'm aiming for with my library is a "bring-your-own-database" kind of thing - you configure the DB details and the library gives you a nice API to create, send, and receive Activities.

@jdormit I'm liking that. Could be nice for SQL server supported applications, too. Often wondered, as well whether Pterotype works on ProjectNami, the version of Wordpress that supports native SQL Server rather than MariaDB. (it will if it doesn't use database calls, but instead relies only on the WP API.) And I know that this is a complete nonsequetur, but I'm also from Boston. I'm hoping that I can run into you at a meetup sometime; I always attend those where I can.

It probably would, but I haven't tested it out. The Cambridgeport reference in your username gave you away πŸ˜† What sort of meetups do you go to? The only one I regularly is the Clojure Group meetup at Akamai in Kendall, but I would like to go to more

@jdormit I'm absolutely everywhere. another favorite of mine is Powershell, even though I haven't been to one of those meetings in a while. And, who knows, I might join you one of these days. That sounds like a rather interesting language. I've heard of it, though never studied it.

@cambridgeport90 @jdormit If y'all know of other generic/extensible ActivityPub libraries in static language libraries please let me know. I am putting together a talk and want to be sure I have an accurate picture of the landscape, and I am not sure how up to date mayel's list of decentralized AP-based apps is.

@cj @jdormit If I find any more, I'll definitely do that. I know that Django supports some of the features, not sure about activityPub off hand, though.

Sounds interesting, will the talk be available online?


@jdormit If so, I'm going to definitely want to listen, and then share with some people in our community who need to learn.

@jdormit @cambridgeport90 If It gets accepted (I don't know if it will) by the committee at FOSDEM, then yes it would be recorded.

As far as I know, most ActivityPub apps are rolling their own implementation. Why static languages?

After I get #Pterotype to a stable place, I'm going to start on a Clojure ActivityPub library to support another project I've been thinking about.


@jdormit @cambridgeport90 Because "generic" or "extensible" plus "static typing" is a very challenging challenging for implementing #ActivityPub.

There's less considerations when an app rolls its own specific implementation regardless of language typing.

When implementing a "generic" or "extensible" library, dynamic typing has less challenges.

@cj @jdormit Oh boy. Looks like I have a bit of a difficult future ahead of me, doesn't it?

@cambridgeport90 Yeah, but I don't mean to discourage. Instead, once you do tackle it, you can take solace in the fact that you succeeded despite picking the road less travelled.

@cj In other words, it's not impossible, just hard … Well, this will be an experiment then to see whether or not I can successfully use the C# dynamic language extensions for something like this. Or … might think about IronPython? Thoughts?

@cambridgeport90 I know there's some Python implementations of ActivityPub that you may be able to use as a reference (see I am not familiar with the additional constraints of the .NET DLR environment, so you'd be pushing the boundaries of human knowledge there. :)

Sorry I'm not of more help.

@cj Is it possible though via static languages? I've never heard of it, but then again, not everyone considers .NET conducive to the open source community, either.

@cambridgeport90 Yes its possible to implement ActivityPub in a static language.

And I'm of the mindset of "pick the language you want to use, critics-be-damned". If C# isn't known for its open source then at least you'd be a part of the change.

@cj It's what I aim for ... Especially in light of the changing mindset with .Net Core.

Sign in to participate in the conversation
QOTO Mastodon

Welcome to the QOTO instance

QOTO: Question Others, Teach Others

A Mastodon instance for scholars in Science, Technology, Engineering, and Mathematics (STEM) and all yearning to learn.

A free speech space. No censorship here.
We do not silence or block any instances.

Unique Features
  • Inline math Latex support - Use \ ( and \ ) for inline LaTeX, and \ [ and \ ] for display mode.
  • 65,535 character limit for toots (usually 500)
  • 65,535 character limit for profile bio (usually 160)
  • Full text searches - usually you can only search hashtags and usernames
  • Halcyon / Twitter clone front-end - Want the interface to look exactly like the Twitter interface? After you signed up just go here to login:
  • PeerTube - We host our own PeerTube server with open registration for up to 100MB, but all of our active users get unlimited quotas. Sign up here:
  • Professionally hosted with nightly backups
  • light modern theme with full width columns (not fixed)
  • Several extra themes - including mastodon default and mastodon default with full width columns (not fixed)

Message to New Members

Welcome to the Qoto Mastodon instance, its like twitter but better!

Please don't hesitate to Direct Message me or tag me in Toots (what we call tweets here) if you have any questions or even if you just want to chat.

If you are new to Mastodon you may want to check out this official getting started guide:

We are a free speech, no censorship zone. Feel free to talk about whatever you want, say whatever you want, as long as it is legal you wont ever get banned from the server. With that said we do have a few rules: No spam, and no using multiple accounts to circumvent personal bans.

This server isnt a typical mastodon server either. I have personally modified the code on this server to give it several unique features you wont find on other servers.

If you are new to Mastodon here is some useful info.

First off, if your coming from Twitter and you'd prefer an interface that looks exactly like twitter, then just go here and login with your Qoto credential: No need to create an account there, your account on this server will work just fine. Just enter your username in the following format @[username] so for me it would be @freemo But personally I think our default skin here is way better.

Basically Mastodon is a decentralized twitter. That means anyone can run a server (like Qoto) that people can sign up to and use just like twitter. The unique part is how the servers talk to each other.

If you want to tag someone on the same server as you then you can just do @user however if you want to specify someone on a different server you can do @user@server. If someone follows you or mentions you on any server on the internet you'll get notified right here. So my full tag is

So now a bit about the timelines, there are three (unlike twitter there is just one): Home, Local, Federated.

The Home timeline is just like what you'd expect on twitter, that is, everyone you are following.

The local timeline is any post made by anyone on your local server.

The federated timeline is what is cool. It combines the timeline of everyone on the server into one. This way you can see the posts of everyone that is followed by anyone on the server (assuming the post is public). So this timeline is a close representation of everyone on the internet who has Mastadon (though not really). Moreover we have a bot here that goes around and federates with everyone it can find, so our Federated Feed is rather robust covering thousands of instances.

Only other thing that is unique is listed vs unlisted posts. You have normal privacy settings like on twitter but you also can set a post to be listed or unlisted. If it is listed it acts just as i described. If it is unlisted then it acts just as a normal tweet would but it doesnt show up on local or federated timelines anywhere.

Also this goes without saying, but don't be racist, sexist, hateful, and don't harass people. Its a pretty shitty thing to do, don't be shitty!

The following is the list of QOTO administrators/moderators.
Note: The account listed as the administrator is NOT an actively monitored account. It was selected so as not to show favoritism among our moderator group, we are a democracy and even our administrators and moderators are held to the same high standards of decency as the rest of the community.

***We will never advertise on QOTO or sell your information to third-parties***