1377 views
# 2024 NLnet Project Plan Payment rate: 750€ per week ([same as in 2021](https://codimd.tyhou12.xyz/YB88QJyuRNiE1hH_IGMPfg#)) Total amount currently: 49.75k€ (should be ~50k) ## 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 - Nutomic writes RFC describing in detail how to implement it ### Implement backend - Changes to database, federation, api - Write integration tests to ensure no private data leaks out - Done by: phiresky - Duration: 8 weeks - Amount: 6000€ ### Implement frontend - Workflow to approve private community followers (similar to approving new user registrations) - Done by: Sleepless one - 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 - Done by: sleepless one - Duration: 3 weeks - Amount: 2250€ ## 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 - Done by: phiresky - Duration: 4 weeks - Amount: 4000€ ## Improve Linking Federated Posts - (phiresky: I think the design of this first needs a design document / RFC for discussion to get good results for not just lemmy-ui but also apps on phones, alternate UIs etc.) - 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) - phiresky: Do we want rewrites or a new unambiguous URL syntax like for users / communities (!x@lemmy.ml / @x@lemmy.ml) - [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 - Done by: phiresky - Duration: 5 weeks - Amount: 3750€ ## 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 - Done by: phiresky - Duration: 4 weeks - Amount: 3000€ ## Use less Disk Space for Thumbnails - https://github.com/LemmyNet/lemmy/issues/4053 - Done by: ? - 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 - Could potentially let us remove `undetermined` language - https://github.com/pemistahl/lingua-rs - https://github.com/LemmyNet/lemmy/issues/2870 - Done by: SleeplessOne - Duration: 3 weeks - Amount: 2250€ ## Post tags - https://github.com/LemmyNet/lemmy/issues/317 - there's already a RFC draft i think, needs to be considered - 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) - Done by: phiresky (?) - Duration: 8 weeks - Amount: 6000€ ## Poll support - Implement necessary database and api functions - Make it federate. Mastodon does this in a completely nonsensical way, better to do it in our own way - Write API tests - https://github.com/LemmyNet/lemmy/issues/787 - Done by: SleeplessOne - Duration: 5 weeks - Amount: 3750€ ## 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 - https://github.com/LemmyNet/lemmy/issues/2951 - Done by: SleeplessOne - Duration: 4 weeks - Amount: 3000€ ## Moderation Improvements - Include instance blocks in mod log - https://github.com/LemmyNet/lemmy/issues/1947 - https://github.com/LemmyNet/lemmy/issues/2506 - Implement warnings, notify user when warned, possibly automatic ban after multiple warnings - https://github.com/LemmyNet/lemmy/issues/1424 - Attach unresolved report counts to comment and post payloads - https://github.com/LemmyNet/lemmy/issues/4163 - https://github.com/LemmyNet/lemmy/issues/4163 - Improve UX of /reports page - *Updated, need to adjust time/amount estimates* - Done by: SleeplessOne - Estimated time: 3 weeks - Payment amount: 2250€ ## 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 - Done by: SleeplessOne - Estimated time: 2 weeks - Payment amount: 1500€ ## Rework Image Endpoints - Seperate upload endpoints for each purpose, eg POST /api/v3/user/avatar, POST /api/v3/community/banner etc - Allows for more fine-grained controls like allowing avatar uploads while disabling post image uploads - Done by: SleeplessOne - Duration: 4 weeks - Amount: 3000€ ## Improvements to lemmy-ui-leptos - [Lemmy-ui-leptos](https://github.com/LemmyNet/lemmy-ui-leptos/) is our proposed alternative frontend using Rust and webassembly, eventually meant to supercede lemmy-ui. [See discussion about this here](https://github.com/LemmyNet/lemmy-ui-leptos/issues/15) - Get lemmy-ui-leptos basic read functionality working: Reading the front page, comment threads, profiles, and posts. - Done by: SleeplessOne - Estimated time: 5 weeks - Payment amount: 3750€ ## Hide Community - Already [implemented in the backend](https://github.com/LemmyNet/lemmy/pull/2055), but missing from lemmy-ui - POST /api/v3/community/hide - Done by: SleeplessOne - Estimated time: 2 weeks - Payment amount: 1500€ # 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 ## Migrate lemmy-ui to Next.js - Will work on this if decided (Still prefer leptos) - SleeplessOne - Too much effort for little benefit. - https://github.com/LemmyNet/lemmy-ui/pull/2287