You are on page 1of 3

Open-Source Coding Challenge - Steps

(a) Wait for me to “hire” you on UpWork, this shouldn’t take long!

(b) Follow the steps described in the docs on setting up your own fork and environment. If
you have issues installing docker, feel free to use a conda environment or even just your
system python.

(c) Check out the blog series so you understand Ivy’s long-term vision and roadmap.

(d) Check out our technical lecture, which is a good supplement to the blog series.

(e) Take a look at the open tasks, and decide which one you’d like to work on.

(f) Check out the issues on the Ivy repo, filtering to only search for issues with both the
labels “ToDo” and either “Function Reformatting”, “<Framework> Frontend” or “Ivy API”,
where <Framework> can be any one of JAX, TensorFlow, PyTorch, NumPy,
PaddlePaddle or MindSpore. Each of the issues returned is a ToDo list referring to either
the function reformatting, frontend API or ivy API extension tasks respectively.

(g) Follow the steps described in the docs on ToDo List Issues for choosing an issue and
creating and working with a PR.

(h) If you are working on the reformatting task, then reformat the function as described in
this Deep Dive YouTube series, and also the Contributing and Deep Dive sections of the
docs. Pay particular attention to the instructions on Navigating the Code, Function
Types, Function Arguments, Arrays, Containers, Docstrings, and Docstring Examples.

If working on the frontend API task, then implement a single frontend function, as
described in this Frontend APIs YouTube series, and also the Ivy Frontends and Ivy
Frontend Tests sections of the Deep Dive.

If working on the ivy API extension task, then implement the function as described in this
Deep Dive YouTube series, and also the Contributing and Deep Dive sections of the
docs. All sections are important, but you should pay particular attention to the
instructions on: Superset Behavior and Ivy Tests, which will be the hardest things to get
right, and will require the most thought.

🎉🥳
(i) We accept your PR, you enter the PR link into the questionnaire we sent you via email,
and the open-source coding challenge is complete!
Notes

(a) This is not really a competitive “assessment”, everyone who manages to engage with the
task in a positive way, utilize the community, and get their PR eventually accepted will be
treated totally equally in the next stage. There are no brownie points for working on
harder tasks, getting the task done very quickly, or doing so without any help. This task
is more meant to serve as an entry barrier that any potential member of the Ivy team
must be able to cross, rather than a scored competitive test.

(b) You are not expected to get everything right on the first commit. Open-source work is
iterative and collaborative. I or someone on the team might respond with comments on
your PR requesting changes, this is totally fine and not a reflection on your performance.

🙂
You might need to ask questions. Asking questions in a back and forth discussion is
not a bad thing

(c) If you get stuck on anything, just ask! We mean it when we say the task should take ~1
hour in total. The task itself might take longer due to back and forth discussions, getting
things set up and installed beforehand etc. Our discord server is the best place to ask
general questions unrelated to specific PRs. We won’t negatively assess your

🙂
contribution at all based on any discussions. Value your own time and just ask if/when
stuck

(d) We would recommend using PyCharm with a Docker interpreter for your development.
This is the setup most of us use at Ivy. This also has the added benefit that many useful
PyCharm configurations (for running tests etc.) are saved in the repo. This means when
you clone the repo and open PyCharm, you can run tests for certain sub-modules and
backends directly in PyCharm. However, you can use whatever IDE you are most
comfortable with of course!

(e) If you come across any problems, feel free to raise other issues in the repository!

(f) There is no time limit for this challenge. Provided that you have completed the task at

🙂
least ~4 weeks before your preferred start date, then you can complete the task
whenever is most convenient for you

However, UpWork does have its own time limit on how long a fixed price contract can be
opened for. If you have not completed the challenge within ~3 months of starting, then
the contract will automatically be withdrawn. If this happens to you, please just dm the
@IvyTeam account on discord and we’ll get a new contract sent over to you right away!

(g) If all tasks on all ToDo list issues are already allocated to other people, then just hold
tight! We have other coding challenges lined up, and we’ll be in touch soon with detailed
instructions for what this next task will look like!

(h) Do not create more than one issue at a time. You may create a second issue to work on
a second task only once your first pull request has been accepted. This is to make sure
there remain plenty of tasks for other applicants and other members of the community to
work on.

(i) Some videos in the YouTube tutorial series have minor corrections in the video
description, linking to the timestamp of the error and a description of the correction.
Please keep an eye out for these corrections in the videos!

You might also like