Showing posts with label drupal. Show all posts
Showing posts with label drupal. Show all posts

Monday, November 14, 2011

Implementing High Performance Drupal Sites

The Main Aspect covered during the Session:

  1. What is “Performance”?
  2. Different Layers of Performance
  3. How to configure Drupal for Performance
  4. Writing Drupal Modules for High Performance
  5. Some Advanced Techniques & Caching Systems
  6. Event Based Caching
  7. Drupal 6 vs Drupal 7
  8. Performance in Drupal 8

Questions Asked after the Session:

Q: Why did you use Panels for the Deccan Chronicle Home, though Panels could be a performance hazard?

A: Panels with the support of Ctools provides us many features to build a page or mini panel with drag and drop, create own layout, etc. These abstractions/features make panels a heavy module to use. Yes absolutely true, but we need to balance user experience and requirement with performance. Hence Panels was to give better user experience to the Editor who manages the site. Being aware of the implication on performance, we planned the cache very effectively by using time based (tradition) and event based cache clearing systems. We enabled the cache in all panes and pages in the panels.

Q: Is  Boost a good option?

A: Boost is a good option for anonymous users and hosting is in shared environment, where you will not have option to install other advanced cache support modules like memecache or varnish. Boost will serve the cached static html files for the configured cache lifetime, once the lifetime expired static html page will be regenerated. When we compare Boost and Varnish, Boost caches the content and delivers it without disturbing MySql. Varnish works at a layer above Apache. Another difference is Boost uses the file system (disk) where as varnish uses RAM. Refer  http://groups.drupal.org/node/46042, http://cruncht.com/95/drupal-caching/. The benchmarking helps to decide that varnish is better than Boost. As the time old concept RAM is faster than Disk. So if you have infrastructure to install Varnish then Varnish is the better option.

Q: Writing custom query to get required information from node vs using node load

A: This question was in many of the developer's mind. node_load is a function which loads or constructs the node object by querying the database. This function uses static variable so if the node object is constructed once, then from next time it will be serving the node object from the static variable (static variable life time only limited to a single page load). Now we see how to decide on node_load or querying the table, this is depends on the use case I suggest. The Answer is written with Drupal 6 in mind.

In a page if you want to list ten other titles written by the author of the node we are viewing, then go for Querying the table. This is because we only need to query a single table to get this information. Node load will be a overhead, considering there will joins with the node revision table, CCK fields table.

In other case you want to display list of node snippets (set of fields like title, teaser, date of node, configured fields etc. ) In this case we should use node_load, because node_load not only loads the node object from the database, it runs required on the node object. Some examples could be alternation in the teaser length or changing the date format etc.

Q: Do we use cache_clear_all() or clear the cache based on CID?

A: While writing code to clear the cache in our module always prefer to call Cache_clear_all by passing the CID and table name, by this only the cache content of the CID in the table will be get cleared. Or if you want to clear many rows you may use the wildcard option provided in the function.. In other case if you call cache_clear_all without CID and table, all expired cache content from cache_block and cache_page tables will get cleared (In case you have not assigned minimum cache lifetime then all temporary cache will get deleted). If you are storing the cache in other tables it is required to specify the table name.

We used this concept while creating event based caching system with in our application.

Note: Use Cache_clear_all() with out arguments only if required, as if not used properly it may defeat the purpose of caching.

Q: How do we show the dynamic content when we cache?

A: When we cache the content for a lifetime 10 mins, then your user will get the static content from cache for first 10 mins. After the expiry of the lifetime 10 mins, cache will be rebuilt and new content will be shown. If you don't want your user to wait for 10 mins to get the new content, then may choose from other available option is using Ajax to load the dynamic content considering the impact.

Sunday, July 31, 2011

Drupal and Mobile Apps


Today having a website is synonymous to being accessible in all devices. Drupal is being used as the backend Data store for a large number of Mobile Apps. Mobile Apps could be Iphone Apps, Anroid Apps or specifically for Blackberry.

The two modules that are being widely used in building Drupal based Mobile Apps are Services and View Data Source modules.

Services Modules

Services Module allows you to expose drupal data to external websites or Mobile applications. Earlier Services was used to integrate Flash with Drupal, today most of the use cases of Services module are for Mobile Apps, where Drupal acts as the backend. The power of services module is that it has multiple interfaces and hence brings with greater flexibility. The Programmer can focus on handling the content while Service takes care of the json response in appropriate format.

