07df3adee5
This was a fucking nightmare, as expected. All because the PublicKey type is not really a derivation of the ActivityStreams "Object", which I had been hackily relying on for things to inherit the JSONLD "id" and "type" properties. This breaks the "id" and "type" JSONLD properties into first-class properties known within the tool, which for now is a patchy job of duct tape to cover the leaks. If someone wants "PublicKey" to have more default supported properties, I will kindly ask them to fork a code generation that suits them. This took way too much effort to treat PublicKey like a grab bag. This isn't the fix for, but is on the road to fixing, the known bug about aggressive deserialization of "PublicKey" into other types. In fact, this is on the way to *correctly* fix it without a horrible patch in the generated code (imagine being hacky in []jen.Code{...}, that's too much poo to put into the meta code). The things I do to support incomplete ontologies and major Federation players that, for whatever reason on this god-forsaken planet, decided to adopt the ontology and type everything except "PublicKey" (I don't count "endpoints" because that is a pile of steaming poo for another different reason in addition to this one, and is completely optional). |
||
---|---|---|
.github | ||
astool | ||
pub | ||
streams | ||
CHANGELOG | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
go.mod | ||
go.sum | ||
LICENSE | ||
README.md |
activity
go get github.com/go-fed/activity
This repository contains two libraries and a tool:
astool
: A linked-data aware tool to generate golang native types for any ActivityStreams vocabulary.streams
: The ActivityStreams native types generated with theastool
.pub
: ActivityPub Social Protocol (Client-to-Server or C2S) and Federating Protocol (Server-to-Server or S2S)
Status
Preview (unstable) 1.0.0 (Semantic Versioning)
An official implementation report was last submitted for version 0.2.0 here.
Previous unofficial implementation reports are available in issue #46.
Please see CHANGELOG for changes between versions.
Getting Started
See astool
, streams
, or pub
for their own README.
How can I get help, file issues, or contribute?
Please see the CONTRIBUTING.md file!
How well tested are these libraries?
I took great care to add numerous tests using examples directly from specifications, official test repositories, and my own end-to-end tests.
v1.0.0 still has a lot of unit tests to be written. Bug fixes and small backwards-incompatible behavior is expected before it is blessed as being released.
Who is using this library currently?
Application | Description | Repository | Point Of Contact | Homepage |
---|---|---|---|---|
Anancus | Self-hosted and federated social link aggregation | https://gitlab.com/tuxether/anancus | @tuxether@floss.social or tuxether@protonmail.ch | N/A |
WriteFreely | Simple, open-source, privacy-focused blogging platform | https://github.com/writeas/writefreely | @write_as@writing.exchange or hello@write.as | https://writefreely.org |
Read.as | Long-form reader built on open protocols | https://github.com/writeas/Read.as | @write_as@writing.exchange or hello@write.as | https://read.as |
How do I use these libraries?
Please see each subdirectory for its own README for further elaboration.
FAQ
Please see the CONTRIBUTING.md file!
Useful References
- ActivityPub Specification
- ActivityPub GitHub Repo
- ActivityStreams Core Specification
- ActivityStreams Vocabulary Specification
- ActivityStreams GitHub Repo
Thanks
I would like to thank those that have worked hard to create the technologies and standards that created the opportunity to implement this suite of libraries.
Thanks to those who have been early adopters with v0 and/or provided early feedback.