adventures in drupalia · 2011-11-17 · adventures in drupalia drupal from an outsider’s...
TRANSCRIPT
![Page 1: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/1.jpg)
Adventures in Drupalia
Drupal from an outsider’s perspective
Paul Nijjar
Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012
November 17-18, 2012
![Page 2: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/2.jpg)
What is Drupal?
Drupal is...A content management systemA “web distro” of website componentsA thriving FLOSS community
![Page 3: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/3.jpg)
My Qualifications
![Page 4: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/4.jpg)
![Page 5: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/5.jpg)
My Qualifications (?)Until last year:
Did content updates on an intranet site (which I didn’tdesign)Did content updates on http://kwlug.org (which I didn’tdesign twice)Attended local Drupal User Group meetings
And then...
![Page 6: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/6.jpg)
http://www.theworkingcentre.org
(née http://jobsearch.theworkingcentre.org)
![Page 7: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/7.jpg)
Popularity
Drupal is a popularproject!
There are lots of modules
There are lots of eyeballs to keep the code secure
There is lots of information on the INTERNET
![Page 8: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/8.jpg)
Drupal is a popularproject!
You will be bombarded with comment and login spambots
You have to keep up with security patches
![Page 9: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/9.jpg)
Industrial Strength
Used by large,traffic-heavy sites!
http://www.bmj.com
http://www.whitehouse.gov
http://www.ricksantorum.com
http://ozzy.com
Others: http://buytaert.net/tag/drupal-sites
![Page 10: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/10.jpg)
Those sites all needcaching to run effectively!
Your site probably will too!
![Page 11: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/11.jpg)
Drupal can be overkill forsmall sites (your blog)!
Administration headaches
Not really plug-and-play: it takes work to make a good-lookingsite
The learning curve is high
![Page 12: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/12.jpg)
Modules
There are modules for(almost) everything!
Shopping carts (Ubercart, Drupal Commerce)
Third party embedding/integration (maps, photos...)
Forums and groups
Organizing content into hierarchies
Different menus
![Page 13: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/13.jpg)
Modules are easy to installand use!
http://drupal.org is a central repository for almost all modules
drush makes downloading, upgrading and installing moduleseven easier
Uninstallation is usually painless and mostly clean
![Page 14: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/14.jpg)
Module buffets make yoursites fat!
Each module slows down your a site a little and costs memory
Some modules slow down your site a lot (hello taxonomy_menu)
![Page 15: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/15.jpg)
Modules add points offailure!
There are no guarantees of quality control
They potentially open up security vulnerabilities
Modules with no upgrade path can get you stuck
![Page 16: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/16.jpg)
The community takes careof some modules thatmatter!
Widely-used modules often get new maintainers or upgradedevelopment
Lots of eyeballs means lots of patches
![Page 17: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/17.jpg)
drupal.org
drupal.org gives you onestop shopping!
Project pages, issue queues, user contributed patches,workarounds
Access to groups
Access to project creation resources
Enormous amounts of documentation (but check dates)
The community is FRIENDLY and HELPFUL
![Page 18: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/18.jpg)
Learning Drupal
The learning curve issteep!
Terminology: nodes, taxonomy, entities, hooks, blocks, sites...
Where do you put things?
What modules should you trust?
![Page 19: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/19.jpg)
There is a naturalprogression from user todeveloper!
Custom code → custom modules → sandboxed modules →published modules
Unified drupal.org accounts make the transition easier
![Page 20: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/20.jpg)
There is a naturalprogression from user todeveloper!
Module use → running into bugs → applying patches →submitting patches → maintainership
![Page 21: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/21.jpg)
All kind of people becomeDrupal developers!
People without computer science backgrounds
Lots of geographic and ethnic and gender diversity
Some contributors have never programmed before!
![Page 22: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/22.jpg)
Drupal is written in PHP!
So easy!
![Page 23: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/23.jpg)
Drupal is written in PHP!
So easy to do horrible things!
Some contributors have never programmed before!
![Page 24: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/24.jpg)
Drupal is written in PHP!
Drupal has standards to avoid security holes and bad practices
The standards are easy to apply via the API (check_plain(),t())
Integrated patches are usually held to these standards
![Page 25: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/25.jpg)
Freedom
Drupal is free as infreedom!
Proprietary addons are rare/nonexistent (compare: Wordpress)
For now, even “downstream distros” like OpenAtrium andDrupal Gardens are completely free software
Free backend infrastructure helps the community as a whole
![Page 26: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/26.jpg)
People make money usingDrupal!
People maintain code because clients need the functionality
The learning curve is steep, so skilled Drupal developers canfind work
Customers want unique, branded, robust themes (such as?)
![Page 27: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/27.jpg)
Certain ecosystems areweak!
The selection of quality polished themes is smaller thanWordpress
It is hard to justify working on core modules or generic backendsystems (such as features)
When people have “scratched their itch” they can losemotivation to continue maintaining code
![Page 28: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/28.jpg)
Take that, facebook and Google!
Nymwars are not an issue!
Important contributors are known by silly, “unprofessional”handles (“merlinofchaos”, “webchick”, “deviantintegral”) andnobody cares
People usually associate real names with accounts, but it is notnecessary
People are evaluated based on contributions, not real names
![Page 29: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/29.jpg)
Upgrades
Major versions of Drupalare “legacy-free”!
New major versions may change APIs, interfaces, approaches
New versions of core can pursue best practices (CCK), trendyfeatures (responsive design, web services) and dropfunctionality that is rarely used (blog API)
Keeps core Drupal lean and functional
![Page 30: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/30.jpg)
Major versions of Drupalare “legacy-free”!
Major upgrades are often lots of work (essentially redesigns)
Important modules sometimes lag far behind official Drupalreleases
Working modules are dropped because porting to newerversions is too hard
![Page 31: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/31.jpg)
Drupal recognizes thatmajor upgrades are hard
There are always two supported versions (currently D6 and D7)
Drupal publishes detailed guides of major changes betweenversions
Module maintainers make “pledges” to have versions of theircode ready for the next version
Late adopters benefit from accumulated upgrade knowledgeand sometimes migration helpers
![Page 32: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/32.jpg)
Minor upgrades areusually easy
Especially with drush
![Page 33: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/33.jpg)
Maintaining testing anddeployment sites is difficult
Drupal keeps both configuration and code in one database
Production needs to keep data intact but changemodules/configuration
The features module helps but this is still an open problem
![Page 34: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/34.jpg)
The Drupally Way
There is a Drupally Way!
There are usually ways to override/patch/customizefunctionality and still do upgrades sanely:
hookstemplatescustom modules
![Page 35: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/35.jpg)
The Drupally Way is notalways obvious!
Some best practices are documented
Others you will learn about the hard way
![Page 36: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/36.jpg)
The End?
Comments? Questions?
![Page 37: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/37.jpg)
Obligatory Educational Content:(if there is time)
Secrets of the Drupally Way
![Page 38: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/38.jpg)
Don’t hack core! Don’t hackcontrib!Use hooks and custom modules
If you HAVE to modify contributed code then track thosechanges carefully
Having different folders for modules (contrib, patched,custom, features) can be helpful
![Page 39: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/39.jpg)
Split configuration and dataConfiguration: in files controlled with version control:
Put templates into files, not the databaseUse features to extract views and config into “custommodules”Use version control
Data/content in database:
Master copy should live in production sitePull production copy to staging site when doing upgradesor configuration changes
![Page 40: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/40.jpg)
Worry about securityKeep up with security updates
Restrict use of PHP code for end users
Beware of spambots and spamhumans flooding your site
Skill-testing questionsCAPTCHAsMollum
![Page 41: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/41.jpg)
Choose modules carefullyUse popular, well-supported modules when possible.
https://drupal.org/project/usage
Find out which direction the community is headed
![Page 42: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/42.jpg)
Look for maintainer interest, upgrade paths, alternativemodules that accomplish the same thing:
![Page 43: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/43.jpg)
Keep the number of modules you use as low as possible.
drush pm-list | grep Enabled | wc -l
Sometimes you can replicate the functionality of a module incustom code.
Sometimes you can do without.
![Page 44: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/44.jpg)
Use the communityIs there a Drupal User Group in your community? (Ours:http://groups.drupal.org/waterloo-region)
Become familiar with the drupal.org website
Become familiar with resources published by Drupalcontributors and companies (Lullabot, Acquia...)
Consider attending Drupal events (Toronto DrupalCamp?)
![Page 45: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/45.jpg)
Use drushDon’t not use drush
Easy to learn (even for people uncomfortable with thecommand line)
Makes administrating certain Drupal tasks much easier
![Page 46: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/46.jpg)
Worry about PerformanceThe type of hosting matters: shared hosting vs VPS (VirtualPrivate Server) vs standalone server
Shared hosting with mostly anonymous users: boostVPS/standalone hosting: memcache
Khalid has lots of good articles on http://2bits.com
Turn off caching for development; turn on for production
![Page 48: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/48.jpg)
Apologies and Thanks
To Khalid Baheyeldin for not suing me
To Andrew Cant for obligatory educational content
To the Waterloo Region Drupal User Group
![Page 49: Adventures in Drupalia · 2011-11-17 · Adventures in Drupalia Drupal from an outsider’s perspective Paul Nijjar Kitchener-Waterloo Linux User Group Toronto DrupalCamp 2012 November](https://reader033.vdocuments.site/reader033/viewer/2022050609/5fb0d608001ea55e7751bbd4/html5/thumbnails/49.jpg)
The End
Comments? Questions?