The Main components of the Services module are:

Servers: That Receive and Send requests
Authentication Layer
Services: These Process data that need to be pulled out of the Drupal backend

Link to Module Page: http://drupal.org/project/services

Views Data Source

This module allows you to render out put from various views in a variety of formats. The Module is extremely simple to use: Create a view as required, choose page display and one of the Views Data Source formats.

Link to Module page: http://drupal.org/project/views_datasource

Reference links:

http://www.lullabot.com/podcasts/drupal-voices-105-greg-dunlap-on-services-module-and-mobile-apps
http://www.lullabot.com/podcasts/drupal-voices-208-pat-teglia-on-developing-mobile-apps-with-titanium-framework
http://www.lullabot.com/articles/module-monday-views-datasource
http://chicago2011.drupal.org/conference/bof/mobile-apps-use-drupal-backend-w-services-modules-nysenate
http://groups.drupal.org/mobile

Friday, December 17, 2010

DrupalCon Session: Maintaining the codebase and updates of a Drupal Website

Drupal stores most of the configurations and settings in the database. Deploying and Managing a Drupal website requires both code updates as well as interface updates. Changing permissions, adding fields to your content types, modify an existing view, installing and configuring a new module are some of the typical interface updates that needs to be moved from the Development Server to the Test servers and then further in the Live servers. In this session I would like to present solutions that would facilitate the update process to be people independent and totally maintained under version control.

Want to Checkout solutions to ease the maintenance of a Drupal Website VOTE FOR my DrupalCon Session at http://chicago2011.drupal.org/sessions/maintaining-codebase-and-updates-drupal-website

Questions answered by this session would include:

How to have a Drupal update process that is people independent and totally maintained under version control? 
Question 2: 
How to use Drush to improve the Update Deployment Process for a Drupal website? 
What are Features and Strongram modules? 
How to use update.php to trigger database script updates? What are the cache flush routines that need to be called after the database updates? 
What are status of Drush, Features modules in Drupal 7?

Drupal Workshop for Academicians and Researchers at NCAR


It was indeed a unique experience presenting and conducting a Workshop on Drupal to a group of Academicians and Researchers. The Workshop was organised by Free Software Movement of India at NCAR Hyderabad, India. It gives me great pride that I participated in a Workshop that was inaugurated by Dr. A.P.J Abdul Kalam.
Siva from Drupal Hyderbad and I conducted this Workshop together. We only met in the morning, but we were so much in Synch and Conducted the workshop as though we had always worked together! Wondering what brought this togetherness, it was ofcourse the fact that both of us were Drupalers! Drupal brought us together.

Both Siva and I had short Presentations and we also helped our participants have a handson on Drupal, trying out a Drupal installation from scratch, changing the theme, enabling modules and actually feeling the power of Drupal.


My Presentation

The most exiting part of these Workshops are always the Question Answer Sessions. Some of the interesting Questions were:

How can Drupal help Academicians and Researchers?
How is Drupal different from Moodle?
How can I change the look and feel of my Drupal site?
How do you install new modules?

Thursday, November 25, 2010

Drupal's Installation Profiles

What is a Drupal installation Profile?

It is a set of Drupal modules, predefined themes, configurations bundled together into a single installation. When you install this bundled installation, all the modules in it will get installed, preconfigured and you have a ready to use Drupal website. These installation profiles could cater to specific requirements that Drupal could be used to meet, like a Newspaper website, a Wiki Website, an Intranet portal, etc. Check out Drupal Installation profiles at http://drupal.org/project/installation%2Bprofiles

Components of a Drupal Installation Profile

Install profiles are located in the 'profiles' directory of a core Drupal installation. They are named profilename.profile. A profile will contain the below set of Functions:

profilename_profile_modules() - This function defines all the modules that get installed with the profile. First the Core modules are installed, followed by Contributed, followed by Custom modules.

profilename_profile_details() - This function defines the name and a short description of the Profile. The Default profile is the Drupal profile that comes with every Drupal installation.

profilename_profile_tasks() - At this stage the modules specified in profilename_profile_modules() have been installed. And you have access to the full Drupal API so you could define any custom content types, create vocabularies and terms, change variable settings to your liking, etc

We could have database updates like:

1) Set configurations (variable_set)
2) Create predefines roles and access control
3) Create preconfigured Menus
4) Create preconfigured Blocks and CCK
5) Create preconfigured content or content types
6) Configure predefine theme

