Comments (11)
Heard back from the Tapbots team. They said they require post/statuses/toots to have numerical IDs. Wildebeest uses UUIDs.
Separately, while digging into the issue, I noticed that Wildebeest uses the ActivityPub URI as the Mastodon account number. Clients that expect an integer value are going to reject this, too.
I'm not sure there's an easy fix to the incompatibilities we're uncovering because the underlying data model conflates two namespaces: ActivityPub and Mastodon. In fact, several Mastodon-specific properties are hard-coded into ActivityPub (AP) typescript interfaces. There are also several Mastodon-required AP types missing from the code base (that's why polling doesn't work).
Digging even deeper, the AP type Link
extends APObject
, but the W3C spec explicit defines these types as disjoint because Link
is semantically distinct. From a performance standpoint, Link
(and by extension Mention
) are tiny compared to APObject
. It makes me wonder if the "Worker exceeded resources" errors are, in part, due to wasteful resource allocation stemming erroneous type inheritence
@xtuc - there's a lot of work left to do in order to assert that Wildebeest is Mastodon-compatible. Not sure how you want to proceed, and it would be helpful to get a better sense for Cloudflare's roadmap for this specific project.
from wildebeest.
I reached out to the Tapbots team to ask how they determine whether the server is Mastodon-compatible. Awaiting their response.
from wildebeest.
Have you tried again since? We did many changes to support other clients.
from wildebeest.
I was interested in this issue so I did a little bit of research on IceCubesApp. I noticed that the "instance not supported" message is no longer there, but the sign in button was still not active. I think this issue can be resolved by adding the "configuration" attribute to the /api/v1/instance
, as I was able to proceed further by adding that attribute in my repository (although the data was not correct, though haha).
However, I have not thoroughly investigated the internal yet, but it seems that the POST request to /api/v1/apps
is being sent as a form instead of JSON and the Content-Type is missing from the request header, causing it to not be handled correctly.
So, I think that fixing this issue may require both modifications in the wildebeest project and in each of the client apps.
from wildebeest.
Sorry for forgetting to report this. I just realized that IceCubesApp cannot handle the response from a POST request to /api/v1/apps
correctly because there is no id
attribute in the response.
from wildebeest.
I can confirm that IceCubes app remains incompatible. The problem seems to stem from an incomplete implementation of the GET /api/v2/instance
endpoint (as previously mentioned by @riaf). The app hangs while trying to retrieve the instance metadata, though it's not entirely clear which attributes it needs to proceed.
In any case, once that roadblock is cleared, I expect that we'll hit this other roadblock I filed under issue #253
from wildebeest.
Ivory for iOS by Tapbots is also incompatible. After authentication, when authorized permissions, a message is returned that it (Wildebeest) is not a Mastodon server.
from wildebeest.
Thanks for digging into it @DataDrivenMD .
They said they require post/statuses/toots to have numerical IDs. Wildebeest uses UUIDs.
The Mastodon documentation is clear about ID being String (cast from an integer but not guaranteed to be a number)
. It's perfectly valid for Wildebeest to use UUIDs, official Mastodon apps are able to use any format of ID (that said, this is not true for the notification endpoint on iOS which is a violation of their own spec).
Clients that expect an integer value are going to reject this, too.
Ivory also assumes ID are integers ,by the way, that's why it's breaking at the moment. The author is aware of the issue.
In fact, several Mastodon-specific properties are hard-coded into ActivityPub (AP) typescript interfaces.
Mastodon is layered on top of ActivityPub for simplicity. Specific Mastodon infos are handled by dedicated D1 tables. Feel free to open specific issues for confusion between Mastodon and ActivityPub in types.
There are also several Mastodon-required AP types missing from the code base (that's why polling doesn't work).
Wildebeest is fairly new and we have missing features. Feel free to open specific issues too so we can implement them.
the AP type Link extends APObject
I haven't checked in the spec but that sounds like a mistake. Should be relatively easy to fix I think.
It makes me wonder if the "Worker exceeded resources" errors are, in part, due to wasteful resource allocation stemming erroneous type inheritence
I don't think so but I haven't traced the worker to be sure. Wildebeest doesn't hold many APObject
in memory, so I expect the difference in structure size to be insignificant.
Edit: I wrote this comment before seeing all your PRs, thanks for the help!
from wildebeest.
@xtuc No worries. The asynchronous communication across several issues & PRs makes it a bit challenging to collaborate on a project of this complexity. I'm aware of the #Wildebeest Discourse channel within the CF Discourse server-- it would be helpful to know when you (or others on the CF team working on Wildebeest) will be logged into the CF Discourse channel to flesh out some of the lingering questions in a (slightly more) synchronous medium
from wildebeest.
@DataDrivenMD sure, feel free to reach out on Discord. My username should be sven
.
from wildebeest.
We've been fixing issues and adjusting the APIs to improve client compatibility. Elk and Mammoth are now working, and we fixed a few issues on Mastodon for iOS.
The docs have a detailed list now:
https://github.com/cloudflare/wildebeest/blob/main/docs/supported-clients.md
from wildebeest.
Related Issues (20)
- [Feature Request] support ActivityPub relays
- D1 migration fails when updating HOT 2
- Populate usage section in either nodeinfo or mastodon instance API (or both) HOT 4
- Troubleshooting steps are missing something HOT 2
- Migration step fails but shows as successful run in Action UI HOT 3
- Still having issues that Hashtags don't work HOT 8
- Client not found
- If server rule are deleted, rule numbers are not changed HOT 1
- The GitHub action "download Terraform state" failed whilst deploying HOT 2
- Wildbeeste Mastodon Failure
- "Sign in" button issue / serves JSON to the browser HOT 1
- URLs with single-letter second level domain are not enriched
- upon creating a new user I got an `ExceededCpu` error on the cloudflare pages functions log stream HOT 2
- Support for account migrations from Wildebeest to Mastodon HOT 1
- Enable discussions / publish roadmap? HOT 1
- Provide uninstall instructions
- bookmarks not supported HOT 1
- What to do after spinning up a wildebeest server? HOT 2
- Cannot delete wildebeest-consumer-{username} and wildebeest-do to starting over
- The timeline is unavailable HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wildebeest.