Open-source alternative Instagram client on Android. More maintainers needed!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
4.9 KiB

  1. ## WARNING
  2. * All forks must respect [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). Please report violations in Issues or [confidentially](https://austinhuang.me/#hey-you-look-cool).
  3. * Although publishing a fork is allowed by license, it is strongly discouraged to do so as it divides the effort and creates confusion. It is, therefore, recommended to send a pull request back to us, so that the larger community can enjoy your improvement. (This does not apply if you're adapting this app for a different platform other than Instagram.)
  4. ## Contributing
  5. Thank you for your interest in InstaGrabber!
  6. Our vision of InstaGrabber is an open source true alternative of the official Instagram app. It is Austin's pursuit of a libre life that lead him to this app during its abandonment, and it was one unresolved bug that made him have the enthusiasm in implementing numerous features for this app, despite having 0 knowledge of Java beforehand.
  7. As we grow in popularity, it becomes apparent that we are short on hands. Every contribution counts!
  8. ## I want to help coding it!
  9. Great!
  10. Generally, we want to imitate features in the actual Instagram app. There are many Instagram private API repositories on GitHub for you to refer to. Note that you should minimize POST: If a job should be done with GET, then there has to be a GET endpoint. (Indeed, sometimes you need multiple repositories for reference.)
  11. As long as you have tested your version (please indicate device and API version) and make sure it works, then you can submit a PR! Large UI changes have to be voted on by the community, so it would be helpful to upload some screenshots.
  12. Check errors are for reference only. Try to minimize them, but usually they don't make a big difference.
  13. **NEVER touch the l10n-master branch.** It's automatically managed by Crowdin.
  14. ### Structure
  15. It is preferred that you read the scripts yourself, as my understanding (and presentation) may be basic.
  16. * `awais.instagrabber`
  17. * `activities`: Scripts directly binding to each view. Assigns `adapters`.
  18. * `adapters`: Scripts used to present a list of `models` from `asyncs` into `activities`.
  19. * Those inside `viewholder` are for frontend, while others are for backend.
  20. * `asyncs`: Scripts used to communicate with Instagram. Returns `models` which is sent to `adapters`.
  21. * `asyncs.i`: Scripts that fetch data from `i.instagram.com`, except DM.
  22. * `asyncs.direct_messages`: As the name suggests, communication scripts used for DM.
  23. * `customviews`: Custom frontend components for this app.
  24. * `dialogs`: Scripts directly binding to dialogs (i.e. those that are nested in the main view).
  25. * `fragments.directmessages`: Scripts directly binding to each fragment ("small views") within `DirectMessageActivity` in `activities`.
  26. * `interfaces`: Custom backend components for this app.
  27. * `models`: Data structure for Instagram API responses from `asyncs`.
  28. * `utils`: Various tools.
  29. * `MainHelper.java` is basically an extension of `activities.main`.
  30. * `awaisomereport`: Crash reporter. Shouldn not require too much maintenance.
  31. * `thoughtbot.expandableadapter`: These are for the follower comparison view, which allows grouping users.
  32. ### I can't code Java, but I want to!
  33. Fun fact: Austin took over this project and learned Java on the fly (I'm not joking, I only do JavaScript before taking this over).
  34. Even though Java is quite annoying, it is still possible to learn it by trying to understand what these code do (Easier if you have coding experience in other languages).
  35. If you have questions, don't be afraid to ask for help from any current maintainer!
  36. ## I found a bug!
  37. **Please read [FAQ](https://instagrabber.austinhuang.me/faq) first.**
  38. Bugs are inevitable during active development, as nobody can cover all the possible test cases.
  39. You can either email your crash dump to `[email protected]` (The crash reporter will fill in this address for you) or create a GitHub issue. If you're on GitHub, please follow the template. If you're reporting by email, your email address will be published in the GitHub issue. You can contact me [privately](https://austinhuang.me/#hey-you-look-cool) or [through support channels](https://instagrabber.austinhuang.me/#what-can-i-do) to remove it.
  40. Generally, reporting bugs directly in support channels is not recommended, as they can be difficult to find.
  41. ### I want to help... in some other way.
  42. You can...
  43. * translate it [![badge](https://badges.crowdin.net/instagrabber/localized.svg)](https://crowdin.com/project/instagrabber)
  44. * promote it (reddit [r/AndroidApps](https://www.reddit.com/r/androidapps/comments/i30tpp/instagrabber_an_open_source_instagram_client/), YouTube [HowToMen](https://www.youtube.com/watch?v=1Um2ZJG_mB4), [Ekşi Sözlük](https://eksisozluk.com/instagrabber--6643143))
  45. * star it [![stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://github.com/austinhuang0131/instagrabber/stargazers)
  46. Happy contributing!