diff --git a/contrib/index.rst b/contrib/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2605b7b61f350c33ca305a483f31a4b770b83677
--- /dev/null
+++ b/contrib/index.rst
@@ -0,0 +1,115 @@
+.. _gsoc_contribution_guide:
+
+Contribution
+#############
+
+GSoC site uses OpenBeagle CI for builds which means you don't have to setup anything on 
+your local machine to update anything on the site. To contribute to this site, you can 
+follow the simple steps provided below.
+
+Fork the project
+*****************
+
+Go to `gsoc.beagleboard.io repo on OpenBeagle <https://openbeagle.org/gsoc/gsoc.beagleboard.io>`_ 
+and click on fork button create a fork on your personal OpenBeagle profile.
+
+.. image:: media/fork-button.png
+    :align: center
+
+After clicking on the fork button, you'll be taken to a page like shown below where you have to,
+
+1. Select your profile from the dropdown.
+2. Click on fork project button to initiate the forking process.
+
+.. image:: media/fork-project.png
+    :align: center
+
+Select file to edit
+*******************
+
+After successfully forking the project you have to,
+
+1. Make sure you are on the forked repo on your profile, it should be ``https://openbeagle.org/<user-name>/gsoc.beagleboard.io`` where <user-name> should be replaced with your OpenBeagle username.
+2. Select any file you want to edit from the files & folders view of the repo page.
+
+.. image:: media/repo-file-folders.png
+    :align: center
+
+After selecting the file you have to click on ``edit button`` and then choose either of the options from drop-down,
+
+1. Open in Web IDE, choose this if you want to work on multiple files.
+2. Edit single file, choose this if you want to make some small edits in a single file.
+
+.. note:: Choosing Web IDE will load a full VS Code IDE from server which can be bit heavy sometimes.
+
+Start editing
+*************
+
+If you select to open your file in web IDE you'll see a familar interface. The IDE is actually a VS code server hosted on OpenBeagle.
+
+.. image:: media/ide.png
+    :align: center
+
+.. tip:: If you are new to RST you can checkout our `RST cheatsheet <https://docs.beagleboard.org/latest/intro/contribution/rst-cheat-sheet.html>`_ 
+    to get yourself familiar with RST.
+
+Now you have to select a file and start editing. Below image shows some,
+
+1. Edits made to the `ideas/index.rst` highlighted with green bar on left side of code editor window near line numbers.
+2. Source control button indicating (1) file updated in the repo.
+
+.. image:: media/make-edits.png
+    :align: center
+
+Just like you do on your normal VS Code IDE, to commit your changes you can either click on Source 
+control button on press ``CTRL + SHIFT + G`` to see all the edited fils.
+
+.. image:: media/make-edits.png
+    :align: center
+
+After swithing to source control you have to,
+
+1. Add a commit message in the input feild.
+2. Click on ``Commit to main`` button or click on drop down button to choose ``Commit to new branch``.
+
+.. image:: media/commit-changes.png
+    :align: center
+
+After clicking to commit button you'll be prompted with this window, where you can choose to 
+commit to main if it's a single edit or commit to a new branch if you want to keep your main branch clean.
+
+.. image:: media/commit-branch.png
+    :align: center
+
+When all done right, the lower right side of the IDE you'll a prompt showing sucess message.
+
+.. image:: media/commit-success.png
+    :align: center
+
+If you go back to project, you'll see the commit successfully applied and the 
+green tick shows that the CI build was aldo successfull .
+
+.. image:: media/commit.png
+    :align: center
+
+Congratulations, you have made a valuable contribution to an OpenBeagle project!
+
+Create Pull Request
+**********************
+
+After making your changes and commiting them to your forked repo, you are set to create a new Pull Request / Merge Request 
+so that those changes can be merged to upstream repo. To start your new PR click on the dedicated button to create a new 
+merge request and fill out all the details. The image below shows all the feilds you have to update,
+
+1. Provided a good title that reflects your work.
+2. Add a detailed description of the work you have done. Add pictures whenever seems useful.
+3. (Optional) you can assign it to yourself if you'll be working on further updates or assign it to someone else who might want to work on the comments we may provide on your work.
+4. Add ``lorforlinux`` or ``jkridner`` as reviewer for PRs with site content update or add your mentor as reviewer if it's related to project work / proposal.
+5. If you want your commits to be shows as a single commit then you can choose the ``sqash commits ...`` check box.
+6. Check if all your commits are shown in the bottom of the screen and if everything looks okay then click on ``Create merge request`` button.
+
+.. image:: media/merge-request.png
+    :align: center
+
+Now wait for the review and if comments/requests are raised then you can continue working on the project 
+until everything looks perfect and your changes are merged in upstream.
\ No newline at end of file
diff --git a/contrib/media/commit-branch.png b/contrib/media/commit-branch.png
new file mode 100644
index 0000000000000000000000000000000000000000..a12463e10c19ec0c29431ad12d8a4b368e91f967
Binary files /dev/null and b/contrib/media/commit-branch.png differ
diff --git a/contrib/media/commit-changes.png b/contrib/media/commit-changes.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d80b552c594f6eb9aabe9fd2388c221b90e2d1c
Binary files /dev/null and b/contrib/media/commit-changes.png differ
diff --git a/contrib/media/commit-success.png b/contrib/media/commit-success.png
new file mode 100644
index 0000000000000000000000000000000000000000..f0f3410e4cf6e8ca4d0d852a81c7a12c0b428f49
Binary files /dev/null and b/contrib/media/commit-success.png differ
diff --git a/contrib/media/commit.png b/contrib/media/commit.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e27c2f65ab4b15f3905fdaeb764cffc10900d5a
Binary files /dev/null and b/contrib/media/commit.png differ
diff --git a/contrib/media/create-merge-request.png b/contrib/media/create-merge-request.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b89ad093b95451e1512c5bd1d1c071b4a3c14bf
Binary files /dev/null and b/contrib/media/create-merge-request.png differ
diff --git a/contrib/media/edit-button.png b/contrib/media/edit-button.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7e51766ad8ee467f2fcd5e15c0d60bc7db5b96c
Binary files /dev/null and b/contrib/media/edit-button.png differ
diff --git a/contrib/media/fork-button.png b/contrib/media/fork-button.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5d078b9fa50aee37f326b94ea44e462789bf753
Binary files /dev/null and b/contrib/media/fork-button.png differ
diff --git a/contrib/media/fork-project.png b/contrib/media/fork-project.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd8b4cc751211db19c008d0bc8ee3a7063cecded
Binary files /dev/null and b/contrib/media/fork-project.png differ
diff --git a/contrib/media/ide.png b/contrib/media/ide.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b1a5036e0174c3d25c76b39d8d9a08e1b02cf3d
Binary files /dev/null and b/contrib/media/ide.png differ
diff --git a/contrib/media/make-edits.png b/contrib/media/make-edits.png
new file mode 100644
index 0000000000000000000000000000000000000000..df9a7c93a0906d7fcee5608be0723bc96fb35560
Binary files /dev/null and b/contrib/media/make-edits.png differ
diff --git a/contrib/media/merge-request.png b/contrib/media/merge-request.png
new file mode 100644
index 0000000000000000000000000000000000000000..53ef387c178ed5d29b0591c43553bbc14e592768
Binary files /dev/null and b/contrib/media/merge-request.png differ
diff --git a/contrib/media/repo-file-folders.png b/contrib/media/repo-file-folders.png
new file mode 100644
index 0000000000000000000000000000000000000000..654285e84a5b4180fac8f5c114432b8c04c50633
Binary files /dev/null and b/contrib/media/repo-file-folders.png differ
diff --git a/index.rst b/index.rst
index aeeb80197e285f6d72097c1becbb76834159432b..329824c79754b7e81323e9bc912b11d21cfcbea0 100644
--- a/index.rst
+++ b/index.rst
@@ -108,4 +108,5 @@ Work on awesome OpenSource projects this summer with BeagleBoard.org!
    :caption: Project Ideas
 
    ideas/index
+   contrib/index