At CodeCall, maintaining a streamlined and standardised process for contributing code is crucial.
This approach ensures that your submissions are clearly explained, facilitates fair judging, and enhances your chances of making valid contributions and earning rewards.
Submitting multiple contributions
Features and Algorithms should be submitted individually.
Multiple Optimizations can be submitted at a time especially if they are minor
Bugs should be submitted separately. Critical bugs should be submitted individually, while minor bugs can be submitted together.
How to document your contributions
In summary, you should aim to reduce the work of the reviewers as much as possible by providing them as much information as possible.
Good quality submissions are those with enough supporting documentation that allow the reviewers to never even have to switch tabs.
The documentation for each submission type should include the following information:
Bug: The effects of the bug and how to reproduce it along with your fix. You should also mention the tools you used to identify the vulnerability as well as the impact scale. You can read on how to properly rate the vulnerability here.
Feature: A description of the feature you are implementing and how it aligns with the projects tasks + any criteria/role the user must fulfil/have to reach the given feature e.g. a button only the owner of the app can use.
Optimization: Mention which part of the code you are optimizing, what effect it has (readability, efficiency, speed) as well as any metric you can use to quantify your optimization.
Formatting
There are 3 types of submissions you can make and depending on the submission type, your report/documentation should contain different information. While the submission format of the 3 types does not differ much, it is important to submit a clean document to increase your chances of it being approved by a reviewer.
Feature Development
## Name
Provide a short name for the feature you have developed which is aligned with the competition requirements.
For example, if the requirement is to implement login functionality using Firebase, you should name your submission something like "Firebase Login Button Functionality" to ensure clarity.
## Description
Provide a brief description of the feature you have developed. Explain its purpose and how it meets the competition requirements. This should give the judges a clear understanding of what your submission is intended to achieve.
## External Libraries
List any external libraries you used in your project. Include the name and version of each library, and a brief explanation of why it was necessary.
Example:
Firebase Authentication (version 9.0.0) - Used to implement secure login functionality.
## Tools Used
Mention any tools or development environments you used to create your submission. This can include IDEs, version control systems, testing frameworks, etc.
Example:
Visual Studio Code - For coding and debugging.
Git - For version control.
Postman - For API testing.
## Code
Mention the purpose of any additional files created, and ensure the code you submit is well-documented. You don't need to create a dissertation to accompany it, but at least add some comments explaining the purpose of each function or any variables that may not be understood at first glance.
Example:
// Firebase configuration object
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT_ID.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT_ID.appspot.com",
messagingSenderId: "YOUR_SENDER_ID",
appId: "YOUR_APP_ID"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
// Function to handle user login
function loginUser() {
const email = document.getElementById('email').value;
const password = document.getElementById('password').value;
firebase.auth().signInWithEmailAndPassword(email, password)
.then((userCredential) => {
// Successfully logged in
console.log('User logged in:', userCredential.user);
})
.catch((error) => {
// Handle errors
console.error('Error logging in:', error.message);
});
}
Bugs
## Summary
Include a summary of the bug you found, is it a small glitch? Is it an exploit that can steal user information..?
## Codebase
Mention which files or specific snippet of code generates the bug along with proof
## Impact
Provide an impact score of the bug
## Tools Used
Mention any tools you used to find the bug e.g. clang static analyzer
You should also provide the result of the tool used if available (note:just for the specific bug)
## Mitigation
If the bug can be fixed through coding changes then provide a mitigation for it, if not then provide a mitigation solution e.g. update version of node.js from 0.x.x to 1.x.x
Optimizations
## Summary
Include a summary of the optimization that can be made. Is it a documentation and readability optimisation? Is it an optimisation for the algorithm to produce results faster..?
## Codebase
Mention which files or specific snippet of code the optimisation can be made in
## Type
Mention the type of optimisation such as "readability", "grammatical error", "efficiency", "speed", "future proofing"
## Tools Used
Mention any tools you used to measure the optimisation if possible along with the before and after result.
Example:
Using a smart contract optimizer compare the gas costs before and after the optimsation was implemented.