For each project, we create a Skype chatroom (see project wiki).
Contacts
John Doe
Role : IT project manager
Email:
Phone: +000000000
Skype: johnyskype
Development
Best practices
Never ever touch the software core (ex. do not modify the Drupal core files). For any features or modifications, you have to write a module. This allows easy further quick (security) updates.
Document your code. For example if you built a Drupal module, put a README.txt in the same directory as your module. It should contain the purpose of the module (can contain a link to the bugtracker task), how to install it, how to use it and which changes are needed in the software admin, how to test it, how to access it and all useful information. For consequent development and if asked please use Doxygen.
If needed, update the project documentation page.
Add comments to your code when you're doing something unusual.
Follow the best practices of the software recommendation (put the module in the right place, use the right and standard procedure development...).
CSS should be used whenever it's possible.
Supported modules or extensions in the software community should be used whenever possible instead of undertaking the same development.
If you're going to use a module for a feature, check the license, it must be a GPL like license.
Test, test and test again! When you're going to deliver your development, be sure that it's working well and according to the original specifications.
If the project requires, you may have to build non regression unit tests.
Please use fake latin text for demo text as it allow everyone to know that it's demo text.
Never write coarseness in the code and test data as it's easy to forget and so be visible by client.
Community work
Contributions to the open source community when you develop or fix something are recommended and encouraged. When you submit something please put the author as "your name - {COMPANY}.com"
Versioning
We use Mercurial for versioning.
Usual directory structure of a project:
Trunk
branches
dev1
dev1.1
dev2
...
- Trunk: contains the production files.
- Branches->devX: branch of developer
- Branches->devX.Y: branch of developer of another development, because the first development is maybe finished but not yet merged into the trunk.
Developer should commit as much as possible, if possible by adding comments. That way you prevent data loss and allow us to follow your work.
To put a development in production, after review, we merge the branch of the dev with the trunk.
Developer should never commit into trunk without an authorization.
Mercurial
We use Mercurial over SSH on port XXX.
user@vm:~$ cat .ssh/config
Host *{COMPANY}.com *{COMPANY}.org
Port XXX
A branch for each developer is created by project manger. Each developer works in his own branch.
Tasks are assigned by project manager to the developers via bugtracker.
Developers should do tasks by priority order unless instructed otherwise by project manager.
Before undertaking the task, change the status to: 'In progress'.
At task completion, write details about your work and how to push the development into production. It can contain some manual actions in the software administration (with screenshots), a SQL patch or a commit number. Then change the task status to 'Dev complete'.
Project manager will test the code in your branch. During this, you can't undertake any other development. If you need to work on another development, a new branch will be created (ex. dev1.1).
If it needs to go back and forth between project manager and you, project manager will change the status to 'In progress' and add a comment describing the problem. You will fix it and change the status to 'Dev complete' again.
Then project manager will merge the developer branch with the trunk and delete the branch of the developer (or create a new one from the trunk) and test the code on UAT.
Project manager updates the status to 'OK production'.
Project manager pushes the code to production and changes status to 'Resolved' - case is closed.
When a dev server is being set up, each branch may have its own access to our dev server. It should be devname.project.webXX.{COMPANY}.org
R&D
You can test and play with some software that we're using here:
- Please report your hours on the case that you're assigned on, on a daily basis even if you don't complete the task.
- In addition, enter your time against your tasks. If asked by project manager, you may have to report your daily activities in the bugtracker news section.
- Please write a detailed comment when you solve an issue explaining how you solved it.
For contractors
Invoicing
Please read carefully this information as this allows us to pay you for the job that you've done.
For each issue, we will decide the type of invoicing method which can be either "Fixed quote" or "Hourly basis".
For each case, the bugtracker 'Invoicing' field will tell you the invoicing type.
Fixed quote
Each time it's possible, we prefer you to give us a quote according to the job description. Then you will engage yourself to succeed in your task in the defined time frame and due date.
The time to be spent (and so budget) will be entered in the 'Estimated hours' field of each bugtracker issue. The deadline will be entered in the 'Due Date' field of each bugtracker issue.
If you do not succeed to deliver your commitment at the due date, penalties will apply on the defined amount at the following rates:
10% if over 1 week,
20% if over 2 weeks,
30% if over 3 weeks.
Answer to a quote
You can quote the tasks with the status 'Quote' unassigned, or assigned to you.
Read the description and send an email to PM with the price in USD including your deadline, do not answer the quote with a task comment.
We need your quote before the 'Due date'.
Hourly base
When it's too difficult to work with a fixed quote, we will work on hourly basis. In this case, a maximum time spent and a deadline will be fixed. Estimated time will be in the 'Estimated time' field of bugtracker. If you do not succeed to solve the issue in the given time, then write a comment on the issue explaining how you used the time, your actual status and estimate how long it will take you to solve the issue. Then project manager will reply.
Contract
Please read and sign our contract (attached in the end of this page, SoleTraderContractorAgreement.odt) and send it to the project manager.
Payment
For hourly basis payment, please send us a monthly invoice with your working hours. We will check that time against bugtracker and we'll pay you within 30 days.
For a payment based on a quote, please send us your invoice at job completion and we'll pay you within 30 days.
Your invoiced working hours must be broken down by projects and sub projects that you have been working and including the project number (p0XXXX).</b>
Please include the currency in your invoice, your payment details, name, address and invoice number.
Our preferred payment method is a wire transfer, please provide your banking details (bank name, city, address linked to the bank account, bank account number, routing details etc..).
Page last modified on Thursday 12 of August, 2010 20:10:00 UCT
Colored text ~~#FFEE33:text~~ or ~~yellow:text~~. Will display using the indicated HTML color or color name. Color name can contain two colors separated by a comma. In this case, the first color would be the foreground and the second one the background.
Deleted text 2 dashes "-". --text--
Headings !heading1, !!heading2, !!!heading3
Show/Hide !+, !!- show/hide heading section. + (shown) or - (hidden) by default.
Autonumbered Headings !#, !!#, !+#, !-# ...
Table of contents {toc}, {maketoc} prints out a table of contents for the current page based on structures (toc) or ! headings (maketoc)
Horizontal rule ----
Text box ^Box content^
Centered text ::text::
Dynamic variables %Name% Inserts an editable variable
External links use square brackets for an external link: [URL], [URL|link_description],[URL|link_description|relation] or [URL|description|relation|nocache] (that last prevents the local Wiki from caching the linked page; relation can be used to insert rel attribute for the link - useful e.g. for shadowbox).
For an external Wiki, use ExternalWikiName:PageName or ((External Wiki Name: Page Name))
Square Brackets Use [[foo] to show [foo].
Wiki References ((page)) or ((page|description)) for wiki references
, ((page|#anchor)) or ((page|#anchor|desc)) for wiki heading/anchor references
Lists * for bullet lists, # for numbered lists, ;Word:definition for definiton lists
Indentation +, ++ Creates an indentation for each plus (useful in list to continue at the same level)
Non parsed sections ~np~ data ~/np~ Prevents wiki parsing of the enclosed data.
Preformated sections ~pp~ data ~/pp~ Displays preformated text/code; no Wiki processing is done inside these sections (as with np), and the spacing is fixed (no word wrapping is done). ~pre~ data ~/pre~ also displayes preformatted text with fixed spacing, but wiki processing still occurs on the text.
Comments ~tc~ Tiki Comment ~/tc~ makes a Tiki comment. It will be completely removed from the display, but saved in the file for future reference. ~hc~ HTML Comment ~/hc~ makes an HTML comment. It will be inserted as a comment in the output HTML; these are not normally displayed in browsers, but can be seen using "View Source" or similar.
Direction {r2l}, {l2r}, {rm}, {lm}Insert resp. right-to-left and left-to-right text direction DIV (up to end of text) and markers for langages as arabic or hebrew.
Because the Wiki paragraph formatting feature is on, all groups of non-blank lines are collected into paragraphs. Lines can be of any length, and will be wrapped together with the next line. Paragraphs are separated by blank lines.
Plugins
Note that plugin arguments can be enclosed with double quotes ("); this allows them to contain , or = or >.
More help here
Description
User-Agent Info
Displays various information about the client.
Anchor Link
Creates a link to an anchor within a page. Anchors can be created using the ANAME plugin.
Anchor Name
Inserts an anchor in the wiki page. Anchors can be linked to using the ALINK plugin.
Article
Includes an article's content within the page.
Article List
Inserts a list of articles in the page.
Attachment
Displays an attachment or a list of them
Avatar
Displays the user Avatar
Box
Insert theme-styled box on wiki page
Category
Insert list of items with the current/given category in the wiki page
Category Orphans
Display Tiki objects that have not been categorized
Center
Centers the plugin content in the wiki page
Code
Displays a snippet of code
Div
Insert a division block, span, blockquote or other text formatting on wiki page.
Definition List
Creates a definition list
Fade
Displays a label. On click, the block of content will fade in and fade out.
Fancy List
Creates a fancy-looking list
Fancy Table
Displays the data using the Tikiwiki odd/even table style
File
Displays a link to an attachment to a wiki page and can display an image attachment.
Files
Displays a list of files from the File Gallery
Flash video
Displays a Flash (.swf) file in the wiki page
Footnote
Inserts a superscripted footnote number next to text and takes in footnote as parameter.
Footnotearea
Inserts a section for collected footnotes in the wiki page.
Google Analytics
Add the tracking code for Google Analytics.
googlemap
Displays a Google map
Group
Display wiki text if user is in one of listed groups
Group List
List of groups including a group
Group Stats
Displays some stat about group belonging
HTML
Include literal HTML in a Wiki page
Iframe
Displays an iframe
Image
Display images
Include
Include a page's content.
Last Modification
The last_mod plugin replaces itself with last modification time of the named wiki page, or the current page if no name given
List Pages
List wiki pages.
Mail
Allow to send mail to groups or user or email directly
Mediaplayer
Simple mp3 or flv Player
Insert Module
Displays a module inline in a wiki page. More parameters can be added, not supported by UI.
Mouseover
Create a mouseover feature on some text
Plugin Manager
Displays a list of plugins available in this wiki.
Quote
Quote text by surrounding the text with a box, like the [QUOTE] BBCode
Remarks Box
Displays a comment, tip, note or warning box
RSS Feed
Inserts an RSS feed output.
sharethis
Display a social networking tool.
Show Pages
List wiki pages
Skype
Clickable Skype link
Smarty function
Provides access to the tiki smarty functions like button.
Sort
Sorts the plugin content in the wiki page
Split
Split a page into rows and columns
Stat
Displays some stats
Subscript
Displays text in subscript.
Superscript
Displays text in superscript (exponent).
Tabs
Provides tabs built using the smarty tabset block.
Title Search
Search wiki page titles.
Table of Contents (Structure)
Displays the table of contents for the current structure's subtree as part of the page content.
Tracker Comments
Displays the number of tracker comments
User Count
Displays the number of registered users
User List
Displays a list of registered users
Versions
Split the text in parts visible only under some conditions
Post new comment