|
1 | | -# Bluesky Social App |
| 1 | +# deer.social |
2 | 2 |
|
3 | | -Welcome friends! This is the codebase for the Bluesky Social app. |
| 3 | +This is a soft fork of [social app](https://github.com/bluesky-social/social-app). |
4 | 4 |
|
5 | 5 | Get the app itself: |
6 | 6 |
|
7 | | -- **Web: [bsky.app](https://bsky.app)** |
8 | | -- **iOS: [App Store](https://apps.apple.com/us/app/bluesky-social/id6444370199)** |
9 | | -- **Android: [Play Store](https://play.google.com/store/apps/details?id=xyz.blueskyweb.app)** |
| 7 | +- **Web: [deer.social](https://deer.social)** |
| 8 | +- ~**iOS: [App Store]()**~ WIP |
| 9 | +- ~**Android: [Play Store]()**~ WIP |
10 | 10 |
|
11 | | -## Development Resources |
| 11 | +## Features Today |
| 12 | + |
| 13 | +- toggle to disable go.bsky.app link proxying for analytics |
| 14 | +- toggle to disable default app labeler |
| 15 | +- toggle to disable falling back to discover feed in the following feed |
| 16 | +- see through quote blocks and detatchments (nuclear block wrt quotes) |
| 17 | + - <img src="https://github.com/user-attachments/assets/e5084afd-b17e-43a7-9622-f6d7f19f53ca" width="300px" /> |
| 18 | +- enable features gates |
| 19 | +- configure the location used to determine regional labelers |
| 20 | +- entirely ignore `!no-unauthenticated` labels, even for logged out users |
| 21 | + |
| 22 | +### WIP/Planned |
| 23 | + |
| 24 | +- rewrite shared URLs to reference deer.social |
| 25 | +- opengraph support for sharing posts and profiles |
| 26 | +- selecting custom appviews |
| 27 | +- seeing past blocks in post threads (nuclear block for reply chains) |
| 28 | + |
| 29 | +## Philosophy |
| 30 | + |
| 31 | +- by default, deer.social should very similar to the official client |
| 32 | + - color and branding are different to distinguish from social-app |
| 33 | + - `!no-unauthenticated` behavior is different |
| 34 | + - analytics are not present |
| 35 | +- opinionated features behind toggles |
| 36 | +- focus on high impact, low diff size patches |
| 37 | + - specifically patches that won't require large conflicts to be resolved |
| 38 | +- focus on power users (but all users are welome!) |
| 39 | +- enable things that are possible but annoying today **without** egging on antisocial behavior |
12 | 40 |
|
13 | | -This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also open source, but in [a different git repository](https://github.com/bluesky-social/atproto). |
| 41 | +## Development Resources |
14 | 42 |
|
15 | | -There is a small amount of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application. |
| 43 | +This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also open source, but in [a different git repository](https://github.com/bluesky-social/atproto). It is regularly rebased |
| 44 | +on top of new releases of [social-app](https://github.com/bluesky-social/social-app). |
16 | 45 |
|
17 | | -The [Build Instructions](./docs/build.md) are a good place to get started with the app itself. |
| 46 | +There is vestigial Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application in the social app deployment. However, it is not used in current |
| 47 | +deer.social deployments. |
| 48 | +For deer, the intended deployment is with a websever than can serve static files, and reroute to `index.html` as needed. Today [deer.social](https://deer.social) is hosted on [cloudflare pages](https://pages.cloudflare.com/). |
18 | 49 |
|
19 | | -The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't *need* to understand AT Protocol to work with this application, but it can help. Learn more at: |
| 50 | +The [Build Instructions](./docs/build.md) are a good place to get started with the app itself. If you use nix (and especially direnv) then `flake.nix` will get you a working environment for |
| 51 | +the web version of the app. |
20 | 52 |
|
21 | | -- [Overview and Guides](https://atproto.com/guides/overview) |
22 | | -- [Github Discussions](https://github.com/bluesky-social/atproto/discussions) 👈 Great place to ask questions |
23 | | -- [Protocol Specifications](https://atproto.com/specs/atp) |
24 | | -- [Blogpost on self-authenticating data structures](https://bsky.social/about/blog/3-6-2022-a-self-authenticating-social-protocol) |
| 53 | +The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't *need* to understand AT Protocol to work with this application, but it can help. |
| 54 | +You may wish to reference [resources linked in social-app](https://github.com/bluesky-social/social-app#development-resources). However, please don't harass the Bluesky team with issues or questions |
| 55 | +pertaining to deer.social. |
25 | 56 |
|
26 | | -The Bluesky Social application encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`. |
| 57 | +Deer is a fork of the official client, social-app. It encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`. |
27 | 58 |
|
28 | 59 | ## Contributions |
29 | 60 |
|
30 | | -> While we do accept contributions, we prioritize high quality issues and pull requests. Adhering to the below guidelines will ensure a more timely review. |
| 61 | +> deer.social is a community fork, and we'd love to merge your PR! |
| 62 | +
|
| 63 | +As a rule of thumb, the best features for deer.social are ones that have a disproportionately positive impact on the user experience compared to the matinance overhead. |
| 64 | +Unlike some open source projects, since deer.social is a soft fork, any features (patches) we add on top of upstream social-app need to be maintained. For example, |
| 65 | +a change to the way posts are composed may be very invasive, touching lots of code across the codebase. If upstream refactors this component, we will need to rewrite this |
| 66 | +feature to be compatible or drop it from the client. |
31 | 67 |
|
32 | | -**Rules:** |
| 68 | +For this reason, bias towards features that change a relatively small amount of code that is present upstream. |
33 | 69 |
|
34 | | -- We may not respond to your issue or PR. |
35 | | -- We may close an issue or PR without much feedback. |
36 | | -- We may lock discussions or contributions if our attention is getting DDOSed. |
37 | | -- We're not going to provide support for build issues. |
| 70 | +Without an overriding motivation, opinionated features should exist behind a toggle that is not enabled by default. This allows deer.social to cater to as many users as possible. |
38 | 71 |
|
39 | 72 | **Guidelines:** |
40 | 73 |
|
41 | 74 | - Check for existing issues before filing a new one please. |
42 | 75 | - Open an issue and give some time for discussion before submitting a PR. |
| 76 | + - This isn't strictly necessary, but I'd love to give my thoughts and scope out your willingness to maintain the feature before you write it. |
43 | 77 | - Stay away from PRs like... |
44 | 78 | - Changing "Post" to "Skeet." |
45 | 79 | - Refactoring the codebase, e.g., to replace MobX with Redux or something. |
46 | | - - Adding entirely new features without prior discussion. |
| 80 | +- Include a new toggle and preference for your feature. |
47 | 81 |
|
48 | | -Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for! |
| 82 | +If we don't merge your PR for whatever reason, you are welcome to fork and/or self host: |
49 | 83 |
|
50 | 84 | ## Forking guidelines |
51 | 85 |
|
52 | | -You have our blessing 🪄✨ to fork this application! However, it's very important to be clear to users when you're giving them a fork. |
| 86 | +Just like social-app, you have our blessing 🪄✨ to fork this application! However, it's very important to be clear to users when you're giving them a fork. |
53 | 87 |
|
54 | 88 | Please be sure to: |
55 | 89 |
|
56 | | -- Change all branding in the repository and UI to clearly differentiate from Bluesky. |
57 | | -- Change any support links (feedback, email, terms of service, etc) to your own systems. |
58 | | -- Replace any analytics or error-collection systems with your own so we don't get super confused. |
| 90 | +- Change all branding in the repository and UI to clearly differentiate from deer.social. |
| 91 | +- Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems. |
59 | 92 |
|
60 | | -## Security disclosures |
| 93 | +## Self hosting & personal builds |
61 | 94 |
|
62 | | -If you discover any security issues, please send an email to security@bsky.app. The email is automatically CCed to the entire team and we'll respond promptly. |
| 95 | +Self hosting is great! It is our intention that deer.social is easy to self host and build on your own. If you host your own instance of deer.social, or make your own builds, please |
| 96 | +make some level of effort to clarify that it is not an "official" build or instance. This can be in the form of a different domain or branding, but can also be as simple as not |
| 97 | +advertising your hosted instance or builds as "official" releases. |
63 | 98 |
|
64 | | -## Are you a developer interested in building on atproto? |
| 99 | +## Security disclosures |
65 | 100 |
|
66 | | -Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party integration can be as seamless as first-party through custom feeds, federated services, clients, and more. |
| 101 | +If you discover any security issues, please send an email to aviva@rubenfamily.com. |
| 102 | +If the issue pertains to infastructure, code, or systems outside the scope of deer.social, please refer to the |
| 103 | +[disclosure guidelines on social-app](https://github.com/bluesky-social/social-app#security-disclosures) if it is hosted by Bluesky PBC. Otherwise, reference the |
| 104 | +security policy of that system as applicable <3 |
67 | 105 |
|
68 | 106 | ## License (MIT) |
69 | 107 |
|
70 | 108 | See [./LICENSE](./LICENSE) for the full license. |
71 | | - |
72 | | -## P.S. |
73 | | - |
74 | | -We ❤️ you and all of the ways you support us. Thank you for making Bluesky a great place! |
|
0 commit comments