Git Product home page Git Product logo

iostestapps / apps-ios-wikipedia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wikimedia/wikipedia-ios

0.0 5.0 2.0 16.34 MB

Github mirror of "apps/ios/wikipedia" - our actual code is hosted with Gerrit (please see https://www.mediawiki.org/wiki/Developer_access for contributing

Ruby 0.77% Makefile 0.38% Objective-C 93.67% C 0.07% C++ 0.03% HTML 0.54% JavaScript 3.48% Shell 0.35% PHP 0.42% CSS 0.26%

apps-ios-wikipedia's Introduction

Wikipedia iOS

The official Wikipedia iOS client.

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

This project requires Xcode 6 or higher. The easiest way to get it 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.

Once you have Xcode, you should be able to open Wikipedia.xcworkspace 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 a bug report or bugging us on IRC.

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 files are also canonical examples of our coding style, which are enforced using uncrustify.

Dependencies

We use CocoaPods to manage third-party native dependencies and npm for web. You shouldn't need to run either of these tools to build, run, or modify the application source, but if you do, refer to the sections below to get set up.

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. In addition to unit testing, we enforce our coding style using uncrustify. You can also use the project's 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.

Before submitting changes for review, please be sure to use uncrustify to lint the code and run the unit tests. Now that the code is lint-free and the new tests (you did add tests, right?) it's time to submit the changes for review!

Gerrit

Gerrit is our main vehicle for reviewing and merging code. You'll need to:

GitHub

You can also follow or fork from our GitHub mirror (which you're probably looking at right now). Note that pull requests submitted through GitHub must be squashed and submitted as a patch in Gerrit for review and merge. We're trying to think of ways to streamline this process.

Development Dependencies

While typical application development is optimized to have as few dependencies as possible (i.e. cloning, building, and running should "Just Work"), certain development and maintenance tasks will require the installation of specific tools. Many of these tools are installable using Homebrew, which 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.

Uncrustify

As mentioned in best practices and coding style, we use uncrustify to lint the project's Objective-C code. Installation via Homebrew is straightforward: brew install uncrustify. We've also provided a pre-push git hook which automatically lints the code before pushing, which can be installed by running ./scripts/setup_git_hooks.sh.

BBUncrustifyPlugin is an easy way to uncrustify files within the Xcode UI. You can install it from source or using Alcatraz, the unofficial Xcode package/plugin manager.

CocoaPods

CocoaPods is a Ruby gem that the project uses to download and integrate third-party iOS components (see Podfile for an up-to-date list). We have committed all of these dependnecies to the repository itself, removing the need to install the gem or run before building the project. However, if you want to do anything related to CocoaPods (such as upgrading the version of CocoaPods or adding a dependency), please refer to the Working With Cocoapods documentation.

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 for more information about how to work with the web components in this project.

Continuous Integration

This is still a work in progress. See Wikipedia iOS Continuous Integration for more information.

apps-ios-wikipedia's People

Contributors

berndsi avatar bgerstle avatar bvibber avatar dennispi avatar deskana avatar dr0ptp4kt avatar gabicoware avatar hashar avatar krinkle avatar legoktm avatar lokal-profil avatar montehurd avatar seshness avatar somechris avatar translatewiki avatar yuvipanda avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.