Deprecation of following and notification elements

2,046 views
Skip to first unread message

Doug Williams

unread,
May 11, 2009, 5:18:30 PM5/11/09
to Twitter Development Talk, twitter-ap...@googlegroups.com
Issues 419 [1] and 474 [2] are very popular, in the painful kind of way. The defects report that methods returning user objects (see users/show for an example [3]) are returning incorrect or invalid values for the <following> element.

The fix for this inconsistency is in fact non trivial [4]. The problem lies within the interaction of the application logic, caching layer and database design. The persistent data behind <following> and <notification> values are separate from the user data in our architecture, so to keep these elements valid in cache alongside user objects adds a large amount of complexity.

Developers made it obvious that these data are a priority and we want to ensure they available. We also want to guarantee they are accurate and that performance remains good. Given the problems explained above, we are going to be making a number of changes to the API so that you can rely on the <following> or <notification> data.

Deprecations:
The following elements are to be removed from all returned user objects returned by the API:

1) <following>
2) <notifications>

This deprecation will not occur until we finish the following:


Additions:
To continue to provide access to this data we will be creating a new method:

Issue 532 [4] outlines the need to perform a mutual following lookup. We will use a method similar to that described in this issue to deliver <following>, <followedby>, <notification> and <pending> (in the case of protected users) data with a single call.
 
We realize this change will cause an increase in API usage for some applications. Therefore we are going to increase the default API rate limit across the board. This should help absorb some of the costs for applications attempting to do interesting things with social graph data. The number will be somewhere between 101 and 200 calls but we still need to look at growth projections and current hardware capacity before settling on a definite number.

We plan to begin work on this relatively soon with the fix coming in a few weeks. We do not have a planned ship date at this time but will communicate specifics with developers as they are determined. We anticipate the new number of calls and a documented schema for the new method will be made available before the new method ships. Please watch this thread and @twitterapi for the incremental details.

1. http://code.google.com/p/twitter-api/issues/detail?id=419
2. http://code.google.com/p/twitter-api/issues/detail?id=474
3. http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-users%C2%A0show
4. http://www.jamesshuggins.com/h/tek1/first_computer_bug_large.htm
5. http://code.google.com/p/twitter-api/issues/detail?id=532

Thanks,
Doug
--

Doug Williams
Twitter Platform Support
http://twitter.com/dougw

dean.j.robinson

unread,
May 11, 2009, 6:42:43 PM5/11/09
to Twitter Development Talk
I'll admit I'm a little disappointed that the info won't be part of
the user objects anymore (will have to rethink some of my planned
features... ie. won't be able to dynamically show/hide the dm button
next to tweets if it means I need an additional api call for each
user) instead relying on another api call, but I'm sure you guys have
your reasons.

Thanks for the advanced warning :)
> 5.http://code.google.com/p/twitter-api/issues/detail?id=532

Dave Mc

unread,
May 11, 2009, 7:38:42 PM5/11/09
to Twitter Development Talk
To be blunt this is very unsatisfactory. Once again you guys are not
being at all cognisant of the requirements of mobile Twitter client
apps. These face much bigger problems than just the rate limit. They
are constrained by physical limitations such as battery life, latency
and bandwidth. And they also have to take account of carrier data
charges. Every time something in your API requires an additional
method call you are making life difficult for us mobile app developers
who are trying to deliver a quality Twitter client to our users (who
are also your users!).

What annoys me too is that whenever a mobile-specific issue is raised
your stock response is "handle that in a proxy". Guys, that's just not
good enough. The World is going mobile and the continuing development
of your API needs to take account of this.

Very unhappy about this!
> 5.http://code.google.com/p/twitter-api/issues/detail?id=532

Doug Williams

unread,
May 11, 2009, 8:14:04 PM5/11/09
to twitter-deve...@googlegroups.com
David,
As with any solution there are compromises (the normal big three are time, resources, quality of service) and while this change may make your particular use of the API more difficult, it is not only important but also necessary given our architecture and growth. The API provides Twitter data in a format that is consistent with our strengths. It is up to the consuming application to make the data we freely provide useful in its independent context. This decoupling of data and application allows us to focus on data delivery while the developer attends to user experience. We aim to maximize performance for board array of use-cases and while at the same time minimizing operational and maintenance costs.

There are many very successful mobile applications that run a proxy to get around the resource/time trade-off that this deprecation creates. If you are mobile heavy, it is suggested you do the same. A proxy is highly recommended for iPhone apps because it insulates the application changes in the Twitter API with the App Store acceptance delay.

