280 likes | 423 Views
Drupal: First Blush. A newbie ’ s first serious look by: Craig Harris CraigWHarris@comcast.net. My Background. Very experienced in non-web software:
E N D
Drupal: First Blush • A newbie’s first serious look • by: Craig Harris • CraigWHarris@comcast.net
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: • Create different content types (structures) • 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 managementis 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
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