[Feature Request] Support Mastodon #712

Closed
rodneyrod opened this Issue Feb 17, 2017 · 26 comments

Comments

Projects
None yet
10 participants
@rodneyrod

Mastodon is a new server for interacting with StatusNet networks, but it doesn't seem to use a client connection method that is compatible with existing StatusNet clients. Support for this will have to be added.

https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/FAQ.md

@yvolk

This comment has been minimized.

Show comment
Hide comment
@yvolk

yvolk Mar 16, 2017

A long story of this incompatibility is here (without any end though...) andstatus/andstatus#419

yvolk commented Mar 16, 2017

A long story of this incompatibility is here (without any end though...) andstatus/andstatus#419

@Lertsenem

This comment has been minimized.

Show comment
Hide comment
@Lertsenem

Lertsenem Apr 3, 2017

If I understand well, Mastodon does not offer a StatusNet API by design. But it does offer a twitter-like API that Twidere could probably use with little adjustments.

If I understand well, Mastodon does not offer a StatusNet API by design. But it does offer a twitter-like API that Twidere could probably use with little adjustments.

@yvolk

This comment has been minimized.

Show comment
Hide comment
@yvolk

yvolk Apr 3, 2017

"StatusNet API" is the "Twitter compatible API". This is why I advised @Gargron to adopt it, for compatibility with existing clients.

yvolk commented Apr 3, 2017

"StatusNet API" is the "Twitter compatible API". This is why I advised @Gargron to adopt it, for compatibility with existing clients.

@Gargron

This comment has been minimized.

Show comment
Hide comment
@Gargron

Gargron Apr 3, 2017

The mastodon client API is only twitter-like in that all REST JSON APIs are like twitter's. The StatusNet API was bad, so I didn't copy it. We had good success creating apps for the Mastodon API, with lots of positive feedback from devs saying it's really straightforward and easy. It's all in the past anyway, don't see how discussing it is productive.

Gargron commented Apr 3, 2017

The mastodon client API is only twitter-like in that all REST JSON APIs are like twitter's. The StatusNet API was bad, so I didn't copy it. We had good success creating apps for the Mastodon API, with lots of positive feedback from devs saying it's really straightforward and easy. It's all in the past anyway, don't see how discussing it is productive.

@Lertsenem

This comment has been minimized.

Show comment
Hide comment
@Lertsenem

Lertsenem Apr 3, 2017

Nevermind the API, as a user the Twidere app is vastly more mature than what Tusky can offer now, and for quite some time I'm sure. Plus the multi account management is a killer feature for any user willing to migrate from Twitter to Mastodon.

@Gargron, I hear you when you say that the StatusNet API is bad, but would the cost of implementing it alongside your new API that high ? Would you reject PR aiming to do this or are you just not interested enough to do the work yourself ?

Separately, would the implementation of Mastodon API as an alternative in Twidere be doable ? Would it be hard ?

Nevermind the API, as a user the Twidere app is vastly more mature than what Tusky can offer now, and for quite some time I'm sure. Plus the multi account management is a killer feature for any user willing to migrate from Twitter to Mastodon.

@Gargron, I hear you when you say that the StatusNet API is bad, but would the cost of implementing it alongside your new API that high ? Would you reject PR aiming to do this or are you just not interested enough to do the work yourself ?

Separately, would the implementation of Mastodon API as an alternative in Twidere be doable ? Would it be hard ?

@yvolk

This comment has been minimized.

Show comment
Hide comment
@yvolk

yvolk Apr 3, 2017

@Gargron I understood your "disappearance" from our discussion at andstatus/andstatus#419 (that you started) as you had no arguments to support your decision on API and you lost interest to implement it yourself... ?!

yvolk commented Apr 3, 2017

@Gargron I understood your "disappearance" from our discussion at andstatus/andstatus#419 (that you started) as you had no arguments to support your decision on API and you lost interest to implement it yourself... ?!

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 3, 2017

Member

Twidere can add support for other social platforms, as long as basic requirements met (users/status objects with unique id). It won't too hard technically speaking, however it would be a rather huge work to do. I'm willing to accept PRs that add Mastodon support.