If anyone has an open source Twitter API proxy, please start another thread so mobile developers like David do not have to reinvent the wheel. In fact, there should be a FOSS project for mobile devs to rely on -- I've got a couple ideas to contribute. Again, please start a thread (and link back here) if you have code or interest in starting a proxy project.

Thanks,
Doug
--

Doug Williams
Twitter Platform Support
http://twitter.com/dougw




Abraham Williams

unread,
May 11, 2009, 8:27:01 PM5/11/09
to twitter-deve...@googlegroups.com
Something to keep in mind is that when switching from a computer to a mobile device you are losing power/features for mobility. You have to expect the same loss in functionality.
--
Abraham Williams | http://the.hackerconundrum.com
Hacker | http://abrah.am | http://twitter.com/abraham
Web608 | Community Evangelist | http://web608.org
This email is: [ ] blogable [x] ask first [ ] private.

Martin Dufort

unread,
May 11, 2009, 9:15:25 PM5/11/09
to Twitter Development Talk
Doug:

At least we are not expecting this bug to be fixed. So we will have to
go with a peripheral API call. I would have really love to get this in
the same stanza however because, as Dave said very *loudly*, that
makes life much easier for us mobile developers.

Now we will have to wrap this in a soft transactional layer to ensure
we get all the proper data for a user.
But if this is you final answer than we must go with that...

Martin - www.wherecloud.com
> Twitter Platform Supporthttp://twitter.com/dougw

Dave Mc

unread,
May 12, 2009, 5:25:16 AM5/12/09
to Twitter Development Talk
Doug,

I appreciate your taking the time to respond to my criticism. I
understand where you're coming from and if I was you I would probably
take the same view. I'm slow to go down the proxy route because this
would require server resources and, like most Twitter clients, my app
is non-commercial. Another issue with use of a proxy is that
Enterprise-managed mobile devices (e.g. BlackBerry devices that use a
BES) are often restricted to a white list of HTTP endpoints. It is
much easier to persuade an admin to allow twitter.com:80 than
proxy.dodgy.com:80.

Hey, here's a cheeky suggestion for Twitter: provide free VM-based
hosting for mobile proxies...

Regards,

Dave.
> Twitter Platform Supporthttp://twitter.com/dougw

Coderanger

unread,
May 16, 2009, 1:48:13 PM5/16/09
to Twitter Development Talk
Can I suggest that you add that this value is unused and will be
removed to the API documentation. I have spent quite a while writing
code which I found out wasnt working cos the values are random and
unreliable and then searched around to eventually find this post and
find out it is a problem that wont be fixed. Thanks.
Message has been deleted

Ed Finkler

unread,
May 27, 2009, 11:52:22 AM5/27/09
to Twitter Development Talk
Or, as I think slightly more clearly, perhaps this is an example of
the inconsistency discussed in the OP. Sorry for the noise if that's
the case.

--
Ed Finkler
http://funkatron.com
Twitter:@funkatron
AIM: funka7ron
ICQ: 3922133
XMPP:funk...@gmail.com


On May 27, 11:50 am, Ed Finkler <funkat...@gmail.com> wrote:
> Has this been implemented? I'm getting results that seem to indicate
> so.  Example:
>
> > curl "http://twitter.com/friendships/exists.json?user_a=spaztest&user_b=fun..."
> true
> > curl "http://twitter.com/friendships/exists.json?user_a=funkatron&user_b=sp..."
>
> true
>
> so those users are following each other. However, user info returned
> in an authenticated request shows following:0 (that's the integer
> "zero")
>
> > curl -k -u funkatron:######https://twitter.com/users/spaztest.json| prettyjson
>
> [...]
> "following":0,
> [...]
>
> > curl -k -u spaztest:perlsuckshttps://twitter.com/users/funkatron.json| prettyjson
>
> [...]
> "following":0,
> [...]
>
> I believe that "following" is supposed to indicate of the
> authenticating user is following the requested user, but even if it's
> the other way around, it seems wrong. Am I missing something, though?
>
> --
> Ed Finklerhttp://funkatron.com
> Twitter:@funkatron
> AIM: funka7ron
> ICQ: 3922133
> XMPP:funkat...@gmail.com
> > 5.http://code.google.com/p/twitter-api/issues/detail?id=532
Reply all
Reply to author
Forward
0 new messages