This should be followed with Cache clear and Database rebuild.

1. Rebuild menu
2. Clear Cache: run cron to clear cache or write explicit cache clear code as in the systems.module in Drupal core
DONOT use drupal_flush_all_caches(): would result in all themes being disabled
3. Based on the contributed modules enabled, we must also make sure and handle any other table that requires a rebuild following their installation.

Reference: Writing a Drupal installation Profile Handbook Page

Supporter modules:
Installation Profile API
Profile Generator

Why Create Drupal Profiles?

Drupal Profiles provide a easy maintainable suite that can be replicated for multiple users. The readily available Installation Profiles in Drupal allow a quick and easy base website.

Some Good Installation Profiles:
Drupal Commons Maintained by Acquia: This Profile provides social business software providing organizations with a complete solution for forming collaborative communities.

Open Publish: a packaged distribution of the popular open source social publishing platform, Drupal, that has been tailored to the needs of today's online publishers and Newspaper companies.

Related Links:
http://www.lullabot.com/articles/5-step-drupal-distributions
http://www.lullabot.com/podcasts/lullabot-podcast-75-drupal-distributions-and-features
http://buytaert.net/drupal-distributions
Business models around installation profiles: http://buytaert.net/on-business-models-for-drupal-distributions
Acquia partner ship programs around Drupal distributions: http://acquia.com/blog/drupal-software-publishing

Wednesday, August 25, 2010

Drupal 7 and it’s Extremely friendly and Intuitive Admin interface

What's in Drupal 7? Most definitely an extremely friendly and Intuitive Admin Interface!

My first impressions of Drupal 7 as Drupal Admin:

1. Extremely friendly and Intuitive Admin interface!
2. More Trendy: Extensive use of Jquery, a very interactive design
3. Navigation: Multiple Navigation points

Improved and Multiple Navigation points like:

1. Tool Bar (The Admin menu in Drupal 6)
2. Dashboard
3. Shortcuts and
4. Contextual links!
5. Admin Interface with additional TAB interface
6. Use of Overlay to display information
7. Vertical tabs in the content edit interface


Some Key Functionality in Drupal 7 core:

1. Better media handling - Image filed and Image cache is in Core
2. Custom content types in core
3. WYSIWYG Editor
4. Better Performance
5. Better tools to structure/organize content
6. Basic Views like module

Also in Core implies all these will be maintained by the Core team and be available with Drupal releases!

Reference Links:
1. Creating Drupal 7.x modules
2. Theming Drupal 6 and 7
3. Converting 6.x themes to 7.x
4. Converting 6.x modules to 7.x - Categorical
5. Menu path changes from 6.x to 7.x
6. A peek at Drupal 7 theme system changes

Thursday, February 18, 2010

Contribute to Drupal

Contributing to Drupal could be fun! It amazing the way Drupalers collaborate online to as much as have Drupal, Drupal's contib modules, and now the Drupal redesign. The power of Drupal, to promote Drupal!

Working in the community and all of your sudden your horizon seems extended, you are connected with people you have never met before. You are working together as though you knew each other for so long.

Being with people brings you joy. It's amazing to discover the joy of being with them online! I am thoroughly enjoying collaborating online for Drupal.

The different channels you can collaborate on:
IRC: Drupal in IRC and Firefox addon for IRC, Discussions online, Groups, Google groups.

Join and contribute, Check out: Drupal Redesign Implementers page

Monday, January 18, 2010

DRUPAL VIEWS - Important points and Optimization



Drupal Views is an extremely useful Query building tool! Drupal Views brings with it a great amount of flexibility to the way existing content can be displayed on a particular website.

This article highlights some important points to remember before creating a Drupal View. The concepts are explained with respect to a News paper site as example.



The Basic elements of a Drupal Views include:
  • Base Tables - Node tables, Comment tables, user tables, etc.
  • Fields - information that gets displayed
  • Filters - the criteria based on which the information is querried
  • Sort criteria - the criteria based on which the content is sorted and displayed.
  • Arguments - variable filters that can be changed dynamically when the view is constructed.
  • 'Relationship - integrating with custom tables
