Git Product home page Git Product logo

Comments (11)

DataDrivenMD avatar DataDrivenMD commented on September 24, 2024 3

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.

DataDrivenMD avatar DataDrivenMD commented on September 24, 2024 2

I reached out to the Tapbots team to ask how they determine whether the server is Mastodon-compatible. Awaiting their response.

from wildebeest.

xtuc avatar xtuc commented on September 24, 2024 1

Have you tried again since? We did many changes to support other clients.

from wildebeest.

riaf avatar riaf commented on September 24, 2024 1

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.

riaf avatar riaf commented on September 24, 2024

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.

DataDrivenMD avatar DataDrivenMD commented on September 24, 2024

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.

bretcarmichael avatar bretcarmichael commented on September 24, 2024

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.

xtuc avatar xtuc commented on September 24, 2024

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.

DataDrivenMD avatar DataDrivenMD commented on September 24, 2024

@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.

xtuc avatar xtuc commented on September 24, 2024

@DataDrivenMD sure, feel free to reach out on Discord. My username should be sven.

from wildebeest.

celso avatar celso commented on September 24, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.