Member

mariotaku commented Apr 3, 2017

Twidere can add support for other social platforms, as long as basic requirements met (users/status objects with unique id). It won't too hard technically speaking, however it would be a rather huge work to do. I'm willing to accept PRs that add Mastodon support.

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 7, 2017

Member

So here's what we need to support Mastodon:

  • OAuth 2 authorization (easy, a header is enough)
  • Login flow
  • Mastodon specific account info
  • Mastodon objects (Posts, Users...)
  • Mastodon API (See Twitter API for example, just need to annotate some interfaces)
  • Utility classes converts Mastodon object to Twidere's ParcelableXXX object

Guys, since I have something else to do (iOS version and my work and my school works), could anyone help me doing tasks I've mentioned above? This can help this feature finished sooner.

Member

mariotaku commented Apr 7, 2017

So here's what we need to support Mastodon:

  • OAuth 2 authorization (easy, a header is enough)
  • Login flow
  • Mastodon specific account info
  • Mastodon objects (Posts, Users...)
  • Mastodon API (See Twitter API for example, just need to annotate some interfaces)
  • Utility classes converts Mastodon object to Twidere's ParcelableXXX object

Guys, since I have something else to do (iOS version and my work and my school works), could anyone help me doing tasks I've mentioned above? This can help this feature finished sooner.

@vanita5

This comment has been minimized.

Show comment
Hide comment
@vanita5

vanita5 Apr 7, 2017

Contributor

I'm currently working with the Mastodon API and I'd love to implement this, but I'm afraid I won't have time 'till next weekend.

If anyone else is interested in helping out in the meantime, you can take a look at my node library regarding the login flow and how to get an access token: https://github.com/vanita5/mastodon-api

Contributor

vanita5 commented Apr 7, 2017

I'm currently working with the Mastodon API and I'd love to implement this, but I'm afraid I won't have time 'till next weekend.

If anyone else is interested in helping out in the meantime, you can take a look at my node library regarding the login flow and how to get an access token: https://github.com/vanita5/mastodon-api

mariotaku added a commit that referenced this issue Apr 17, 2017

@mariotaku mariotaku modified the milestone: 3.6 Apr 17, 2017

mariotaku added a commit that referenced this issue Apr 18, 2017

finished login flow for Mastodon #712
added account framework support for Mastodon #712
@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 18, 2017

Member

I really should've give up any hope that anyone will help me with this feature. Is arguing about API more productive than implementing some features that can be done within 3 days?

Member

mariotaku commented Apr 18, 2017

I really should've give up any hope that anyone will help me with this feature. Is arguing about API more productive than implementing some features that can be done within 3 days?

@Lertsenem

This comment has been minimized.

Show comment
Hide comment
@Lertsenem

Lertsenem Apr 18, 2017

Sorry, I would help but unfortunately I don't speak neither Java nor Kotlin. :/

Sorry, I would help but unfortunately I don't speak neither Java nor Kotlin. :/

@cyphar

This comment has been minimized.

Show comment
Hide comment
@cyphar

cyphar Apr 19, 2017

Another thing to note that Twidere has above Tusky is that Twidere is actually available in FDroid. Tusky recently added proprietary requirements which made it non-free -- making it impossible to have a Mastodon app on your phone if you don't have the Play Store. I'm not a great Java developer (if I was I definitely would be helping out). 😢

cyphar commented Apr 19, 2017

Another thing to note that Twidere has above Tusky is that Twidere is actually available in FDroid. Tusky recently added proprietary requirements which made it non-free -- making it impossible to have a Mastodon app on your phone if you don't have the Play Store. I'm not a great Java developer (if I was I definitely would be helping out). 😢

mariotaku added a commit that referenced this issue Apr 19, 2017

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 21, 2017

Member

What still needs to be done:

  • Edit profile
  • Follow/block/mute
  • Set visibility for status
  • Ensure account color set (by adding toParcelable(AccountDetails) maybe?)
Member

mariotaku commented Apr 21, 2017

