Coder Social home page Coder Social logo

Comments (8)

apparentlymart avatar apparentlymart commented on April 28, 2024

I wonder if we can mitigate this problem during a transitional phase by adding some smarts to 0.4-compliant hubs so that they can recognize a requests from 0.3 clients and then behave in a 0.3-compatible manner when talking to those clients.

This compromise would free us to make more changes to the protocol to support the new features we want to add while putting the burden on hubs (which, as you say, there are relatively few of) to support the legacy clients for a certain period while we transition.

from pubsubhubbub.

evanp avatar evanp commented on April 28, 2024

Well, we've got about 50,000 hubs on the status.net cloud, probably some high number on other StatusNet sites.

I guess my feeling is that backward compatibility is relatively easy to keep around, if we're willing to make it a priority.

from pubsubhubbub.

apparentlymart avatar apparentlymart commented on April 28, 2024

Okay; you use of "clients" in your initial description mislead me into thinking that StatusNet was only a client, not also a hub.

So I retract my earlier suggestion, but I think we also need to decide carefully whether we'll achieve compatibility by making the new protocol wire-compatible with the old, or whether it's reasonable to specify a "compatibility mode" that allows old clients to send/receive old-style messages while allowing us to break compatibility in the new protocol where both participants are 0.4-capable.

I worry about this because the assumption that everything would be Atom/RSS led to several design decisions that are troublesome in an arbitrary content world, a couple of which I've already opened separate issues for. I'd rather reach a simple design that completely addresses notifications of arbitrary resources in a natural way that jives well with HTTP's basic principles than try to shoe-horn arbitrary content support into a protocol that was designed around only supporting Atom/RSS deltas.

from pubsubhubbub.

evanp avatar evanp commented on April 28, 2024

I just don't think that with literally hundreds of millions of feeds pubsubhubbub-enabled[1] we have the latitude to re-design this protocol from the ground up.

I think it's slightly harder, but not impossible, to support arbitrary data types without losing backwards compatibility. For example:

  • Hub Discovery. Subscribers should do a HEAD to get the Link headers. If they're absent, but the content-type is Atom or RSS, the client should do a GET to get the full body, check for Link headers again (what the hell, why not?), and failing that parse the resulting Atom or RSS for atom:link headers. Publishers should provide the Link headers for HEAD and GET, and also for Atom or RSS payloads should include the atom:link as a fallback.
  • Subscription Retain "sync" mode subscriptions, but disallow it for flows that require async (like authenticated subscription).
  • Publishing Retain the description of diffs for Atom and RSS.

[1] Just count Blogger and Tumblr, not to mention WordPress.com and Feedburner!

from pubsubhubbub.

apparentlymart avatar apparentlymart commented on April 28, 2024

That special case you mentioned under "Hub Discovery" ("assume it's Atom/RSS if there's no link header") is exactly the sort of thing I meant by a "compatibility mode": language in the spec that says "if some certain condition is true, act like 0.3, otherwise, do this new thing".

from pubsubhubbub.

voxpelli avatar voxpelli commented on April 28, 2024

Is there something in the 0.4 proposal that makes it impossible for a site to support both 0.3 and 0.4 at the same time? As long as 0.4 doesn't specifically prohibit 0.3 behavior then wouldn't a site be free to support both versions in parallel? And it's not something that 0.4 have to specifically allow for it to be possible? Or am I missing something?

Some of the interoperability challenges in OStatus could probably be handled in a new version of OStatus - the current 1.0 draft already indirectly says that it's PuSH 0.3 that should be used. An OStatus 1.1 could eg. define that OStatus sites needs to be able to talk both PuSH 0.3 and PuSH 0.4?

from pubsubhubbub.

evanp avatar evanp commented on April 28, 2024

@apparentlymart Actually, I meant that you should check the Content-Type and continue with discovery if there's no Link header.

But I think my main point is that we should include compatibility issues in the spec, rather than using rules of thumb or folk wisdom.

from pubsubhubbub.

evanp avatar evanp commented on April 28, 2024

@voxpelli I think it would be tricky, but it might be possible. Realistically, I don't think the improvements in 0.4 require incompatibility. There's no reason to buy the hassle of incompatibility.

from pubsubhubbub.

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.