POINTS to remember:
  1. Reuse Views and use FILTERS as ARGUMENTS - Using Filters as Arguments lets the view display contextual content. In a Newspaper site the same view can be used multiple times for various taxonomies, taxonomy being an argument. The BLOB size of the VIEWS TABLE is very large, reducing the number of views helps in maintainability and in Performance by reducing the View table size. A couple of use cases of Arguments in Views for a Newspaper site:
    1. In the home page of a Newspaper a Single view with multiple sub channels - a single view can be used, the result obtained by passing the corresponding sub channel taxonomy can be displayed sequentially.
    2. In an Article page, the article tags can be passed as arguments to the same view to display related content based on that particular article.
  2. Typical filters to include are 
    1. NODE type == Published, 
    2. Node Article Type, 
    3. Node Created date.
  3. Always define what should happen if a view returns a 'Null value'. Typically define a message/page  it should take you to and display a specific message.
  4. While defining Arguments, define what should happen if there were no arguments passed to the view. This could be 'All values' or a Page not found, etc.
  5. UNDERSTANDING the query associated with a VIEW: In Drupal 6 you can Preview a VIEW while you are still building it. In Drupal it's so easy to construct a view and most of the time take it for granted. Below are some key points that will help you understand the View Query and give some pointers as to what to look for.
    1. Pager Query - In this case there are 2 Queries that run - one to count the total number of records and build the pager, second the Query to obtain the first set of records for that page.
      For a block/ page view with a count or limit there is only one Query.
    2. Based on the fields displayed, the filters selected and the sort criteria defined, the JOINS in the Query will be constructed. Some examples:
      1. If the filter is CCK field there will be a INNERJOIN to the corresponding CCK table



        SELECT node.nid AS nid,node.title AS node_title,
         node_data_field_article_date.field_article_date_value AS node_data_field_article_date_field_article_date_value,
         node.sticky AS node_sticky,   node_weight.sticky AS node_weight_sticky
         FROM node node 
         LEFT JOIN term_node term_node ON node.vid = term_node.vid
         LEFT JOIN content_field_article_date node_data_field_article_date ON node.vid = node_data_field_article_date.vid
         LEFT JOIN node node_weight ON node.nid = node_weight.nid
         WHERE (node.type = 'article') AND (node.status <> 0) AND (term_node.tid = 4)
         ORDER BY node_data_field_article_date_field_article_date_value DESC, node_sticky ASC, node_weight_sticky DESC



      2. For a SORT criteria as most commented the INNERJOIN to the comment stats realted table



        SELECT node.nid AS nid, node.title AS node_title,
         node_comment_statistics.comment_count AS    node_comment_statistics_comment_count
         FROM node node 
         INNER JOIN node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid
         WHERE (node.type in ('article')) AND (node_comment_statistics.comment_count > 0) AND (node.status <> 0)
         ORDER BY node_comment_statistics_comment_count DESC
        



  6. OPTIMIZING the Queries:
    1. Make sure all the fields that are used for SORTING are indexed, especially if it is a custom table.
    2. If there is an explicit limit to the VIEW please define the same.
    3. If a part of the VIEW cache-able , then split the VIEW into Cache-able element that is stored in a cache table and Dynamic parts as a separate view.
    4. Use VIEWS' inbuilt time based caching mechanisms, or write custom cache code using Drupal's cache get and Cache set functions.
    5. The Query optimization is based on which tables are Large. Typically in Drupal some of the Large tables are the Node related tables, Comment related tables, Taxonomy related table, Files related tables, User related tables. This also depends on the site and it's purpose.
EXAMPLE of a slow Query - Option 2:

In the case of a large Node table - Option 1 will take less time to execute as the 'Where' clause filters the IDs in the Node table first and then filters based on the tid, which is stored in another table.

VIEW Query Option1:

SELECT node.nid AS nid,
   node.title AS node_title,
   node_data_field_article_date.field_article_date_value AS node_data_field_article_date_field_article_date_value,
   node.sticky AS node_sticky,
   node_weight.sticky AS node_weight_sticky
 FROM node node 
 LEFT JOIN term_node term_node ON node.vid = term_node.vid
 LEFT JOIN content_field_article_date node_data_field_article_date ON node.vid = node_data_field_article_date.vid
 LEFT JOIN node node_weight ON node.nid = node_weight.nid
 WHERE (node.type = 'article') AND (node.status <> 0) AND (term_node.tid = 4)
   ORDER BY node_data_field_article_date_field_article_date_value DESC, node_sticky ASC, node_weight_sticky DESC

