I’m a junior iOS Engineer at Vokal with only one year of software engineering under my belt, but even without a lot of experience, I was able to contribute to Swift 3 because of the incredibly helpful iOS community. If you are having trouble getting started on contributing, all you have to do is ask for help. The hardest part about contributing to Swift was not actually implementing the task, it was getting started.
Jacob Van Order, an awesome mentor and lead at Grainger, told me about the Starter Tasks in Swift Weekly Brief. These are easier “ramp up” tasks that are meant to warm you up to contributing. So I picked one, and followed the initial steps on the main Swift repo. But after that, I was completely lost on what to do next. Not coming from a computer science background, I struggled to even get an updated xctoolchain built. The cloned project had errors and warnings everywhere. So after a day or two of failed attempts at properly running the build script, I left a comment on the ticket:
Brian Ivan Gesiak I would like to pick this up. First time contributing here. I've been looking at the pull requests for swift-corelibs-xctest, but to be frank, I'm still a bit lost on how to go about this. Are there any examples or guidelines that could help me get started?
If you check out the comments in the ticket, he gave me step-by-step instructions on how to get started. After exchanging several comments with Brian, I was well on my way to writing the Swift implementation of expectation(forNotification:object:handler:).
Writing the code was the fun part. I learned a lot about encapsulation, access control and Swift API design. Also, writing functional tests push you even further to make your implementation airtight. The existing work in XCTest had great examples to work off of.
So, if you’ve found a task that you are interested in, but unsure of how to carry it out, ask! Leave a comment for the reporter. My experience has taught me that the reporter is more than happy to help you out. I even got invited to take on another Swift task from the same reporter!
Lastly, before you start coding away, plan and architect what you are going to write. Get others involved: talk about it with your mentors, coworkers and friends. After all, Swift is open source and your code will be there for everyone to see. Also, get some initial code reviews from others as well. Carl Hill-Popper, a Senior iOS Engineer at Vokal, gave me a lot of help designing the XCTestExpectation methods as well as code reviews.
A total noob like me got to be one of the contributors for Swift 3. So don’t let the first step discourage you! Go for it. There’s help along the way.
Below are the links to the Jira tickets and PRs for my work:
Expectation for Notification
Expectation for Predicate