Pixelfed client employing ethical anti design
Go to file
Nat 37689b5d9d
Add hiatus notice to README
2024-02-07 13:48:27 -08:00
assets Move all icons to the new framework 2023-01-02 10:13:38 -08:00
src Move all icons to the new framework 2023-01-02 10:13:38 -08:00
.gitignore Update gitignore to include Vim swap files 2021-02-28 11:31:46 -04:00
CODE_OF_CONDUCT.md Update meta documents 2021-08-10 12:49:59 -03:00
LICENSE Added meta documents 2021-02-26 13:35:34 -04:00
README.md Add hiatus notice to README 2024-02-07 13:48:27 -08:00
app.json Enable deep linking for authenticate.js 2021-04-19 11:55:17 -03:00
babel.config.js Upgrade to Expo SDK 45 2022-05-09 16:00:47 -07:00
package-lock.json Introduce icons.js 2023-01-01 16:52:07 -08:00
package.json Introduce icons.js 2023-01-01 16:52:07 -08:00

README.md

A screenshot of the timeline

Resin is the Pixelfed client you won't get addicted to. The primary goal of this project is to create a social-media interface that has no dark patterns and otherwise goes out of its way to prevent the user from getting addicted to it. In other words, this app practices ethical anti-design. The way it does this is by excluding dark patterns like infinite scrolling and putting obstacles in place to minimize the amount of time the person spends taking unhealthy actions that are otherwise unavoidable.

2024-02-07 Notice: indefinite hiatus

Hello! Thank you for your interest in Resin. This project means a lot to me--I learned a lot in the process of making it, and I got to meet a lot of cool people in the process.

I made this project way back when I was in high school as a part of a program they were doing to get students working on interesting projects outside of the classroom. As a result I had a horrifying amount of time to work on this project--time I did not have once I got to university, unfortunately.

In the time since I've become less interested in working with React Native in my personal projects. There were a number of structural decisions I made at the time that are currently eating away at any progress I've attempted to make in the years since (for example, this project is on a VERY old version of Expo, lots of the stuff I was using at the time has since been deprecated, not to mention it seems to octuple the build size for no good reason). I imagine continuing work on this project for me personally would mean taking the designs and reimplementing them with a totally new architecture. Maybe that'll happen someday, but my interest in building a Pixelfed client has waned a bit since. There's a few good ones on the market now.

Resin is lowercase d done. All the key features worked when I set it down, but the Pixelfed API was very unstable at that point, and I suspect things have changed quite a bit since. There was a really good reason nobody was trying to build a Pixelfed client, I realize now!

Eventually I expect to do a full post-mortem on this project to discuss how my thoughts on the idea of ethical anti design have changed over the years.

Goal

The goal of this project is to create a model for what social media could look like were it not designed to be addictive. The Fediverse, not being dependent on ad revenue, shouldn't need to capitalize on people's attention. Still, many of the apps we use to interact with the Fediverse use the same dark patterns developed by companies that do. While these dark patterns may seem like industry standards, we have no need to follow them. This project seeks to demonstrate the different ways to go about doing that.

Current Objectives

  • Beta release
  • Full 1.0 release
  • Sabbaticals
  • Support for Mastodon instances
  • Support for multiple accounts

Screenshots

A screenshot of the login interface A screenshot of the followers feed A screenshot of the comments page A screenshot of the moderation menu on a post A screenshot of the discover page A screenshot of the search interface

A screenshot of the profile page A screenshot of the notifications page A screenshot of the settings page A screenshot of the list of direct message conversations A screenshot of a conversation over direct messaging

Building

This project is written in React Native and built using Expo. Here are the steps to build and run it locally:

$ npm install -g expo-cli # You'll need this to work with Expo projects
$ git clone https://github.com/natjms/resin # Clone the repository
$ npm install # Install the dependencies
$ expo start # start the development server

Contributing

Bug testing

As Resin enters it's beta phase, we're looking for help from bug testers! Android folks can test it out without running a development server by downloading the Expo Go app and scanning the following QR code on your phone:

The QR code of the link to the v1.0-beta build of Resin

When you run into a bug, hop on over to the issues page and create a new issue. Make sure you fill out as much of the template as possible to help us determine how to best approach fixing the problem. If you're not comfortable with GitHub, you're welcome to contact the project maintainer, however bug tracking through GitHub Issues is greatly preferred and there's no guarantee we'll see your message if you try to send it through another channel.

A note on current limitations

Note that there are a number of issues with this app related to Pixelfed API endpoints that haven't been exposed yet. These are problems that cannot be fixed on our end, but are currently being worked on by the Pixelfed team. Until these endpoints are exposed, a number of features, including the likes of bookmarks, direct messages and updating your profile won't work and using these interfaces may have some unintended side effects. For more information and for a full list of these limitations, check this list of issues labeled wontfix.

A note for iOS folks

One of Resin's original goals was to create a Pixelfed client that could be used on both Android and iOS--something that's somewhat lacking among Fediverse clients. Unfortunately, due to our lacking access to Apple products, Resin hasn't formally been tested on iOS. Further, the Expo Go client no longer allows for iOS users to open projects via QR code in response to Apple's new security guidelines, thus complicating our beta distribution strategy. So, Resin's iOS support has been temporarily delayed until we can solve testing and distribution issues.

If you're savvy with Apple's developer tools, you can probably still build it yourself if you were hoping to get an early look. If you manage to do so, we'd love to hear from you.

Contributing code

We're always welcoming new contributors! To start contributing code, feel free to check out the issues tab. Easy issues are labeled good first issue, but don't let that limit you if you feel confident with React Native and JavaScript. If you see an issue hasn't been assigned to anyone, that means no one's working on it. Drop a reply saying you'd be interested in helping out and it's all yours.

Other ways to help out

Resin isn't officially set up to handle translations yet, but that'll be coming in the near future. There are many ways to help out with a project like this besides contributing code, from bug testing, to writing and more. Even then, a lot of the work is more on the philosophical side, in deconstructing the interfaces of apps like Instagram to best determine how to make Resin as nonaddictive as possible without making it painful to use.

If you're not sure where to get started, feel free to contact the project maintainer who would be more than happy to hear from you.