VIEW Query Option 2:
 
SELECT node.nid AS nid,
   node.title AS node_title,
   node_data_field_article_date.field_article_date_value AS node_data_field_article_date_field_article_date_value,
   node.sticky AS node_sticky,
   node_weight.sticky AS node_weight_sticky
 FROM node node 
 LEFT JOIN term_node term_node ON node.vid = term_node.vid
 LEFT JOIN content_field_article_date node_data_field_article_date ON node.vid = node_data_field_article_date.vid
 LEFT JOIN node node_weight ON node.nid = node_weight.nid
 WHERE (term_node.tid = 4) AND (node.type = 'article') AND (node.status <> 0) 
   ORDER BY node_data_field_article_date_field_article_date_value DESC, node_sticky ASC, node_weight_sticky DESC
 

Other Resources on Views

VIEWS Handbook page: http://drupal.org/node/109604
VIEWS useful links: http://www.lullabot.com/articles/hacking-views-part-1-basic-concepts
VIEWS 2 - Building Views with Fivestar and Voting API modules: http://www.lullabot.com/videocast/building-views-fivestar-and-votingapi

Saturday, January 9, 2010

An Introduction to Drupal

An Introduction to Drupal - presented to students from engineering colleges at Free Software Foundation, Tamil Nadu meet at IFMR, Chennai. I was so excited to present Drupal to a bunch of FSF students, who where involved in presenting various Free softwares they were working on. I followed my presentation with a short Demo of installing Drupal.

Presentation path
  • History of Drupal
  • Principles of Drupal
  • Drupal’s structure
  • Key terminologies in Drupal
  • Trends in Portals – Web 2.0 & Web 3.0
  • Showcase websites in Drupal

Tuesday, August 11, 2009

Performance and Drupal

As we worked towards some exciting performance gains, some of our learning

  1. Use Drupal's Page Cache
  2. Run Mysql tuner to understand how Mysql responds to your site
  3. We never had in our page/panel or block a code rendered directly from a view, all our view results were cached. The lullabot article on caching, The Beginners guide to caching could be a very good starting point.
  4. Do not panic by large no of queries, the queries with longer execution time are critical - we focused on the ones on our large tables - NODE, session, user, log, taxonomy tables
  5. Queries with inner joins or distinct clause were also marked and reviewed
  6. We had large benefits by restricting the log size, periodic clearing of the session tables
  7. We did add a patch for Drupal look up path and url redirect, will have that appended to this list.
  8. We moved from Drupal search to Google search!
  9. USE of PHP accelerator is a must

Checkout:
  1. Server tuning considerations: http://drupal.org/node/2601
  2. http://2bits.com/articles/performance-logging-module-log-performance-statistics-drupal.html
  3. http://blamcast.net/articles/speed-up-drupal
  4. http://buytaert.net/drupal-performance

Monday, February 23, 2009

Checklist for any drupal site LIST 1

While creating the website:

1. List modules used
2. Do not write code in block or page, use custom module
3. Always create code for no script when using java script
4. Use Devel to understand the queries in the website a must especially for home page
5. Check Y slow performance parameters
6. Use captcha
7. SEO

a) Seo site map validate urls (make them meaningful :))
b) Add Google Analytics, to enable tracking
c) meta tag module, to add meaningful meta information
d) xml site map
e) h1 tag
f) introduce image naming convention

Pre Launch:

8. Enable HTML caching for anonymous users
9. Load test the website
10. Check error log in staging

Before Launch:

11. Install PHP accelerator
12. Configure Auto log out and session time
13. Run cron for archives
14. Schedule cron
15. Configure error log not more than a week
16. Schedule back up of database, particularly the log table
17. Admin password protect

Friday, January 16, 2009

Happy Birthday from Chennai, India!

I am so excited Drupal turn's 8 Today. Happy Birthday!

Drupal's 8th birthday!

You can do so much with Drupal.
I love Drupal :)

Wednesday, December 3, 2008

I am in love with open source again

It's awesome the way people collaborate and share their views and ideas in Open source. Every one from totally different backgrounds with only Drupal as their commonality are discussing at Drupal redesign iteration 9: http://groups.drupal.org/node/17106

http://drupal.markboultondesign.com/iteration10/homepage_notloggedin.html.

