[Community Update] - State of Affairs & Team Update - 2023-06-19

https://lemmy.ml/post/1372165

[Community Update] - State of Affairs & Team Update - 2023-06-19 - Lemmy

We on the Mlem Team wanted to share some information regarding the progress on the development of Mlem, what we’re working on, and where we see the project on July 1. THE GOOD For the next build, we’re working on 5 major components: 1. Main Feed - both Large view mode and Compact view mode are undergoing tweaks to their appearance and refinements to functionality, adding a bit more spacing to compact mode so that clumsy/“fat-finger” tapping results in fewer mis-taps. 2. SWIPE-TO-VOTE! - Yes, we have brought this feature to the main feed and to comments! Swipe right to vote (up/down) and left to reply/save. These are the only configurations for now, but we plan to build in customization for these configurations in a later build. 3. Profile Tab - This one is taking a lot of work and time, as we want to get it right. We felt that Apollo’s profile page is a bit… blah, so we wanted t make something… prettier. Featuring both your profile picture and your banner image, the profile page will be information-rich and engaging. It will also feature a quick and simple way to sort between an Overview, Posts, Comments, and Saved items without diving into a context menu. 4. Community View/Browsing - Another biggie, and one which takes a lot of work. A dedicated screen for browsing, subscribing, and favoriting communities (Local or All federated) and sorting by Local, All, and Subscribed. This functions similarly to the “All Subreddits” screen in Apollo. 5. Accessibility! - ALL of these pages and tabs have been audited by our accessibility expert and will be 100% compatible with iOS’s Accessibility features VoiceOver and Screen Reader, so those with visual impairments can use Mlem without impediment! We’re proud to say that the next build of Mlem will be fully a11y compliant, as will be all future builds! Mlem is an app for everyone! Of course, in addition to these 5 major components, we’ve also been working on tons of bug fixes and performance improvements. THE BAD We (especially me) have been telling everyone that we’re aiming for July 1 for our 1.0 app launch. That was very silly to say, as Apple App Store review process is… nuts. To realistically hit that date, we’d have to submit the app now, and it’s pretty far from ready. So, suffice to say, that’s not going to happen. We are now making a revised projection that we will have a Gold Master (GM) for 1.0 ready for submission to the App Store on July 1, and that will go public whenever Apple decides to approve it. That could be days or weeks after that, and we will all just have to wait and see. During that time, development will continue, but further updates/releases will be much quicker after the initial approval. We (I) apologize for setting unrealistic expectations with the Mlem community in this regard. We (I) should have known better. However, we’ve taken this bad news and are moving forward with development nonetheless, and have a renewed fervor to get this app up to snuff for the rigorous (and somewhat bastardly) App Store review process. For now, releases will be limited to our 10k TestFlight beta testers for which we are extremely grateful! THE TEAM We continue to labor. Our team, which ballooned to about 20 devs and designers at one point, has constricted back to about 10 main contributors, with about 6-8 core contributors. Such is the nature of FOSS projects as people come and go as their lives permit. This is a completely volunteer project where people donate their free time. It’s not a job. We actively recruit when we have shortfalls in manpower or have project goals which require specialties our current team lacks. Remaining flexible is critical. The best thing about our team is that everyone seems to like each other, and works together very well. Working with this team is a pleasure! Our team currently has representatives from all over the world. From US cities like Seattle to Boston to NYC, places like rural Indiana, Canadian cities like Ottawa, to European countries like Scotland and Slovenia, we have team members contributing their time and talent 24/7 from around the globe to make Mlem the best app we can-- for you! THE FUTURE As mentioned, we plan to hit 1.0 GM by July 1 to submit to the App Store, with approval forthcoming afterward. Until then, we’re working as hard and fast as circumstances allow to bring as many 1.0 features and bug fixes we can to make that a reality. Obviously, that’s not going to be every feature you want, and not every bug squashed, but as many features as is realistic for a 1.0 app, and as many bugs squashed as we can. And, until then, the beta app will be missing some features as we work to build them, and will contain bugs. It’s just the nature of the beast. So, keep testing, stay excited, and check back here for updates and discussion about the Mlem App! Cheers! – The Mlem App Team - Mlem App Chat on Matrix [https://matrix.to/#/#mlemapp:matrix.org] - Melm App Recruitment Chat [https://matrix.to/#/#mlemapp-recruitment:matrix.org] - Mlem App on GitHub [https://github.com/buresdv/Mlem]

UPDATE TEXT

Hi, Mlem App Community!

We on the Mlem Team wanted to share some information regarding the progress on the development of Mlem, what we're working on, and where we see the project on July 1.

THE GOOD

For the next build, we're working on 5 major components:

  • Main Feed - We are refining both Large and Compact post views, improving their functionality and adding adding a bit more spacing to compact mode so that clumsy/"fat-finger" tapping results in fewer mis-taps.
  • SWIPE-TO-VOTE! - Yes, we have brought this feature to the main feed! Swipe right to vote (up/down) and left to reply/save. This is the only configuration right now, but we plan to add customization in a later build.
  • Profile Tab - This one is taking a lot of work and time, as we want to get it right. We felt that Apollo's profile page is a bit... blah, so we wanted to make something... prettier. Featuring both your profile picture and your banner image, the profile page will be information-rich and engaging. It will also feature a quick and simple way to sort between Overview, Posts, Comments, and Saved items without diving into a context menu.
  • Community View/Browsing - Another biggie, and one which takes a lot of work. We are adding a dedicated screen for browsing, subscribing, and favoriting communities (Local or All federated) and sorting by Local, All, and Subscribed. This functions similarly to the "All Subreddits" screen in Apollo.
  • Accessibility! - Our accessibility expert has audited ALL of these pages and tabs to make them 100% compatible with iOS's VoiceOver and Screen Reader Accessibility features, so those with visual impairments can use Mlem without impediment. We're proud to say that the next build of Mlem will be fully a11y compliant, as will be all future builds! Mlem is an app for everyone!
  • Of course, in addition to these 5 major components, we've also been working on tons of bug fixes and performance improvements.

    THE BAD

    We (especially me) have been telling everyone that we're aiming for July 1 for our 1.0 app launch. That was very silly to say, as Apple App Store review process is... nuts. To realistically hit that date, we'd have to submit the app now, and it's pretty far from ready. So, suffice to say, that's not going to happen. We are now making a revised projection that we will have a Gold Master (GM) for 1.0 ready for submission to the App Store on July 1 which will go public whenever Apple decides to approve it. That could be days or weeks after initial submission--we will all just have to wait and see. Development will continue during that time, but further updates/releases will be much quicker after the initial approval.

    We (I) apologize for setting unrealistic expectations with the Mlem community in this regard. We (I) should have known better. Nonetheless, we've taken this bad news and are moving forward with a renewed fervor to get this app up to snuff for the rigorous (and somewhat bastardly) App Store review process. Releases will be limited for now to our 10k TestFlight beta testers, for whom we are extremely grateful!

    THE TEAM

    We continue to labor. Our team, which ballooned to about 20 devs and designers at one point, has constricted back to about 10 main contributors, with about 6-8 core contributors. Such is the nature of FOSS projects as people come and go as their lives permit. This is a completely volunteer project where people donate their free time. It's not a job. We actively recruit when we have shortages in manpower or project goals that require specialties our current team lacks. Remaining flexible is critical. The best thing about our team is that everyone seems to like each other, and works together very well. Working with this team is a pleasure!

    Our team currently has representatives from all over the world. From the North American cities of Seattle, Boston, Ottowa, and NYC to rural Indiana and all the way to the Europe's Scotland and Slovenia, we have team members contributing their time and talent 24/7 from around the globe to make Mlem the best app we can-- for you!

    THE FUTURE

    As mentioned, we plan to hit 1.0 GM by July 1 to submit to the App Store, with approval forthcoming afterward. Until then we're working as hard and fast as circumstances allow to bring as many 1.0 features and bug fixes as we can to make that a reality. We obviously can't get to implementing every feature and squashing every bug, but we'll build in many features as is realistic for a 1.0 app and squash as many bugs as we can. Until then the beta app will be missing some features and harboring some bugs. It's just the nature of the beast.

    Keep testing, stay excited, and check back here for updates and discussion about the Mlem App!

    Cheers!

    -- The Mlem App Team

    You're invited to talk on Matrix

    You're invited to talk on Matrix

    Great update! Can’t wait to try it out. Any chance the beta will open up with more spots?
    Apple's TestFlight has a hard 10k limit. there's nothing we can do about that. sorry. We would if we could!
    Ahh good to know. Thanks!
    I’m so grateful for the amazing work you’re doing. Do you accept donations?
    Very hype, well done guys!
    Is anyone not seeing the post text? I just see the image of the app icon on Mlem.
    thats a current bug in the app, where posts with an image and text do not display the text. sorry. we're working on it. :(
    Well at least it’s a known issue, no worries!
    Will there be kbin support? Would be nice!
    not planned, and, unless kbin changes its API to be compatible with lemmy, that's likely never gonna happen.

    @BrooklynMan

    @ernest please see above in regards to app support

    Oof. Yeah, @ernest, please consider this. Not having a an app for kbin is a site killer.
    There is currently an app in development for kbin: Artemis
    🖤🇵🇷 Hariette 🌺🖤:verified: (@[email protected])

    Attached: 3 images #kbin + #lemmy app is coming along. Here's a preview of the upcoming beta. This is less than a week’s worth of work, so it’s only up from here 😉 Based on polls, looks like Artemis is winning for the name. Which is a great tribute to #ApolloApp 🙏 Stalk my work and suggest ideas in the app's Discord server (link in bio). #kmoon #kbinapp #ios #android #Threadiverse

    LGBTQIA+ Tech Mastodon
    WIP: Add REST API and OAuth2 Server

    **This PR is being split to make reviews easier** * #815 * #817 * #883 * #950 * more on their way... I've started working on a basic REST API for kbin and I wanted to put it out there for feedback - there are still lots of items to implement and designs to discuss. This likely should be split into several issues / a milestone rather than just being a single pull request ### OAuth API requests which access restricted data or modify state must be authenticated by Bearer token, retrieved via OAuth2 `authorization_code` or `client_credentials` flow: #### authorization_code 1. Client makes a request to `GET /authorize?response_type=code&client_id={{oauth_client_id}}&redirect_uri={{uri}}&scope={{scopes}}&state={{oauth_state}}` 2. User is directed to login if not already logged in. 3. Once logged in, user is directed to the consent page that explains what permissions the app is asking for. 4. Permission is checked: - If the user denies the app permission, the user will be redirected to the given redirect URI (if it is one of the URIs your client was initially created with) with an error message explaining that the user denied the request. - If the user permits the app to use those permissions, the user will be redirected with the following request: - `GET {{uri}}/?code={{code}}&state={{oauth_state}}` 5. The client will need to verify the state is correct, then use the code to make a form-data POST request to retrieve the token: ``` POST /token grant_type=authorization_code client_id={{oauth_client_id}} client_secret={{oauth_client_secret}} code={{code}} redirect_uri={{uri}} ``` 6. The server will verify the information and return json with the following data: ``` { "token_type": "Bearer", "expires_in": 3600, "access_token": "{{token}}", "refresh_token": "{{refresh_token}}" } ``` 7. The client can save the access token and use it to authenticate against the API to enjoy a higher rate limit and write/moderate/admin permissions depending on grants requested and user permissions available. 8. When the access token expires, the client may use the refresh token to perform a refresh_token grant_type to avoid making the user log back in. #### client_credentials 1. The client will use its id and secret to make a form-data POST request to retrieve a token authorizing it to use a bot account created when the client was created. ``` POST /token grant_type=client_credentials client_id={{oauth_client_id}} client_secret={{oauth_client_secret}} scope=scope1 scope2 scope3 (etc...) ``` 2. The server will verify the information and return json with the following data: ``` { "token_type": "Bearer", "expires_in": 3600, "access_token": "{{token}}" } ``` 3. The client can save the token and use it to access the API as a user distinguished as a bot account. ### Todo List: - [ ] Add general usage APIs - [ ] Entries/Thread API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve entries by id - [x] Retrieve a list of entries from the instance - [x] Filterable by language(s) - [x] Create an entry in a specific magazine - [x] Upload images with entries - [x] Update single entry by id - [x] Delete entry by id - [x] Upvote entry - [x] Downvote entry - [x] Boost entry - [x] Report entry - [x] Retrieve a list of entries from a specific magazine - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Retrieve a list of entries from subscribed magazines - [x] Retrieve a list of entries from moderated magazines - [ ] Entry Comments API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve comments of an entry - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Add a comment to an entry - [x] Add a comment reply to another comment - [x] Upload images with comments - [x] Retrieve a comment by id - [x] Update comment by id - [x] Delete comment by id - [x] Upvote comment (Favourite) - [x] Downvote comment - [x] Boost comment - [x] Report comment - [ ] Posts/Microblog API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Create post - [x] Upload images with posts - [x] Retrieve post by id - [x] Retrieve posts from magazine - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Update post by id - [x] Delete post by id - [x] Boost post - [x] Favourite post - [x] Report post - [ ] Post Comments API - [x] OpenApi specification - [ ] API test cases - [x] Rate limiting - [x] Create comment on post - [x] Create comment as reply - [x] Upload images with comments - [x] Retrieve post comment by id - [x] Retrieve comments from a post - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Update post comment by id - [x] Delete post comment by id - [x] Boost post comment - [x] Favourite post comment - [x] Report post comment - [ ] Magazine API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve details about a magazine (title, rules, description, isAdult, moderators, tags, badges, etc) - [x] By name as well - [x] Retrieve list of magazines - [x] Retrieve list of user's subscribed magazines - [x] Retrieve list of user's moderated magazines - [x] Retrieve list of user's blocked magazines - [x] Subscribe to magazine - [x] Unsubscribe from magazine - [x] Block magazine - [x] Unblock magazine - [x] Retrieve Mod Log - [ ] User API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve user details - [x] Follow user - [x] Unfollow user - [x] Retrieve users following a user - [x] Retrieve users followed by a user (if visible) - [x] Retrieve user's subscribed magazines - [x] Retrieve user's subscribed domains - [x] Block user - [x] Unblock user - [x] Retrieve current user's blocked users - [x] Edit current user's profile - [x] Edit current user's settings - [ ] Message API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve incoming messages - [x] Mark messages as read - [x] Mark messages as not read - [x] Message user - [x] Reply to message thread - [ ] Notification API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve incoming notifications - [x] Retrieve a count of unread notifications - [x] Mark a notification as read - [x] Mark a notification as not read - [x] Mark all notifications as read - [x] Delete a notification - [x] Delete all notifications - [ ] Domain API - [x] OpenAPI specification - [ ] API test cases - [x] Rate limiting - [x] Retrieve domain details - [x] Retrieve entries from domain - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Retrieve entry comments from domain - [x] Filterable by language(s) - [x] Filterable by preferred languages - [x] Subscribe to domain - [x] Unsubscribe from domain - [x] Block domain - [x] Unblock domain - [ ] Instance API - [x] OpenAPI specification - [ ] API test cases - [x] Retrieve instance About text - [x] Retrieve instance FAQ text - [x] Retrieve instance Contact text - [x] Retrieve instance Terms of Service text - [x] Retrieve instance Privacy policy text - [x] Retrieve global mod log - [ ] Add moderation APIs - [x] OpenAPI specification - [ ] API test cases - [x] Mark threads as adult - [x] Mark comments as adult - [x] Mark posts as adult - [x] Mark post comments as adult - [x] Pin threads - [x] Trash threads - [x] Restore threads - [x] Trash comments - [x] Restore comments - [x] Trash posts - [x] Restore posts - [x] Trash post comments - [x] Restore post comments - [x] Ban user from magazine - [x] Change language tag of threads - [x] Change language tag of comments - [x] Change language tag of posts - [x] Change language tag of post comments - [ ] Add magazine admin APIs - [x] OpenAPI specification - [ ] API test cases - [x] Create magazine - [x] Update magazine - [x] (Soft) Delete magazine - [x] Purge Entry - [x] Retrieve reports - [x] Reject reports - [x] Accept reports * I think reports should be accessible to all mods, not just the magazine creator - [x] Add moderator(s) - [x] Remove moderator(s) - [x] Create badge(s) - [x] Delete badge(s) * How do these actually work? Are these meant to be like flair on reddit? - [x] Add tag(s) - [x] Remove tag(s) - [x] Retrieve list of banned users - [x] Remove user from ban list - [x] Retrieve list of trashed entries * Also should be available to any mod - [x] Retrieve appearance settings - [x] Update appearance settings - [x] Retrieve magazine statistics - [ ] Admin APIs - [x] OpenAPI specification - [ ] API test cases - [x] Move entry to another magazine - [x] Ban/unban user from instance - [x] Retrieve a list of banned users - [x] Delete user from instance - [x] Purge user from instance - [x] Purge threads/posts/comments - [x] Verify user on instance - [x] Retrieve instance stats - [x] Retrieve instance settings - [x] Update instance settings - [x] Update instance About text - [x] Update instance FAQ text - [x] Update instance Contact text - [x] Update instance Terms of Service text - [x] Update instance Privacy policy text - [x] Retrieve list of defederated instances - [x] Defederate instance - [x] Refederate instance - [x] Retrieve oauth2 clients - [x] Retrieve oauth2 client usage stats - [x] Revoke oauth2 client keys - [ ] Instance Admin Configs - [x] Configurable rate limiting - [x] View API usage data - [ ] Authentication/Authorization pass - [x] OpenAPI specification - [x] API test cases - [x] Implement OAuth2 server for 3rd party application user auth - [x] Add a user consent page informing the user what permissions the app is requesting - [x] Add the minimum page needed to accept - [x] Add information about what roles grant what permissions in a decent manner - [x] Add translatable messages for the page's text and role grants - [x] Add optional client logo to consent page - [ ] Maybe? make it look nice (I am not a UI designer so I'll probably leave this for a future PR by someone else) - [x] Add API to create an API client - similar to Mastodon's [here](https://docs.joinmastodon.org/spec/oauth/) - [x] Add API to view oauth consents given to (an) app(s) - [x] Add API to revoke oauth consent from an app - [ ] Add page to revoke oauth consent from an app - [x] Add appropriate roles to existing APIs - [x] Flesh out what roles need to be separated and break them down by permissions - [x] Enable heavily rate limited anonymous read access to the API - should be enough for normal human usage of the API, but anything heavier should prefer a token Let me know what you think should be added/changed/improved about this list and about the code I've currently got - I'm learning PHP with this project so I expect there to be lots of improvements to be made

    Codeberg.org
    Really hoping that something can happen here, I've been exploring both Lemmy and kbin and I definitely have come to prefer kbin pretty thoroughly - but Mlem is great and I'd love to keep using it!
    Hoping to get the ability to long press and save pics\vids and search. Thanks for all the hard work and I’ll keep donating!
    we're not accepting donations, atm. we'll let you know when we do!
    Please make it available to ios15
    never gonna happen
    @BrooklynMan @snipeftw that’s unfortunate, a sign to upgrade my phone to table leveler lol
    (;´༎ຶД༎ຶ`)
    Thank you for the update! Keep up the Amazing work!
    Awesome update! I’m excited for the swipe feature, that’s one feature that I really like.
    You guys are killing it. Thank you!
    thank you for everything you do! I’ve been loving using the app daily
    Will there be text size options in the app? I’d like to be able to change the apps text size independently from my devices text size. Perhaps this is already in the works with the accessibility updates?

    eventually, yes. right now we're more focused on getting the app to work reliably and with all of it's primary functions first. Second functions such as independent text resizing in not a current priority, and you won't see it soon.

    Perhaps this is already in the works with the accessibility updates?

    People who have a low-vision need for larger text would have their entire system set to a larger text size, which Mlem would obey. Again, since independent text resizing is more of a personal choice rather than an accessibility need, it's not a current priority.

    Well done everyone!
    Can you maybe share the IPA, so that people who couldn't make it into the 10k from Testflight can sideload it?
    Awesome, thank you!
    No stress on the release date! You guys are doing your best to make this app something great and we all appreciate you for it.