The official Wikipedia iOS application
Commit | Author | Details | Committed | ||||
---|---|---|---|---|---|---|---|
23006c02a565 | Andrew Mroczkowski/GitHub | Merge pull request #1409 from wikimedia/bug/T164518 | May 5 | ||||
ea27e9d6fcdc | JoeWalsh | Maintain a background task for migration | May 5 | ||||
71f8a7565af5 | Andrew Mroczkowski/GitHub | Merge pull request #1407 from wikimedia/bug/5.4.1/top_crash_fixes | May 4 | ||||
153ed1123238 | JoeWalsh | add missing [moc performBlock:^{ | May 4 | ||||
491ff96d92cc | JoeWalsh | update fastlane | May 3 | ||||
2073dce74af1 | JoeWalsh | only one background task group at a time | Apr 27 | ||||
d0ec4dc1910c | JoeWalsh | update fastlane | Apr 27 | ||||
c12c19c02485 | JoeWalsh | add missing success and failure completions | Apr 27 | ||||
0d5939eb9017 | JoeWalsh | chain completion blocks | Apr 27 | ||||
9e20a2da27b2 | JoeWalsh | don't start cache removal on app start | Apr 27 | ||||
4f4e61b945fc | JoeWalsh | end the background task early if we complete the saved articles fetch and the… | Apr 27 | ||||
86bf67dea0ba | JoeWalsh/GitHub | Merge pull request #1372 from wikimedia/bug/5.4.1_explore_will_appear | Apr 26 | ||||
7582a371ee02 | JoeWalsh | don't show offline empty view if there's no FRC | Apr 26 | ||||
493aa7a91aae | JoeWalsh | don't setup reachability or fetched results controller until view will appear | Apr 26 | ||||
c4186544a814 | JoeWalsh | fix beta build | Apr 26 |
TagsShowing the 15 most recent tags.
BranchesShowing 15 branches.
Branch | Head | Details | Committed | ||
---|---|---|---|---|---|
feature/themes_part_2 | b9fafe04969a | Pixel push 'On this day' explore gradient. | Jul 8 | ||
bug/article-scroll-bottom/T166609 | fe4ced15b8d0 | Rename a div id. | Jul 8 | ||
develop | b9a87451fe9e | Merge pull request #1602 from wikimedia/bug/T169981 | Jul 7 | ||
twn | 1185118d286b | Merge branch 'develop' into twn | Jul 6 | ||
feature/analytics-tests | afd0fedce37b | Merge branch 'develop' into feature/analytics-tests | Jun 29 | ||
releases/5.5.1 | 3893ae8600e8 | Merge pull request #1579 from wikimedia/bug/frame_rounding | Jun 29 | ||
feature/on-this-day/T135769 | 535af2cf4268 | fix beta app feedback email | Jun 27 | ||
contributors | 046ee2d83125 | add waffleboot to contributors list | Jun 27 | ||
5.5.1_beta | d45cf8bce5be | Merge branch 'bug/T166828' into 5.5.1_beta | Jun 21 | ||
bug/T167958 | de719217c4a2 | fix out of range crash | Jun 21 | ||
feature/tfa_widget | 1f08feb04bff | Merge branch 'develop' into feature/tfa_widget | Jun 20 | ||
bug/collection_view_crash | 1b9a7b970503 | add library migration logic | Jun 19 | ||
revert-1549-revert-1548-bug/collection_view_crash | eca59967ea0c | Merge branch 'develop' into revert-1549-revert-1548-bug/collection_view_crash | Jun 15 | ||
releases/5.5.0 | ff627bb10dbf | Merge pull request #1549 from wikimedia/revert-1548-bug/collection_view_crash | Jun 15 | ||
beta | 3313fe05ee52 | Merge branch 'bug/nearby_radius' into beta | Jun 7 |
README.md
Wikipedia iOS
The official Wikipedia iOS client.
  
- OS target: iOS 9.3 or higher
- Device target: iPhone, iPod, iPad
- License: MIT License
- Source repo: https://github.com/wikimedia/wikipedia-ios
- Code review:
- Planning (bugs & features): https://phabricator.wikimedia.org/project/view/782/
- IRC chat: #wikimedia-mobile and #wikimedia-ios on irc.freenode.net
- Team page: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/iOS
Development Team
The app is primarily being developed by the Wikimedia Foundation's Mobile Apps team. This README provides high-level guidelines for getting started with the project. If you have any questions, comments, or issues, the easiest way to talk to us is joining the #wikimedia-mobile channel on the freenode IRC server during Eastern and Pacific business hours. We'll also gladly accept any tickets filed against the project in Phabricator.
Building and Running
Minimum Requirements:
- Xcode 8.2.1 or higher The easiest way to get Xcode is from the App Store, but you can also download it from developer.apple.com if you have an AppleID registered with an Apple developer account.
If you'd rather not install the remaining dependencies yourself, you can run scripts/setup from the project directory to install them. This may take awhile as it will also compile any code dependencies.**
At this point, you should be able to open Wikipedia.xcodeproject and run the app on the iOS Simulator (using the Wikipedia scheme and target). If you encounter any issues, please don't hesitate to let us know via bug reports or messaging us on IRC (see above).
Quick note: you might not see an app icon when first building the project after a clean checkout. See [Wikipedia App Icons](docs/app-icons.md) for information about generating the icons.
- Development
- Architecture
*TODO: We hope to have some high-level documentation on the application's architecture soon.*
Best practices and coding style
You can find our current thinking on iOS best practices and coding style on our team page. The [WMFCodingStyle](./WikipediaUnitTests/Code/WMFCodingStyle.h) files are also canonical examples of our coding style, which are enforced using [clang-format](#clang-format).
Dependencies
We use Carthage to manage third-party native dependencies and [npm](#npm) for web.
Testing
The Wikipedia scheme is configured to execute the project's iOS unit tests, which can be run using the Cmd+U hotkey or the Product->Test menu bar action. You can also use the project's [Makefile](./Makefile) to run both in one action: make verify.
Contributing
If you're interested in contributing to the project, you can find our current product, bug, and engineering backlogs on the iOS App Phabricator project board. Once you pick a task, make sure you assign it to yourself to ensure nobody else duplicates your work. The Easy tag in Phabricator can also help you find tasks that are ideal for new contributors because they're small and/or well-defined. We suggest you filter the **#Easy** project to only show tasks in the Wikipedia iOS app projects.
We do all of our active development on the develop branch. Your pull requests will automatically be targeted at that branch by Github. To make merging easier, be sure you create your branches based on the develop branch.
Once your contributions are ready for review, post a pull request on GitHub and Travis should verify your changes. Once the build succeeds, one of the maintainers will stop to approve the changes for merging.
Gerrit
We also maintain a mirror of this repository on Gerrit (see above), syncing the code after every release. If you'd rather use Gerrit to send us a patch, you'll need to:
- Create an SSH key
- Create a Wikimedia developer account
- Clone the gerrit repo: git clone ssh://<wikimedia-dev-username>@gerrit.wikimedia.org:29418/apps/ios/wikipedia.git
- Install git-review
- Make some changes...
- Squash them into one commit (following our commit subject and message guidelines)
- Submit your commit review: git review
- You should see a URL pointing your patch on gerrit.wikimedia.org
- Add two or more of the [team members](#development-team) as reviewers for your patch
Other Development Dependencies
Certain development and maintenance tasks will require the installation of specific tools. Many of these tools are installable using Homebrew, which is our recommended package manager.
Homebrew and many other tools require the Xcode command line tools, which can be installed by running xcode-select --install on newer versions of OS X. They can also be installed via Xcode or downloaded from the Apple Developer downloads page on older versions of OS X.
Clang-Format
brew install clang-format
As mentioned in [best practices and coding style](#best-practices-and-coding-style), we use clang-format to lint the project's Objective-C code. Installation via Homebrew is straightforward: brew install clang-format. We use the ClangFormat-Xcode plugin to format code on save. After installing the Xcode plugin, select "Format on Save", "Use System ClangFormat" and "File" (to use our .clang-format file) from the Edit > Clang Format menu. You already have clang format if you ran one of the setup scripts above.
NPM
brew install npm
npm is a package manager for nodejs. With it, we install various node modules as Javascript dependencies and development tools (see www/package.json for an up-to-date list). Similar to our native dependencies, we have committed certain files to the repository to remove node and npm as build dependencies in an effort to streamline typical application development. Please see [Wikipedia iOS Web Development](docs/web-dev.md) for more information about how to work with the web components in this project.
Fastlane
Continuous Integration
Continuous integration is run on Travis-CI in response to pull request updates and merges to the master branch. See the verify lane in fastlane/Fastfile and our .travis.yml for details.