The best part of the discussion is everyone out there actually gets to read and evaluate others perspective without prejudice! To have such discussions in a real time environment with people face to face, having each one to listen to the other would be such a challenge. It's so beautiful to just watch this happen, let alone be a part of it. I just love the way we can collaborate online, I love Open source :)!

Wednesday, October 29, 2008

Static File Servers and Drupal

Any call to a Drupal site has two aspects associated with it:

The Dynamic HTML that gets created on access of the website + the static elements (like css, js and other images) that are embedded in it.

A request to the a website from a browser = Dynamic HTML call to the web server + one call each for every associated static element in the HTML to the same web server.

The amount of memory required to serve a Dynamic request is much more than that of the static file requests. More over in Apache the same memory will be utilized to serve static files as well. To avoid this we can place all static files in a separate Web server and configure the this server to handle static requests. This will greatly improve the performance and scalability of a Drupal website.

A Drupal site with lots of modules installed that handles a lot of data from the database can easily require 64M of memory per thread. This is a huge expenditure of memory compared to the 1-2M it takes to serve a static file. Since Apache recycles its worker threads, you end up in a situation where the same 64M monster that created the Drupal HTML is also used for serving a .jpg file. This is a huge waste of resources.


Refer: http://www.lullabot.com/articles/using-lighttpd-static-file-server

For a private server the needs are different. The static file become applicable for the images and css and js files associated with HTML but for the main application we need to use Private files. Private files makes the file handling process itself dynamic, where in we will require to use PHP to identify permissions and the location of the files. This is handled by a separate menu call back in Drupal. We can not use static files for this purpose.

In this case we are looking at three approaches:

1. To handle files to be placed in any physical directory (not in the root)within the same server

2. To handle files to be placed in any physical directory (not in the root) in a different server - here we are using the FTP protocol to access and place files in the file server. This is a custom code written by us.

3. To handle files to be placed in any physical directory (not in the root) in a different server - using Curl

Questions that arise - Which of these are scalable? Which is most secure?

Wednesday, October 15, 2008

The Semantic web and Search

The semantic web is a vision of information that is understandable by computers, so that they can perform more of the tedious work involved in finding, sharing and combining information on the web, closer to how a user would look for information.

Achieving this would indeed awesome. Imagine the power on our searches. With all our websites having so much of information how the user could benefit from Semantic search. Dries article and what the SearchMonkey video demonstrates sums it all up! The trend in Searches today, read on ...

Here is what Dries Buytaert says about Drupal, the semantic web and search
What if instead of having a custom indexer designed just for Pivots we had a rich indexer with lots of meta information and semantic tagging.

Here is another example. Imagine a standard Drupal node-type called 'job'. The fields in the job node-type would have RDF properties associated with them mapping to salary, duration, industry, location, and so on. Creating a new job posting on a Drupal site would generate RDFa that semantic search engines like Yahoo!'s SearchMonkey would pick up and the job would be included in their world-wide job database. Read more...




SearchMonkey is Yahoo! Search's new open platform.

Using SearchMonkey, developers and site owners can use structured data to make Yahoo! Search results more useful and visually appealing, and drive more relevant traffic to their sites. Read more...

Sunday, October 12, 2008

Nagarajan in Drupal Chennai

I am proud to announce that my colleague Nagarajan has started a Drupal Blog. He has expert knowledge in various aspects of Drupal! For a very informative nice article on Performance improvement guidelines for Drupal sites, visit: http://nagarajan-drupal.blogspot.com/

Sunday, October 5, 2008

Drupal in 2001

This is how Drupal looked in 2001, it was called Drop ("dorp" - village in Dutch) then!

Saturday, September 27, 2008

Active Threads at Drupal Redesign

Searching for Modules and Themes with certain characteristics - Imagine having all the Drupal modules tagged and we can just go to a module page, have all the related modules, tags listed!! This thread is a discussion on grouping modules and theams!!

Replace Drupal Planet and Drupal Talk with Drigg --- Didn't know about Drigg until I started following this thread! Drigg is Drupal and DIGG together!

For some one who loves Organic Groups, drupal.org projects as Organic Groups !

OG is definitely a great idea. All subscribers should get mails and notification on any updates in the issue queue, bug report or support report if subscribed too.

We should have a tab to describe the architecture of the module, the scope for future hooks or growth, this could be a wiki and we can have discussion forums around it. Group for every module saying Redesign plan for the module_name will definitely be of great use for developers to colloobrate and expand the modules. Forums must be used only to collaborate new ideas or working on a new feature, like this group? We should not under value the effectiveness of the issue queue and support request.
Click here to read more.

