TECH

DRAFT

 



Communications

Working as a Remote Employee

Remember that your coworkers and clients may not be in the same Time Zone as you. Use this link http://www.timeanddate.com/worldclock/converter.html if you need to convert times.

Through proactive conversations and questions each team member supplements that inability to discuss topics face to face with candid conversations happening frequently.

What communication tool to use?

For Scheduling Group meetings we use Google Hangout and google calendars to organize all the participants

For chat, we us Slack. there are 3 types of Slack Channels

  • Internal chat rooms include only the Kalamuna team
  • Client facing chat rooms allow clients to paticipate in conversation
  • Development chat rooms update slack with movement from JIRA tickets regarding particular projects

TBD: guide on when to use Slack, Hangouts, Email, or the PM System.


Developer Workflows

Git Best Practices

  • A modified GitHub Flow where our integration branch is "sprint".
  • Create branch named by the Jira IDs, in some cases, feel free to use "name/jira-123" or similar.
  • Pull Requests are made to sprint
  • At the end of the sprint, merge sprint to master

Pantheon

Basic Pantheon development workflow

  1. Creating Pantheon Sites and Choosing an Upstream
  2. Configuring Your Settings.php
  3. Day-to-day developer workflow (Expand/combine with Git+Workflow? TBD.)
  4. Going Live

Best practices 

Performance Best Practices

The Basics

  1. Configure Drupal performance settings to work with Varnish according to Pantheon instructions. NO EXTRA MODULE IS NEEDED.
  2. Check http://varnishcheck.getpantheon.com/ to see if Varnish is working and read Pantheon Varnish docs for more background info and troubleshooting help.

Advanced Tips

  • Details on debugging when certain modules don't work with "Aggressive" caching (necessary to get Varnish working)
  • Links to general (front/back-end) performance tuning guides?

Tools and Services

  • IDE

Hosting

Project Management

  • Project Management Workflow
    • Onboarding: Who adds people to Harvest/Pantheon/Slack/etc?*
  • Trello is used to organize smaller support projects, internal initiatives, or personal organization.
  • JIRA 
  • Sprints

Code Structure

Patching

Module Patches

Try to run as few -dev modules as possible. Patches from d.o. are preferred.

 All patches should be taken from Drupal.org; if you need to roll a new version of a patch, you should contribute it to the issue queue and properly reference the issue #/comment # on your patch name (see https://www.drupal.org/node/707484).

If a patch is required for a module that is part of a distribution, like /profiles/panopoly/modules/contrib/views participation in the distro's issue queue is encouraged so the next release contains this fix. In the interim, any newer version, or even the same version now patched should be downloaded to sites/all/modules/patched/ which will override the distro module and make really clear what is happening.

Module patches should be stored in a "PATCHES/" directory within "sites/all/modules/patched/."

Applying a patch (and adding the .patch file) in a project should be done in a dedicated commit with a clear commit message. In this same commit, PATCHES/patches.txt should record what's been patched with links to the issue queues.

Other helpful documentation from d.o.:

Applying patches - https://www.drupal.org/node/1399218

Rerolling patches - https://www.drupal.org/patch/reroll

Features

see: Features

Architecture Guidelines

Keep it Simple.

Do things with the least amount of modules possible. Don't code when you can configure or build a solution using out-of-the-box components. ALWAYS consider the business value of what you're building; the best code is the code you don't write. (We should add a bullet list of examples)

Can I Install X Module?

Each module installed on a site creates additional complexity in the long-term maintenance, even if it is just one more project that needs regular updates. Try to avoid installing modules whenever possible, and try to use the modules that have been installed on the rest of our sites.

Where Should I Install Modules?

/modules/contrib: Official contrib projects from Drupal.org

/modules/custom: Modules that you've created from scratch AND sandbox modules from D.o (remember to add a link back to the sandbox project page if not already present). 

Libraries

Custom libraries should be put in /libraries

(We need some guidelines for when custom libraries should/should not be added to a project --> Blacklisted/whitelisted libraries could also be helpful).