-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
42 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,37 @@ | ||
==== CONTRIBUTION GUIDELINES ==== | ||
|
||
Hello! | ||
|
||
If you're reading this, you probably want to contribute to Mlem. Welcome! We're happy to have you on board. | ||
If you're reading this, you probably want to contribute to Mlem. Welcome! We're happy to have you on board. You may wish to join our [Matrix room](https://matrix.to/#/#mlemapp:matrix.org) if you haven't already. | ||
|
||
## Prerequesites | ||
|
||
This project makes use of [SwiftLint](https://github.com/realm/SwiftLint#swiftlint). This runs as part of the Xcode build phases. | ||
|
||
In order to benefit please ensure you have [Homebrew](https://brew.sh) installed on your system and then run the following command to install Swiftlint: | ||
|
||
`brew install swiftlint` | ||
|
||
## Getting started | ||
|
||
To avoid having multiple in-flight tasks working on the same part of the codebase, we have a set procedure for claiming and performing work. If you don't follow it, your PR will *probably* be rejected (unless it's really *that* good). | ||
|
||
1. Go to our project board and find something in the "todo" section | ||
2. Comment that you want to handle that task | ||
3. Wait for the task to be assigned to you! This is very important for avoiding merge conflicts. | ||
4. Fork the repository and develop the change on your fork | ||
5. Open a PR for the task. The description should clearly reference the issue that you are addressing, and your PR should be able to merge with no conflicts--if the master branch changes before your PR is merged, you should either rebase or merge so that your fork can be merged cleanly. | ||
1. Go to our [project board](https://github.com/orgs/mlemgroup/projects/1/views/1). | ||
2. Find an unassigned issue under the "Todo" section that you'd like to work on. | ||
3. Comment that you would like the issue to be assigned to you. | ||
4. Wait for the task to be assigned to you! This is very important for avoiding merge conflicts. | ||
5. Fork the repository (if you haven't already) and develop the changes on your fork. It is important that you create your development branch using the upstream `dev` branch as the source, not the `master` branch. | ||
6. Open a Pull Request for your changes. Your PR should be able to merge with no conflicts - if conflicting changes are made to the `dev` branch before your PR is merged, you will have to resolve the conflicts or rebase your changes. | ||
|
||
In addition, please develop according to the following principles: | ||
- One named View struct per file. The name of the file should describe the view (e.g., "Large Post View,"), and the name of the struct should be match the name of the file but with spaces removed (e.g., "LargePostView"). Every file containing a View struct must end in "View." | ||
- All View-specific functions should live in an extension to that view, located in the same directory as the view. This file should be named "<View Name> Logic" (e.g., "Large Post View Logic") | ||
- Within reason, any complex of views that renders a single component of a larger view should be placed in a descriptively named let, func, or @ViewBuilder var beneath the body of the View. This keeps pyramids from piling up and makes our accessibility expert's work easier. | ||
- If you can reuse code, do. Prefer abstracting common components to a generic struct and common logic to a generic function. | ||
## Merge Protocol | ||
|
||
When your code is approved, it can be merged into the `dev` branch by a member of the development team. If you need to tinker with your changes post-approval, please make a comment that you are doing so. PRs that sit approved for more than 12 hours with no input from the dev may be merged if they are blocking other work. | ||
|
||
==== MERGE PROTOCOL ==== | ||
## Conventions | ||
|
||
Please develop according to the following principles: | ||
- One View per file. A file containing a View struct must end in "View". We're yet to decide on an official naming scheme for files - feel free to offer your thoughts [here](https://github.com/mlemgroup/mlem/issues/55). | ||
- Within reason, any complex of views that renders a single component of a larger view should be placed in a descriptively named function, computed property or `@ViewBuilder` variable beneath the body of the View. This keeps pyramids from piling up and makes our accessibility experts' work easier. | ||
- If you can reuse code, do. Prefer abstracting common components to a generic struct and common logic to a generic function. | ||
|
||
We follow the principle that devs should merge their own code. This ensures that nothing enters the codebase without it being completely ready in both the eyes of the reviewers and the developer, thereby cutting down on bad code in master and tack-on PRs. | ||
## Testing | ||
|
||
When your code is approved, if you have permission to do so, you are responsible for clicking that beautiful "squash and merge." If you need to tinker with it post-approval, please make a comment that you are doing so. PRs that sit approved for more than 12 hours with no input from the dev may be merged if they are blocking other work. | ||
We operate a Lemmy Instance at https://test-mlem.jo.wtf/ which you may use for testing purposes. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,83 +1,33 @@ | ||
# Mlem | ||
[![Download on TestFlight](https://img.shields.io/badge/Download-TestFlight-blue)](https://testflight.apple.com/join/MelFP11Y) | ||
# Mlem - the iOS Lemmy Client | ||
|
||
The Lemmy client for iOS. | ||
Mlem is a client for [Lemmy](https://join-lemmy.org) - a Reddit-esque, open-source link aggregator. With Mlem, you can effortlessly participate in the conversation across all Lemmy servers. | ||
|
||
## Want to contribute? | ||
Read our [contribution guide](./CONTRIBUTING.md) to get started! | ||
|
||
## Want to chat about Mlem? | ||
Join our [Matrix room](https://matrix.to/#/#mlemapp:matrix.org). | ||
|
||
## What is Mlem? | ||
Mlem is a client for [Lemmy](https://join-lemmy.org), a Reddit-esque, open-source link aggregator. With Mlem, you can effortlessly participate in the conversation across all Lemmy servers. | ||
[You can download Mlem here.](https://apps.apple.com/gb/app/mlem-for-lemmy/id6450543782) Mlem requires iOS 16 or later. | ||
|
||
You can discuss and ask questions about Mlem at the [community on lemmy.ml](https://lemmy.ml/c/mlemapp). | ||
If you'd like to participate in the beta version of Mlem, you can [join our Testflight program](https://testflight.apple.com/join/MelFP11Y). | ||
|
||
## Why Use Mlem? | ||
|
||
Unlike many other clients, Mlem is designed to be easy to use first. Its UI is beautiful and intuitive, and it just gets out of your way so you can enjoy participating in the communities that matter to you the most. | ||
|
||
And that's not all; Mlem is also extensively optimized and performant, which means it will never be a performance and battery hog. You can scroll all day and night long! | ||
|
||
## See Mlem | ||
|
||
**Subscribed and Favorites Community List** | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/665c4f14-7997-49ef-aed8-efa09fa19646)" width="40%"> | ||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/4cda8166-4898-4bc6-8e56-8caeaf9fe53f)" width="40%"> | ||
|
||
**Beautiful Post Previews** | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/8fc48e43-2838-4465-a4e7-059746cdb26f" width="40%"> | ||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/123ec33c-c223-468a-aecb-dcc9ac2b6231" width="40%"> | ||
|
||
**Compact Post Previews** | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/8120cc31-39b2-47e6-b3c5-2f4020a98b7a" width="40%"> | ||
|
||
**Follow the Discussion** | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/195d618d-0cbf-4169-b583-e32175f51561" width="40%"> | ||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/64e553f4-979a-43ed-9f26-17849e8ce106" width="40%"> | ||
|
||
**Take Part in the Conversation** | ||
## Screenshots | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/e939126e-eb94-456c-98b4-11f71d19e544" width="40%"> | ||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/e9c134db-9682-4f7e-a57e-b07de4789731" width="40%"> | ||
<img src="https://github.com/mlemgroup/mlem/assets/78750526/6a9d2ea6-e874-4621-a3f6-9ad72caacba9" width="30%"> | ||
<img src="https://github.com/mlemgroup/mlem/assets/78750526/fda618b4-7d42-43e1-9bfa-1a5d7b7145c2" width="30%"> | ||
<img src="https://github.com/mlemgroup/mlem/assets/78750526/30478f39-169d-47ea-b983-a453af2b0959" width="30%"> | ||
|
||
**Post Your Experiences** | ||
|
||
<img src="https://files.catbox.moe/9xg13j.png" width="40%"> | ||
|
||
**Find Your Hobbies** | ||
|
||
<img src="https://files.catbox.moe/kmtqxm.png" width="40%"> | ||
|
||
**Infinitely Customizable, Dark Mode Included!** | ||
|
||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/c34d6036-1eb7-4397-84a7-dcfd971dc692" width="40%"> | ||
<img src="https://github.com/WestonHanners/Mlem/assets/1000311/a862dbfb-fd70-493b-8a07-f3bd6cf28f70" width="40%"> | ||
|
||
## Requirements | ||
|
||
Mlem supports any iPhone running iOS 16 and later. | ||
|
||
## Roadmap | ||
|
||
As of now, Mlem is still in beta. While it already has many core features, there is still a lot to do. Follow me on my socials to always be up-to-date on Mlem's development! | ||
|
||
## Development | ||
|
||
This project makes use of [SwiftLint](https://github.com/realm/SwiftLint#swiftlint). This runs as part of the Xcode build phases. | ||
## Want to chat about Mlem? | ||
You're welcome to join our [community on lemmy.ml](https://lemmy.ml/c/mlemapp) or [Matrix room](https://matrix.to/#/#mlemapp:matrix.org)! | ||
|
||
In order to benefit please ensure you have [Homebrew](https://brew.sh) installed on your system and then run the following command to install swiftlint: | ||
## Contributing | ||
|
||
`brew install swiftlint` | ||
Read our [contribution guide](./CONTRIBUTING.md) to get started! | ||
|
||
## License | ||
|
||
Mlem is fully open-source, licensed under GPL 3.0 with an addendum for compliance with the Apple App Store. See LICENSE for details. | ||
|
||
### Icons | ||
Beehaw Community Icon by Aaron Schneider is included under [CC-BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) | ||
### App Icons | ||
Beehaw Community Icon by Aaron Schneider is included under [CC-BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). |