2066 views
# 2024 NLnet Project Plan Payment rate: 750€ per week Total amount currently: 48.750 (should be ~50k) Milestones are up for grabs, and assigned to whoever starts working on it. Payment goes to the person who implemented each milestone. If multiple people worked on a single milestone, the payment is split according to the amount of work done by each. Any work done after February 12 can be paid. [Most popular issues](https://github.com/LemmyNet/lemmy/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) Previous project plans: - [2021](https://codimd.tyhou12.xyz/YB88QJyuRNiE1hH_IGMPfg) - [2022](https://codimd.tyhou12.xyz/Rd2qRR7vRK-RTCZmVXW0QA) ## Private Communities - Works like existing communities, but new followers need to be approved manually by moderators - Community profiles including sidebar are public, but posts/comments inside private community can only be seen by approved followers - [RFC describes in detail how to implement it](https://github.com/LemmyNet/rfcs/blob/main/0005-private-communities.md) ### Backend - Changes to database, federation, api - Write integration tests to ensure no private data leaks out - Duration: 6 weeks - Amount: 4500€ ### Frontend - Workflow to approve private community followers (similar to approving new user registrations) - Duration: 2 weeks - Amount: 1500€ ## Activity sending improvements - Send activities in parallel - Better test coverage - https://github.com/LemmyNet/lemmy/issues/4529 - Duration: 4 weeks - Amount: 3000€ ## SQL paging and filtering for multiple types - For API endpoints like inbox, profile, modlog, reports, search, return a single sorted list of multiple object types, rather than multiple lists with different sort orders. - https://github.com/LemmyNet/lemmy/issues/2444 - Duration: 4 weeks - Amount: 3000€ ## Rework notifications - Rework API - https://github.com/LemmyNet/lemmy/issues/2441 - Duration: 2 weeks - Amount: 1500€ - Notifications about moderation actions - https://github.com/LemmyNet/lemmy/issues/4572 - Duration: 3 weeks - Amount: 2250€ - More user settings about which notifications to receive: - [New comments in post](https://github.com/LemmyNet/lemmy/issues/3069) - [New posts in community](https://github.com/LemmyNet/lemmy/issues/3904) - [Disable notifications for replies](https://github.com/LemmyNet/lemmy/issues/1883) - Duration: 4 weeks - Amount: 3000€ - [All relevant issues](https://github.com/LemmyNet/lemmy/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A%22area%3A+notifications%22) ## Create Plugin - Plugin system is already implemented as proof of concept (https://github.com/LemmyNet/lemmy/pull/4695) - Create a new plugin to ensure that it works - Could move existing functionality into plugin (eg disable downvotes, or slur filter) - Or implement new feature as plugin - Write documentation on how to develop and deploy plugins - Duration: 2 weeks - Amount: 1500€ ## Post scheduling - New db column `post.publish_date`, if it is not null the post is hidden from api - Scheduled task which regularly checks `publish_date`, if its in the past set to null and trigger federation, webmention - Post form on frontend and api gets new optional field `publish_date` - https://github.com/LemmyNet/lemmy/issues/234 - Duration: 2 week - Amount: 1500€ ## Improve Linking Federated Posts - Parse markdown for post bodies, comments etc and attempt to resolve all links using `ObjectId::dereference` - If dereference successful, replace link with one to local domain - Maybe add config option to dereference only via local db (less resource usage but wont work for yet unknown links), or also via network (more resource usage) - [This PR](https://github.com/LemmyNet/lemmy/pull/4035) has an example for rewriting markdown - Write test cases - https://github.com/LemmyNet/lemmy/issues/1540 - https://github.com/LemmyNet/lemmy/issues/2987 - Duration: 3 weeks - Amount: 2250€ ## Automatic Language Tagging - When receiving a new post/comment via api or federation which has no language/undefined, automatically analyze language from text - https://github.com/pemistahl/lingua-rs - https://github.com/LemmyNet/lemmy/issues/2870 - Duration: 2 week - Amount: 1500€ ## Poll support - Implement necessary database and api functions - Make it federate - Write API tests - https://github.com/LemmyNet/lemmy/issues/787 - Duration: 3 weeks - Amount: 2250€ ## Moderation Improvements - Include instance blocks in mod log - https://github.com/LemmyNet/lemmy/issues/2506 - Duration: 1 week - Amount: 750€ - Implement warnings, notify user when warned - https://github.com/LemmyNet/lemmy/issues/1424 - Duration: 3 weeks - Amount: 2250€ - Attach unresolved report counts to comment and post payloads - https://github.com/LemmyNet/lemmy/issues/4163 - Duration: 2 weeks - Amount: 1500€ ## Rework API Endpoints (Api v4) - Separate endpoints for image upload (eg POST /api/v3/account/avatar, POST /api/v3/community/icon) - https://github.com/LemmyNet/lemmy/issues/1772 - Duration: 4 weeks - Amount: 3000€ - Move taglines and emojis out of `/api/v3/site`, into separate paged endpoint - https://github.com/LemmyNet/lemmy/issues/4577 - Duration: 2 weeks - Amount: 1500 - Reduce amount of redundant data returned - https://github.com/LemmyNet/lemmy/issues/2957 - Duration: 2 weeks - Amount: 1500 - Meta issue: https://github.com/LemmyNet/lemmy/issues/4428 ## Multi-communities - Most upvoted issue - Only local (no federation) for simplicity - https://github.com/LemmyNet/lemmy/issues/818 - Duration: 4 weeks - Amount: 3000€ ## Ease discovery of federated communities - Each instance can serve a collection of all local communities via Activitypub - Fetch this together with the site actor and store communities in db - Should only perform minimal fetch of discovered communities (no mod list, recent posts, stickied posts). otherwise local db gets too bloated - https://github.com/LemmyNet/lemmy/issues/2951 - Duration: 4 weeks - Amount: 3000€ ## Post tags - https://github.com/LemmyNet/lemmy/issues/317 - https://github.com/LemmyNet/rfcs/blob/main/0004-post-tags.md - should be simple at first extensible in the future for other kinds of tags (tags that are instance-local vs federated, foreign tags from a different instance to e.g. add context) - Duration: 6 weeks - Amount: 4500€ # Potential extra milestones ## User-to-User vote totals - https://github.com/LemmyNet/lemmy/issues/2370 ## Make lemmy an identity provider for secure App login - Implement Oauth 2 Identity Provider standard - This is the opposite of https://github.com/LemmyNet/lemmy/pull/4238 which allows login to lemmy with third party providers - Currently apps log in by getting the password - More secure approach is to let apps be registered with a client id in the server and log in via a token exchange (oauth2) - Password login should be deprecated (?) - Done by: phiresky - I've looked at the spec before but unfortunately it's very complex :/ ## Implement official account migration - Similar to mastodon: The should be an official method of migrating to a new instance - When this happens, the old user profile should show a link to the new one - Ideally this should be possible even if the home instance is gone - users already have individual private keys, a federated migrate event could could be accepted based on being signed by the correct user key regardless of where it comes from - Done by: phiresky - Too much effort for little benefit ## Work through lemmy-ui issue tracker - Close issues which are outdated, duplicates, out of scope etc - Fix minor issues that are easy to implement - Apply correct labels - Should close at least 200 out of 500 issues - Necessary to keep the issue tracker usable - Estimated time: 2 weeks - Payment amount: 1500€ ## Hide Community - Already [implemented in the backend](https://github.com/LemmyNet/lemmy/pull/2055), but missing from lemmy-ui - POST /api/v3/community/hide - Estimated time: 2 weeks - Payment amount: 1500€ ## Create URL scheme or handlers for cross-lemmy links - If you encounter an arbitrary lemmy it should be very easy to get to your preferred App or home instance via the link - No manual copy-pasting or link modifying or searching should be needed - The thing that https://lemmyverse.link implements a workaround for - Look at how other software does it: Mastodon and Matrix/Element - Something similar is done in non-fedi software to open apps, maybe look how those solve it as well (Slack, Discord, Netdata, Zoom, ...) - Probably a link with scheme `lemmy:` so that apps/websites can configure a handler - Can take inspiration from https://fedilinks.org/spec/ - https://github.com/LemmyNet/lemmy/issues/4391 - Duration: 4 weeks - Amount: 3000€ ## Improve URL structure Improve URLs to make them more readable and useful and potentially better for search engines: - Add post title to URL (accept any but redirect to canonical) - Add canonical URL to posts and comments - Add post to hierarchy of comment url (/post/x/comments/y? to discuss) - Implement full backwards compatibility (permanent redirects) - Would be useful for cross-instance linking: make URLs predictable (if you know of a post and an instance you can deterministically say what the link to that post on that instance will be - like resolve_object but without an extra API call) - https://github.com/LemmyNet/lemmy/issues/875 - Duration: 4 weeks - Amount: 4000€