What still needs to be done:

  • Edit profile
  • Follow/block/mute
  • Set visibility for status
  • Ensure account color set (by adding toParcelable(AccountDetails) maybe?)
@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 22, 2017

Member

I guess this can be marked as done. Please test 3.5.23 version and help me to make sure every function is working properly.

Member

mariotaku commented Apr 22, 2017

I guess this can be marked as done. Please test 3.5.23 version and help me to make sure every function is working properly.

@Lertsenem

This comment has been minimized.

Show comment
Hide comment
@Lertsenem

Lertsenem Apr 22, 2017

Nice! Thank you so much!

Nice! Thank you so much!

@MightyPork

This comment has been minimized.

Show comment
Hide comment
@MightyPork

MightyPork Apr 22, 2017

Some bugs I found while testing it:

  • notifications and the like say 'tweet' instead of 'toot'
  • the reply box has a 140 char limit (click 'reply' on a toot) Apparently this is because it somehow posted my test toot also to twitter and the mention I was trying to reply to was a tweet. Really confusing (especially when both accounts have the same avatar)
  • "network public" timeline is not federated, but also local - so you get it twice
  • apostrophes and maybe other things show as HTML entities
  • getting lots of duplicate notifications (already dismissed)
  • timelines don't seem to want to update unless I pull down
  • the hashtag tab is always empty (maybe it shouldn't be added when the user creates a mastodon account?)
  • the DMs tab for some reason shows DMs from Twitter

MightyPork commented Apr 22, 2017

Some bugs I found while testing it:

  • notifications and the like say 'tweet' instead of 'toot'
  • the reply box has a 140 char limit (click 'reply' on a toot) Apparently this is because it somehow posted my test toot also to twitter and the mention I was trying to reply to was a tweet. Really confusing (especially when both accounts have the same avatar)
  • "network public" timeline is not federated, but also local - so you get it twice
  • apostrophes and maybe other things show as HTML entities
  • getting lots of duplicate notifications (already dismissed)
  • timelines don't seem to want to update unless I pull down
  • the hashtag tab is always empty (maybe it shouldn't be added when the user creates a mastodon account?)
  • the DMs tab for some reason shows DMs from Twitter
@Lertsenem

This comment has been minimized.

Show comment
Hide comment
@Lertsenem

Lertsenem Apr 22, 2017

I found some others (testing 3.5.25). Should we write them here for the time being, or should we open new issues right now?

  • not only apostrophes, but line breaks are not properly rendered too
  • replying to a toot does not use the user full handle (only the username, not the instance), so the mentions cannot work out of the box for external users
  • when you use both a twitter and a mastodon account, modifying the interactions tab to print only the mastodon account notifs makes it unable to show follows/favs/RTs (only mentions)

timelines don't seem to want to update unless I pull down

I couldn't reproduce this. Auto-refresh is working on my device.

I found some others (testing 3.5.25). Should we write them here for the time being, or should we open new issues right now?

  • not only apostrophes, but line breaks are not properly rendered too
  • replying to a toot does not use the user full handle (only the username, not the instance), so the mentions cannot work out of the box for external users
  • when you use both a twitter and a mastodon account, modifying the interactions tab to print only the mastodon account notifs makes it unable to show follows/favs/RTs (only mentions)

timelines don't seem to want to update unless I pull down

I couldn't reproduce this. Auto-refresh is working on my device.

@picsi

This comment has been minimized.

Show comment
Hide comment
@picsi

picsi Apr 23, 2017

@mariotaku can you let us know when you push this update to F-Droid? Thanks.

picsi commented Apr 23, 2017

@mariotaku can you let us know when you push this update to F-Droid? Thanks.

@Hund

This comment has been minimized.

Show comment
Hide comment
@Hund

Hund Apr 23, 2017

@picsi The guys over at F-Droid compiles the packages themselves.

Hund commented Apr 23, 2017

@picsi The guys over at F-Droid compiles the packages themselves.

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 23, 2017

Member

@Lertsenem

not only apostrophes, but line breaks are not properly rendered too

#779

replying to a toot does not use the user full handle (only the username, not the instance), so the mentions cannot work out of the box for external users

#776

Member

mariotaku commented Apr 23, 2017

@Lertsenem

not only apostrophes, but line breaks are not properly rendered too

#779

replying to a toot does not use the user full handle (only the username, not the instance), so the mentions cannot work out of the box for external users

#776

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 23, 2017

Member

@MightyPork

notifications and the like say 'tweet' instead of 'toot'

Yes, this is because Twidere still uses Twitter's writing style, it will make text needed to translate multiplied if we add text for platforms respectively

the reply box has a 140 char limit (click 'reply' on a toot)

You can set account color in 'Accounts' list.

"network public" timeline is not federated, but also local

#777

apostrophes and maybe other things show as HTML entities

#773

getting lots of duplicate notifications

#770

timelines don't seem to want to update unless I pull down

#753

the hashtag tab is always empty

OK, I'll consider making this tab not added by default when a user login to mastodon instances

the DMs tab for some reason shows DMs from Twitter

Mastodon doesn't have DM feature yet.

Member

mariotaku commented Apr 23, 2017

@MightyPork

notifications and the like say 'tweet' instead of 'toot'

Yes, this is because Twidere still uses Twitter's writing style, it will make text needed to translate multiplied if we add text for platforms respectively

the reply box has a 140 char limit (click 'reply' on a toot)

You can set account color in 'Accounts' list.

"network public" timeline is not federated, but also local

#777

apostrophes and maybe other things show as HTML entities

#773

getting lots of duplicate notifications

#770

timelines don't seem to want to update unless I pull down

#753

the hashtag tab is always empty

OK, I'll consider making this tab not added by default when a user login to mastodon instances

the DMs tab for some reason shows DMs from Twitter

Mastodon doesn't have DM feature yet.

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 23, 2017

Member

Please, open separate issues rather than commenting here to make sure they get tracked respectively

Member

mariotaku commented Apr 23, 2017

Please, open separate issues rather than commenting here to make sure they get tracked respectively

@cyphar

This comment has been minimized.

Show comment
Hide comment
@cyphar

cyphar Apr 23, 2017

@mariotaku

the DMs tab for some reason shows DMs from Twitter

Mastodon doesn't have DM feature yet.

OStatus (Mastodon) has different privacy preferences for messages, so "DMs" are supported, they're just not a separate communication method (you can send a message to someone that only you and they can read).

cyphar commented Apr 23, 2017

@mariotaku

the DMs tab for some reason shows DMs from Twitter

Mastodon doesn't have DM feature yet.

OStatus (Mastodon) has different privacy preferences for messages, so "DMs" are supported, they're just not a separate communication method (you can send a message to someone that only you and they can read).

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 23, 2017

Member

@cyphar 'Direct' statuses in Mastodon still should be treated as status, because they mixed in notifications timeline. I'll make this DM conversation style only when it have related API to do that.

Member

mariotaku commented Apr 23, 2017

@cyphar 'Direct' statuses in Mastodon still should be treated as status, because they mixed in notifications timeline. I'll make this DM conversation style only when it have related API to do that.

@cyphar

This comment has been minimized.

Show comment
Hide comment
@cyphar

cyphar Apr 23, 2017

Fair enough, I was just pointing out that in OStatus I don't believe there is any plan to have "DMs" because privacy options fulfill that need in a more generic way.

cyphar commented Apr 23, 2017

Fair enough, I was just pointing out that in OStatus I don't believe there is any plan to have "DMs" because privacy options fulfill that need in a more generic way.

@mariotaku

This comment has been minimized.

Show comment
Hide comment
@mariotaku

mariotaku Apr 23, 2017

Member

@cyphar Yeah, Mastodon's 'Direct' mentions are still not private enough since recipients may not respect this visibility.

Member

mariotaku commented Apr 23, 2017

@cyphar Yeah, Mastodon's 'Direct' mentions are still not private enough since recipients may not respect this visibility.

@mariotaku mariotaku closed this Apr 27, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment