Orientation for Developers - LemontechSA/TideSDK GitHub Wiki
Welcome to the TideSDK Project
Welcome and thank you for your interest in the TideSDK project.
The following is a formal orientation to acquaint interns and new developers with TideSDK, its history, structure of the codebase, languages we use, SCM practices, and issue tracking. You will also receive a brief introduction to using TideSDK to create applications. You should know how to use TideSDK before you begin any work. Finally, we've included a small section on teamwork and communication to set expectations for cooperation and respect among the team. All developers that work in our code base are expected to participate in the orientation. Questions and small exercises follow each section. You may be asked a few questions to verify understanding that you have gained through the orientation.
Once you have completed orientation, you can begin working with TideSDK. We use JIRA for issue tracking. You can choose issues to work on including features of fixes. All new developers will start by forking code from our repositories and issuing pull requests for review and merging (if the code is accepted).
If you need further guidance, please introduce yourself to the Project Lead. Within the TideSDK Team, members have specific leadership roles. Depending on the skill set you bring to the project, you may be directed to a Lead that has primary responsibility for an aspect of the project. Tasks may be suggested that fit with your level of knowledge and experience. For code development, each programmer or developer that works on our code has a role of Contributor, Committer, Reviewer, Committer/Reviewer, or Release Manager.
-
Contributor: A contributor has public read only permission TideSDK repositories. Code must be forked from a TideSDK repository to perform work. To work on a feature of fix, a Contributor checks out the develop branch of a repository and creates their own branch for the work from this. When work is complete on their feature or fix, a pull request is issued for the work to be reviewed. If it is accepted, a Reviewer will merge the code back to the develop branch.
-
Committer: A committer has read/write authorization to one or more repositories for TideSDK. Authorization for repositories is established based on assignment to one or more Team(s). Examples of Teams used for authorization include Admin, App, Development, Marketing, and Documentation. A committer branches from the development branch of a repository to work on a new feature or fix. An experienced Committer is authorized to branch from the master to create a hot fix for a bug that has been identified in a release. When work is complete on a branch, a Committer communicates with a Reviewer for the work to be reviewed. If a feature or fix is accepted, it will be merged back to the develop branch. If the commits are for a hot fix, it will be merged to the master.
-
Reviewer: A Reviewer has read/write authorization to one or more repositories for TideSDK. Authorization for repositories is established based on assignment to one or more Team(s). Examples of Teams used for authorization include Admin, App, Development, Marketing, and Documentation. A reviewer may not be a writer of code but has authorization to review code for quality and to merge to our sources. A reviews is a seasoned programmer with skills to provide oversight for code being committed to the project. A Committer may be given a Reviewer role if they demonstrate the skill, practices and personality to review the code of others. A Reviewer has authorization to merge to develop or master.
-
Committer/Reviewer: A Committer/Reviewer has both a role as a Committer and Reviewer. They can work autonomously and participate in the review of code of others. Despite having more freedom to work directly with the TideSDK sources, Committer/Reviewers must work together with others and seek a code review from peer Reviewers on challenging code.
-
Release Manager: A Release Manager has read/write authorization to one or more repositories for TideSDK. Authorization for repositories is established based on assignment to one or more Team(s). Examples of Teams used for authorization include Admin, App, Development, Marketing, and Documentation. A Release Manager has authorization to merging the develop branch to the master or to merging hot fixes to the master (and tagging the release). A release manager has the responsibility to ensure that versions follow a sensible progression and to distribute the packaged software through our distribution channels.
When you first begin work with TideSDK you start as a Contributor with read only access to repositories. If we are comfortable with your work and your commitment, you may be given greater tasks and more responsibility by becoming a Committer with direct access to the code. This progression may continue. Your contribution to the project may be formally recognized with an invitation to become an official member of the TideSDK Team (as part of the organization). Becoming part of the organization may provide opportunities funding together with other collaborative opportunities with team members on specific initiatives. The TideSDK organization is a meritocracy. TideSDK Team members with the greatest investment of effort and time in the project have more sway in decision making within our organization.
The TideSDK team is a truly awesome group of talented individuals. We sincerely hope that your experience with TideSDK as a developer in any role is a great one. We value all contribution to the project. At the end of the day, we hope that you are challenged by the work, feel rewarded for your contribution, and have fun in the company of others dedicated to the success of the project.
What is TideSDK?
Please review the following resources:
The History of TideSDK
Please review the following resources:
- Interview Marshall Culpepper on Titanium Desktop (Video)
- Titanium for New Developers
- Titanium Desktop Intro (Slideshare)
Programming Languages of TideSDK (with tutorials)
Language Formatting and Style
We are continuing to clean the legacy code for improved readability and consistency. In any repository you encounter, please ensure your code formatting and style is consistent with the following styleguide:
http://code.google.com/p/google-styleguide
Languages
The core languages used in TideSDK include C++, ObjC, Python, Ruby, PHP and JavaScript. The following tutorials and sites are those we recommend for language review:
C++
ObjC
Python
Ruby
PHP
JavaScript
TideSDK's Code Structure
General Structure
Multi Platform Compilation with Scons
The TideSDK Runtime
The Tide Module and libtide
WebKit and Third Party Libraries
Packagers and Installers
Unit Testing and Testing Frameworks
SCM (Source Code Management) and Practices
TideSDK Issue Tracking
Creating Desktop Applications with TideSDK
TideSDK's API
Scripting Language Support in TideSDK
- Desktop Apps Using HTML, JS, Python and Ruby
- Titanium Ruby the Good Stuff
- Building Titanium with PHP
- Desktop Apps with PHP and Titanium (Slideshare)
Teamwork and Communication
The Future of TideSDK
Copyright and Attribution
The following copyright and attribution applies to this document:
- Copyright © 2012 David Pratt (for TideSDK). All rights reserved.
CONTRIBUTORS:
- David Pratt