There are two primary ways to contribute to the Surface Editor
project, each designed to accommodate different levels of involvement and preferences for code ownership.
As a core development team member:
-
Code Ownership
You will not retain individual ownership of the code you contribute. All code contributions will be considered property of the project. -
Profit Sharing
In the event that the project generates profit in the future, you will receive a share of the profits based on the terms agreed upon prior to your joining the team. -
Commitment
Core development team members are expected to adhere to the project’s coding standards, participate in code reviews, and collaborate closely with other team members.
As a side project developer, you have more flexibility in how you contribute:
-
Code Ownership
If you are working in a team, then the ownership will be determined by the team. The team must collectively decide on the licensing terms for their contributions. If you working individually, then you retain full ownership of your code. You can license your code as you see fit. -
License Grant
You must grant the project permission to use your code. This permission can be revoked at any time, subject to any terms agreed upon at the time of contribution.
Before starting a project, each member has the freedom to choose:
-
Project Selection
Decide which project to work on from a list of available projects or propose a new one. -
Team Formation
Choose to work individually or form a team with other developers. Team members have the autonomy to select their collaborators based on skills and interests.
-
Charter and Scope Document
If you choose to work on your own project, it is strongly recommended that you draft a charter and scope document. This document should outline the project objectives, deliverables, timeline, and key milestones. -
Review and Approval
Submit your charter and scope document for review and approval. This ensures alignment with the main project’s goals and timelines. -
Reporting
You are responsible for continuously reporting progress to the main project team. Regular updates help us synchronize your project timeline with our overall schedule and adjust our support and resources as needed. -
Bi-Weekly Meetings
During each meeting, schedule the next meeting. The interval between meetings should be more than two weeks but less than three weeks.
-
Invitation
A team member will approach you to explain how the team operates and introduce you about the current side project. -
Joining the Group
You will be invited to join the Discord, WeChat, and GitHub repository. -
Charter and Scope Document
Choose a side project and start working on the Charter and Scope Document. -
Charter and Scope Approval
After completing the Charter and Scope Document, schedule a meeting with a core team member for approval. -
Minimum Viable Product Meeting
Schedule a meeting with a core team member when you have a minimum viable product (MVP). Discuss the plan for the remaining project during this meeting and gain inspiration for further development. -
Final Project Meeting
Schedule a meeting with a core team member once your final project is complete. -
Consultation
Schedule a meeting whenever you have doubts or need guidance. -
Bi-Monthly Meetings
There will be a big group meetings happen every 2 month for all member to get connected. -
Quiting the Group
Whenever you are want to leave the project, we all understand it! Leave the discord group to indicate you are leaving.
-
Intellectual Property Agreement
For core development team members, it is advisable to sign an intellectual property agreement that clearly outlines the transfer of ownership and the terms of profit sharing. This agreement should also include clauses regarding confidentiality and non-disclosure to protect project information. -
License Terms
Side project developers must provide clear and explicit license terms when granting usage rights to the project. This includes specifying the scope of usage rights (e.g., commercial, non-commercial) and any conditions under which the license can be revoked.