Another interesting thread, My vision for Drupal.org's project pages by johnforsythe@drupal.org

Join the discussion and be a part of the Drupal redesign!

Saturday, September 13, 2008

Drupal Redesign the Drupal way!

I am a BIG Fan of Drupal, not just the application, but the concept, the community, and how Drupal drives the community. Isn't all this brilliant? How can one have a Web 2.0 without experiencing it. I think this is clearly the advantage that Drupal has given me, far superior than the brilliant architecture and the wonderful piece of code. I feel extremely Proud in being a tiny part of this community. Being a part of a business organization gives me very little time, but in this little time I try and participate in the community in every possible way. I share my learnings, participate in the forums and IRC chat, create awareness and build a community of fellow drupalers in my home town, Chennai. The different avenues that Drupal uses to share with the community has helped me keep abreast and given me a feeling of belonging in the community.

Checkout and be a part of "Drupal.org redesign officially underway". Join the Group:Drupal.org redesign plan for the Drupal Association. Follow them on twitter at http://twitter.com/drupalredesign. Be a part of the exciting happening in Drupal redesign.

Drupalcon Redesign Keynote
From: markboultondesign, 5 days ago
SlideShare Link

Tuesday, September 9, 2008

Mashups and APIs:

The Lullabot Podcast no 63 - A Very informative Podcast!

Summarizing the Podcast - the main topics covered:

1.RSS feeds and Atom Feeds ->
Is a request for a file on another server.
RSS feeds can be generated using Views and can be aggregated on a Drupal site using the Core aggregator module.

2.SOAP - Simple Object Access Protocol (services API)
and XML RPC

Ways to call a function in another server -> add a new blog post or any specific functionality in another site, programmatically interacting with other sites You connect to the server and ask for a command (method based) calling a function and you can expect a response (what you want to do?)


These are messaging protocols that can talk between webservices!

The Services module provides for these features.

A standardized solution of integrating external applications with Drupal. Service callbacks may be used with multiple interfaces like XMLRPC, SOAP, REST, AMF. This allows a Drupal site to provide web services via multiple interfaces while using the same callback code.


3. REST - noun based, object (which object, what you want to do?)

REST APIs more efficient as with REST there is no XML conversion involved. On calling a specific URL all the parameters are passed by Get request. For exchanging a large amount of info this is not good.

Ficker, Amazon provide such APIs for us to use their services. Though they open out their APIs they still do not loose their clientèle. In fact contrarily, it helps them widen their reach.

4. JASON APIs – Packets for exchanging information, array full of data. JavaScript used to access the information. No XML, easier to send back the format that can be directly used.
Google mail exchanges information in this manner.

5. AAHA ( get HTML) JavaScript running to get HTML
AJAX ( get XML) only for complex stuff!! Client side parsing of the XML and converting it to HTML

6. RDF is single resource description format. A way of storing chunks of information, like RSS or custom XML packages. Standardize information exchange using micro formats.
Protocols used - XMLRPC, Jason, …
Format of the info - RDF or RSS
RDF is a very generalized format.

7. Drupal and Mashups: How do we use these concepts in a Drupal site?

What we can do is to take data from different websites and present it on our websites, then it is called a Mashups!

8. Gmap.module is used for displaying spatial data on Google Maps.

View Demo at: http://www.chicagoancestors.org/

For more discussions on ‘The State of Geo spatial in Drupal’ join: Groups.drupal.org/node/12485

9.Amazon module, Amazon associate toolsare some modules that help us use the Amazon APIs

10. For an entire list of Mashups and integrations visit the modules repository for 3rd Party Integration. There are over 300 modules for doing these integrations.

11. A tip for module developers while creating these integrations is to provide as much access to the APIs, even if it does not have helper functions to use the same.

The Lullabots also presented a neat example of a Mashup during the Podcast:

A web page of your twitter updates that are linked to Google maps based on where you are posting the twitter update and also to your flicker under the same location as classification!


I truly enjoyed this Podcast. It was a very current and detailed podcast. Not only did it cover the technical details of Mashups and APIs but also brought in relevant examples and application into it. It brought a perspective as to where Drupal fits in the scenario as well.

Search This Blog

Chennai Drupal Community

drupal.org - Community plumbing

Shyamala's Drupal SEO