Development work has moved!
All development work on OneBusAway for iOS has moved to the OBAKit repository. This repository is maintained strictly for historical purposes.
OneBusAway for iPhone
A project of the non-profit Open Transit Software Foundation!
Start Here
- Come join our Slack channel to say hi and let us know what you're interested in working on.
- We maintain a set of tasks that we think would be good choices for people interested in working on OneBusAway. Learn more about them here: Picking an appropriate first time issue
- This project adheres to a Code of Conduct. By participating, you are expected to honor this code.
- Now, learn about setting up your development environment.
Test latest development release
Join the TestFlight beta by following this link: https://testflight.apple.com/join/xj9o3Y5y. We have capped it to only work 500 times, so if you run into a problem using it, please email us at [email protected] to be added to our TestFlight Beta testing group.
Contributing
See our contributing guidelines and upcoming milestones. This project adheres to the Open Code of Conduct. By participating, you are expected to honor this code.
Individual Contributor License Agreement (ICLA)
To ensure that the app source code remains fully open-source under a common license, we require that contributors sign an electronic ICLA before contributions can be merged. When you submit a pull request, you'll be prompted by the CLA Assistant to sign the ICLA.
Picking an appropriate first-time issue
You are welcome to work on any bug or feature you would like, but we know that getting started in a new codebase can be intimidating. To that end, we recommend that you take a look at issues labeled as good first issue. These issues are relatively small and self-contained, and should be perfect for anyone who is interested in getting their feet wet with the OneBusAway codebase.
Development environment setup
- Install the latest released version of Xcode 10.x from the Mac App Store
git clone
your fork- Install Carthage
- Build Carthage dependencies:
bin/carthage_build --platform iOS --no-use-binaries
open org.onebusaway.iphone.xcodeproj
- Create a new Firebase app at https://firebase.google.com/ - You just need the
GoogleService-Info.plist
file that it'll spit out at you once you've created. - Place
GoogleService-Info.plist
in the(SOURCEROOT)/AppIdentities/OneBusAway
folder.
You should now be able to build. See our contributing guidelines for the specific workflow to add a new feature or bug fix.
Localization Notes
It is vital that any user-facing strings in this project are localized. If your changes reside within the OBA app itself, you must use the NSLocalizedString
macro to wrap your localizable strings. If your changes reside within OBAKit, you must make sure that you import the OBAMacros.h
header file and use the OBALocalized
macro to localize your strings.
Localizers: README
If you are localizing the app: a) thank you so much, and b) you must supply the -s
option to genstrings
for OBAKit's custom localization macro, like so:
genstrings -s OBALocalized
Updating App Version Numbers
Bundle Version Numbers
The bundle version number should be updated upon every release to TestFlight or the App Store. Run the script bin/version
to update the bundle version number. These are the values that take the form 20171021.17
.
App Version Numbers
The bundle version number should be updated upon every release to the App Store. Run the script bin/version <VERSION_NUMBER>
to update the app version number. For instance, if you are preparing to release version 17.10.0 of the app, you would use the command:
bin/version 17.10.0
Frequently Asked Questions
Swift Compiler Errors
Q: When I compile, I see errors that look like this:
error: module compiled with Swift 4.0 cannot be imported in Swift 4.0.3: /onebusaway/OBAKit/../Carthage/Build/iOS/PromiseKit.framework/Modules/PromiseKit.swiftmodule/x86_64.swiftmodule
What is going on, and how do I fix this?
A: Like the error suggests, this is happening because the project's Carthage frameworks were compiled with an older version of the Swift compiler than the one you have on your computer. You can recompile the Carthage dependencies with this command from the command line:
bin/carthage_build --platform iOS --no-use-binaries
After Carthage finishes, I recommend cleaning your project and possibly deleting all of your build artifacts.