Drupal: First Blush
A newbie’s first serious look by: Craig Harris [email protected]
My Background
Very experienced in non-web software:
I developed large apps in C/C++, Java and a host of other languages for 20 years. The primary focus was desktop “design automation” software
Very little web experience. I made a tiny initial website in 2000 for my second software company
Web-related knowledge:
Have ‘read’ about HTML, CSS, JavaScript, CMSs, Web Services
Have ‘read’ about various website building tools ( including CMS’s )
Played with Wordpress
I own Dreamweaver, but have never used it ( except for doing the tutorial ). I expect I’ll use Fireworks and Photoshop
Purpose of the presentation
Share my first Drupal experience with the SCWeb Dev Group
Explain why I’m interested in Drupal
Describe the process that I went thru in evaluating Drupal
Let you know what I discovered in the process
Summarize the lessons learned
My Current Goals
I’m developing a small media company.
This will require developing a few websites - that incorporate some community-type features.
E.g. membership, member contributions, member management, user interactivity, maybe crowdsourcing
I need to focus most of my effort on content development so I am looking for website building technology that is powerful and scales* well
“Ideally” I’d like a CMS or other tool that doesn’t require a lot of coding and can be made to look/feel good without too much effort ( a tall order!)
I might need to offload the website work, and if I do, that code needs to be well designed and maintainable
Why I have selected DrupAL for eval
• PROS:
It’s a CMS that provides a lot of the features I need
As a CMS, developers seem to like it the best for many reasons
It’s flexible, powerful and scalable - and is architected well (important)
It is fairly mature and robust
It has good features (security, SEO, and lots more)
It’s extendible thru modules (write your own or acquire from the community)
Appears to have fairly large and savvy software-oriented community
NOTE: I did take a glance at the dozens of other CMS’s and COM builders out there
Why I have selected DrupAL for eval
My Concerns:
It may require a lot more coding than I would prefer (?)
“Apparent” lack of high quality themes (not sure. maybe themes are easy to create/modify?)
I hear that most common community site functionality is available - but I don’t know how “good” it is
I’ve been told the learning curve is steep. How steep? (what does ‘steep’ mean?)
I’m willing to put extra effort into a good scalable solution, but this is dangerously seductive. This represents a real challenge for me
To Date...
August: Initial Look
I first became aware of Drupal in August and tried it
I decided to build the server on my local computer:
I’m using MAMP ( Apache, MySql, PHP) on my Mac
In my initial pass I decided to use D7 (latest and greatest)
Many themes and modules did not support D7 at the time (most importantly “Media”); I couldn’t find any good themes, so I stopped website dev and focused on other things.
to date...October: Took a Second Look
After discovering SCWeb Developers, hearing about Darren’s experience, and reading a little more, my interest in Drupal was re-sparked, and I decided to take a second look. There’s something seductive about it (I think it’s the architecture and design)
Then after discovering the Santa Cruz Drupal Group, and receiving their input, I decided to take a second shot and evaluate Drupal, and in particular D7
Reason:
A working version of “Media” is now available
The group believed decent extension modules were available to cover standard community-type features (including ecommerce, ranking, etc. etc.)
D7 is pretty cool
Because I need to limit website dev time, I wanted to develop an efficient evaluation strategy
Eval Plan
Goal: Calculate required effort and feasibility as fast and accurately as possible
Write a tiny spec that covers the most critical features I require
Attempt to characterize the true effort of each feature
For each feature:
If it’s clear that the feature will work, move on to next feature
If the feature doesn’t work or exist, take special note:
Try to characterize the cost of the solution or work-around
Bottom line: Pay special attention to the 80/20 rule and try to ‘feel’ where all the work is going to be done!
Also using learned lessons, calculate the cost of developing and maintaining a full Drupal site
Tiny Spec
• Features:
Create an ‘elegant compelling’ theme*:
either from an existing theme or custom work (the drupal template file)
Allow members to submit articles that contain audio/video/text
Create/manage multiple types of content
Each content type will have different structure
Create dynamic pages based on different views of the content
Support ranking in some way
Support standard social networking capabilities ( facebook, RSS, affiliates )
[Explore more elaborate crowdsourcing capability**]
Not focused on ecommerce components yet ( shopping carts etc.)
Learning Strategy going in
Start with Drupal.org site:
Try to learn the concepts and features
Google and youtube into the Drupal websites/videos:
especially for tutorials
Talk to Drupal people live about Drupal life
Buy at least one book
Communicate with the Drupal online community
As I find the best resources, drill down and leverage them more.
THe resources I used
It was frustrating at first: The Drupal site seemed opaque and complex. But I eventually found some good video tutorials from NodeOne and LevelTenDesign that got me started.
http://nodeone.se/blogg/learn-drupal-7-sceencast-series-summed-up
http://www.leveltendesign.com/tutorial/video/drupal-7-tutorial-list-fields
Then to learn how the system is structured, I used the Drupal.org docs
It’s extensive, a little unwieldy, but I was able to find the answers to most of my questions ( What’s a “node”, a “block”, a “region” etc.)
I also bought the book: “The Definitive Guide to Drupal 7” (Haven’t used it much)
Various contributors
“Lots” of Drupal sites: Acquia, DrupalGardens, etc. etc.
MOre Resources
I only recently learned about the local Drupal group.
http://groups.drupal.org/santa-cruz
They seem to be an active group of Drupal website developers
In my first meeting I learned a lot, including the source of extensive tutorials:
http://drupalize.me/videos/
http://buildamodule.com/
These are paid-for tutorials, but the price is low ( ~$30/mo) and the quality is good
Most recently: Mustardseed: (espeically for media)
http://mustardseedmedia.com/podcast/episode50
About the “Features” • Create an ‘elegant compelling’ theme and UI:
Navigation and Menus are straight forward to set up
Modern menus: seem straight forward (Nice Menus or Suckerfish)
However after installing Nice Menus and getting it to work, behavior needs tweaking
Theme (layout + look) : Next to media handling , definitely the largest cost if you create your own
Bad news: if you use D7, and don’t want to code a lot, the contributed themes that I found are not great ( maybe I didn’t look in the right places)
Good news: Drupal Theme architecture is somewhat “modular”, so if you are CSS/HTML/PHP savvy, you can develop your own. For me, this would be big learning curve, and if you’re an expert, requires a lot of effort also
I learned that in order to customize a Drupal theme:
I at least need a css editor ( thinking CSSEdit or firebug lite; any opinions?)
About the “Features” • Allow members to submit articles that contain
audio/video/text
Well, Drupal is a CMS. If it can’t signup members and they can’t submit articles,.........%$#@&^&
(Minor point: When I tried to add users, email conf did not work locally)
Members can submit articles, but the only built-in media handling is embedded video code from Youtube, etc. (i.e. very weak)
About Media: The Great Rabbit Hole of Drupal 7 : It’s a dizzying experience.
I tried hard to use the new Media Module: Found a technique that requires 7 specific related modules and yet produces a weak solution ( frustration + time warp)
Can get help from the developer community, irc channel and Media group but this is time consuming and doesn’t necessarily yield a good strategy
Many solutions to music - they’re mostly weak
However after much research and work, I did find a solution: MediaElement Module + MediaElement.js
About the “Features”
• Create/manage multiple types of content
• Create dynamic pages based on different views of the content
The Wheelhouse of Drupal: This is one area where Drupal really shines!
• Whatever content types (structures) you CAN construct, it’s easy to:
1. Create different content types (structures)
2. Create/manage different views of the content structure and substructure
About the “Features”
• Support ranking in some way
There isn’t a lot out there for D7 except the very basics
I have not yet found a really good ranking type module
I installed Voting API + Fivestar and got it to work for ranking (modulo some minor behavioral problems)
• Support standard social networking capabilities ( facebook, RSS, affiliates )
I researched this but didn’t spend a lot of time on these issues
But what I did read and try seemed to be relatively straight forward
Bottom line, not a big concern - but again only basic capability
•Crowdsourcing Capability
There are some crowdsourcing tools/techniques besides hosted solutions
There is the Ideation Module, but I haven’t gotten to this area yet
Lessons learned (for my Specific goals)
About Infrastructure Issues (Site maintenance):
To maintain a site, I’ll need more tools Drush, Git, Cpanels and more) and MUCH more time
GIT is a distributed version control system and more ( has GUIs)
Drush is a command line interface
CPanels for server interaction
To maintain a site(s), it will require a lot of work ( updates to Core, version control etc.)
About Website Feature Development
Membership management is built-in, very powerful, easy to use*, and scalable
Content management is built-in, very powerful, and easy to use*, and scalable.
There are even modules being developed for node hierarchy and view hierarchy
Lessons learned (for my Specific goals)
• About Website Feature Development (Cont.)
Media handling is problematic and messy thus far in D7 - but there are “fair” solutions. Many approaches are very time consuming
Theme development is one the biggest costs in using Drupal 7 (and where the largest learning curve is for me)
This requires much deeper understanding of the Drupal architecture including templates, the API, and much more
For my purposes, both free and commercially available themes are weak
Even if you hire a themer, I anticipate it will be hard to collaborate in a cost effective way. This may be a business opportunity for a great themer
Create dynamic pages based on different views of the content is a big strength of Drupal. It’s easy, powerful, flexible
Standard Components (ecommerce, social networking, ranking, voting, tons of others) are mostly available in the form of modules, but usually only in their most basic form (implementation)
if you require high quality or more refined functionality, you probably need to do it yourself ( Custom work)
Lessons learned (for my Specific goals)
• About Resources
There seems NOT to be a dominant single comprehensive resource for learning
I use an array of providers/resources
Online tutorials, Drupal.org docs and browsing resources, Drupal community is very helpful. Books have not been that useful thus far. (More specifics are in the appendix).
Even the high-quality tutorial providers...........
BuildaModule, DrupalizeMe, Lynda, GotDrupal, NodeOne, MustardSeedmedia, Tutr.Tv, Acquia, yadadrop, and many more
....may have major gaps and overlap in the areas you happen to be interested in
• About Overall Drupal Life
Whether you’re a pro or not, there is a steep learning curve
As a Drupal user or developer, you will most likely get very involved with the broad and deep Drupal community, and also spend a good deal of time searching for and experimenting with Drupal modules, themes and tools
Results
‣ I spent a lot more time on this eval and have made less progress than I expected (way more than 25% of my time for the last 1.5 weeks)
‣ When developers use the word “Steep” in describing a learning
curve, they really mean it!! This is the main take-away for me.
‣ On the one hand, I’m amazed at how good an open source CMS can be!!!!
‣ I’m very impressed with the D7 software and Drupal community
‣ Drupal is a high-powered platform, with a good architecture, and a well-organized, savvy engineering community behind it (considering the challenge)
Results (cont.)
• Bottom Line:
‣ If you are a professional website developer already....
‣ If you need a CMS as part of your toolkit to develop a number of CMS-type sites, and willing to endure a steep learning curve, I think Drupal might be the best solution out there. (unless you want to pay huge software tool fees for commercial CMS’s)
‣ If you are a non-professional....(like me)
‣ If you only want 1-3 community-type sites, and the standard Drupal look and feel* is good enough,...and if you are willing to endure the learning curve, Drupal is potentially a good solution!
‣ If you need something beyond the standard Drupal site* (i.e. very basic community themes, features etc)., you are probably in for a big challenge.
‣ Of course this is probably true no matter what tools or CMS one uses
Next Steps for me... Since I am in the last category, this research leaves me in a bit of a quandary:
If I can’t find off-the-shelf themes and necessary modules (that are very close to my goals):
I’ll either need to spend a great deal of time theming,..or
hire someone,..
or use another CMS where I will encounter different tradeoffs.
My action plan:
In parallel:
Take a look at WP + BP: especially for themes with community capability
Intensify my search for Drupal themes that more closely match my targets
Consider spending a great deal more time on website design & development
the end,......thanks
Appendix: Most Useful Videos
• Best basic video tutorials
http://nodeone.se/blogg/learn-drupal-7-sceencast-series-summed-up
http://nodeone.se/blogg/taming-the-beast-learn-views-with-nodeone
http://www.leveltendesign.com/tutorial/video/drupal-7-tutorial-list-fields
http://drupalize.me/videos/
http://buildamodule.com/
http://gotdrupal.com
http://www.techievideos.com/videos/
http://www.lullabot.com/ideas/podcasts
http://geeksandgod.com/tutorials
http://drupaleasy.com/podcast
http://www.drupalove.com good aggregate
http://tutr.tv/
Appendix: Most Useful Videos (Cont.)
Best media related videos
http://www.youtube.com/watch?v=duuLlEVFves&feature=related
http://mustardseedmedia.com/podcast/episode50
http://tutr.tv/t5858
http://yadadrop.com/drupal-video/drupal-7-media-gallery-field-demo
http://www.mediafront.org/dallas-drupal-days-2011-presenting-media
http://www.youtube.com/watch?v=k7tbGXjMRWQ
Basic Theming
http://www.lullabot.com/videos/introduction-theming-basics-drupal-7
http://www.youtube.com/watch?v=sCg4sTA3DlQ
Appendix: OPen Issues
Ideas for SC Web :
projects: what if there was a core site or theme we wanted to collaboratively produce
I cant tell whether any of the starter themes (like adaptorTheme) are useful or not, curious
when installing views: got hanging but on second try worked
MediaElement allows me to set “number of values” in audio/video field only occaisonally. It hangs usually
What’s A CMS?
A content management system (CMS) is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based. The procedures are designed to do the following:
■ Allow for a large number of people to contribute to and share stored data■ Control access to data, based on user roles (defining which information users or user
groups can view, edit, publish, etc.)■ Aid in easy storage and retrieval of data■ Reduce repetitive duplicate input■ Improve the ease of report writing■ Improve communication between users
■ Makes its easy to do all of these things
■ As an Example: Dreamweaver has virtually none of this