(→Environment overview) |
|||
| (42 intermediate revisions not shown) | |||
| Line 1: | Line 1: | ||
| - | = | + | = 1. Introduction = |
| - | + | == Team and developers == | |
| - | + | '''Current team:''' | |
| - | + | ||
| - | Current team: | + | |
* Teemu Lukkari (production manager) | * Teemu Lukkari (production manager) | ||
* Graham Honeywill (account manager) | * Graham Honeywill (account manager) | ||
| Line 10: | Line 8: | ||
* Ronan MacLaverty (product owner from Nokia) | * Ronan MacLaverty (product owner from Nokia) | ||
* Michael R. Shaverty (Drupal developer and hosting provider from Intel) | * Michael R. Shaverty (Drupal developer and hosting provider from Intel) | ||
| - | + | '''Other persons involved before:''' | |
| - | Other persons involved before: | + | |
* Mikael Kundert (drupal developer) | * Mikael Kundert (drupal developer) | ||
* Andrew Burcin (drupal developer) | * Andrew Burcin (drupal developer) | ||
* Jakub Suchy (drupal developer, API docs) | * Jakub Suchy (drupal developer, API docs) | ||
| - | + | ||
| + | == Project managing tools == | ||
Project was initially managed in Redmine hosted by Activeark. Redmine's issue tracking was replaced with MeeGo's Bugzilla at http://bugs.meego.com. In Bugzilla, site bugs are categorized under product "developer.meego.com". | Project was initially managed in Redmine hosted by Activeark. Redmine's issue tracking was replaced with MeeGo's Bugzilla at http://bugs.meego.com. In Bugzilla, site bugs are categorized under product "developer.meego.com". | ||
Drupal source is managed by using GIT. *Source code is public and should be available at Gitorious*. See link for the repository: http://meego.gitorious.org/meego-web-infrastructure/meego-developer-website | Drupal source is managed by using GIT. *Source code is public and should be available at Gitorious*. See link for the repository: http://meego.gitorious.org/meego-web-infrastructure/meego-developer-website | ||
| - | + | == Environment overview == | |
| - | Michael R. Shaver from Intel is responsible for hosting. | + | Michael R. Shaver from Intel is responsible for hosting. Developer.meego.com is hosting at Oregon State University (OSU) |
'''Production and staging environment''' | '''Production and staging environment''' | ||
| Line 28: | Line 26: | ||
Production and staging environment are in the same server. No passwords are used, instead we are using SSH public keys which should be provided to Michael when server access is needed. | Production and staging environment are in the same server. No passwords are used, instead we are using SSH public keys which should be provided to Michael when server access is needed. | ||
| - | Production site is mapped to document root " / | + | Production site is mapped to document root "/data/sites/hthome/developer.meego.com/htdocs" and uses " dev_meego " database/name. Folder is linked to repository and should contain latest stable snapshot of site. |
| - | Staging site is mapped to document root " / | + | Staging site is mapped to document root "/data/sites/hthome/dev.developer.meego.com/htdocs" and uses " dev_dev_mego " database/name. Folder is linked to repository and has latest state of the site. |
'''Development environment''' | '''Development environment''' | ||
| Line 36: | Line 34: | ||
No centralized development environment provided. Development happens locally. | No centralized development environment provided. Development happens locally. | ||
| - | = | + | = 2. System architectural design = |
Intel is currently responsible of hosting. The contact person for hosting is *Michael R. Shaver* from Intel. | Intel is currently responsible of hosting. The contact person for hosting is *Michael R. Shaver* from Intel. | ||
| Line 48: | Line 46: | ||
* PHP 5.2.13 | * PHP 5.2.13 | ||
| - | + | == Database architecture == | |
| - | Site uses Drupal's default structure, collation, storage engine. | + | Site uses Drupal's default structure, collation, storage engine.<br/ > |
| - | + | Staging site is not using shared tables.<br/ > | |
| - | Staging site is not using shared tables. | + | Production site is using following database settings:<br/ > |
| - | + | ||
| - | Production site is using following database settings: | + | |
<pre>$db_prefix = array( | <pre>$db_prefix = array( | ||
'default' => '', | 'default' => '', | ||
| Line 66: | Line 62: | ||
'''Note!''' When synchronizing content from production site, you will be required to set node.uid to value 1 and clear cache to ensure availability of content. Nodes doesn't get loaded when user is not available (uids are different in production since we're sharing users table!). | '''Note!''' When synchronizing content from production site, you will be required to set node.uid to value 1 and clear cache to ensure availability of content. Nodes doesn't get loaded when user is not available (uids are different in production since we're sharing users table!). | ||
| - | + | == Software architecture == | |
Site is using Drupal's distribution *Pressflow* , because of better performance. Project uses PHPTemplate as template engine. | Site is using Drupal's distribution *Pressflow* , because of better performance. Project uses PHPTemplate as template engine. | ||
| - | '''Modules''' | + | '''Modules'''<br/ > |
| - | + | ||
Contributed modules are located in @./sites/all/modules/contrib@. | Contributed modules are located in @./sites/all/modules/contrib@. | ||
Custom modules are located in @./sites/all/modules/custom@. | Custom modules are located in @./sites/all/modules/custom@. | ||
| Line 78: | Line 73: | ||
Most of custom modules are generated by Features module, but they might contain also alternative code in .module files made by developers. | Most of custom modules are generated by Features module, but they might contain also alternative code in .module files made by developers. | ||
| - | + | == Search == | |
Site is using external search indexing from [[Documentation#Acquia-Network|Acquia Network]] which provides apache solr search index. | Site is using external search indexing from [[Documentation#Acquia-Network|Acquia Network]] which provides apache solr search index. | ||
| - | === | + | = 3. Detail description of modules (patching / update) = |
| + | |||
| + | == Custom modules == | ||
| + | *'''meego_api_reference'''<br />Includes API page node type and couple variables related to options and path pattern. Generated by features. | ||
| + | |||
| + | *'''meego_base'''<br />Provides base structure/functionality of the site like node type "page" and its CCK field + alternative content list for content editors and list of related block. Generated by features and added some alternative implementation related to context registry. | ||
| + | |||
| + | *'''meego_community'''<br />Community related stuff. Node type "event" with CCK fields "event date" and "event link". Generated by features and added some alternative implementation for providing community content from external sources. | ||
| + | |||
| + | *'''[[Application_developer_site/Documentation/Features/meego_doc|meego_doc]]'''<br />Fully custom module which provides drush command for importing API documentation of MeeGo platform. | ||
| + | |||
| + | *'''meego_guide'''<br />Contains two node types "guide" and "guide_external" and big set of CCK fields and module dependencies. Generated by features and added some alternative implementation for making a redirect for external guides + view lists for guides. | ||
| + | |||
| + | *'''meego_notes'''<br />Has node type "note" and few views lists. Generated by features. | ||
| + | *'''meego_search'''<br />Contains variable settings related to Apache Solr search. Generated by features and contains alternative implementation related to search. | ||
| + | *'''meego_section_head'''<br />Contains node types "promo", "section_head" and "section_head_view" and large amount of CCK fields and couple views lists. Generated by features. | ||
| + | |||
| + | ==Contributed modules== | ||
| + | |||
| + | *'''Features + Context + Strongarm'''<br />Features, context and strongarm is used for tracking site structure by code. This makes site structure more easy to change structure between different environments. | ||
| + | *'''Acquia Network Connector modules + Apache Solr'''<br />Acquia network is used to provide Apache Solr search indexing | ||
| + | *'''Book + BookMadeSimple'''<br />Book and BookMadeSimple modules are used for keeping guide menu structure separated from other menu links (primary links). | ||
| + | *'''Feeds'''<br />Feeds is needed to import planet and blog entries from RSS feed | ||
| + | *'''GeSHi'''<br />Used to provide colored code formatting in code snippets in node bodies | ||
| + | *'''Embedded Media Field'''<br />Installed for allowing users to add YouTube videos to guides. However, Video Filter is used to add videos into content. | ||
| + | *'''Nodewords'''<br />Installed to allow content editors edit keywords and description of page. | ||
| + | *'''Automated Logout'''<br />To prevent user being logged in automatically. | ||
| + | *'''BUEditor'''<br />BUEditor is used instead of WYSIWYG editors because it's a simple way format text without messing up the HTML code by WYSIWYG editors | ||
| + | *'''Clone module'''<br />Allows content editors to clone node content. | ||
| + | *'''Diff'''<br />Installed to allow users see differences between two versions of content. | ||
| + | *'''Global Redirect'''<br />provides basic cleanup of urls - redirection of alternative aliases, removal of trailing slashes, forces access via clean urls... | ||
| + | *'''Insert'''<br />Used to put images into node bodies | ||
| + | *'''Job Scheduler'''<br />Required by feeds for the import of community information, such as blogs / planet | ||
| + | *'''LESS CSS Preprocessor'''<br />LESS makes CSS styling more easy by allowing several dynamic features. See more information from http://lesscss.org | ||
| + | *'''Menu Block'''<br />Generates dynamically first level of links under guides section. This block is used in footer. | ||
| + | *'''Menu Firstchild'''<br />Makes links to main menu which actually links to first child page. | ||
| + | *'''Menu Trails'''<br />Makes guides and api pages to look like they would be in guide category or reference api sections even if they're not added into menu at all. | ||
| + | *'''Nice Menus'''<br />Nice Menus is used for main menu which hovers 1st level links and displays 2nd level links below. | ||
| + | *'''Private'''<br />Allows content to be added by less skilled writers which can be hidden, after edit set to public. | ||
| + | *'''URL Replace Filter'''<br />Automatically replaces and references in node content fields to the development / staging servers with the live server url. | ||
| + | *'''Video Filter'''<br />Makes easier to embed YouTube videos inside content. | ||
| + | *'''Query Path'''<br />_I believe this is unused, was going to be tested for import of forums - andb_ | ||
| + | *'''Node Radioactivity'''<br />Tracks the popularity of guides to promote popular content in guides sections. | ||
| + | *'''Active Tags'''<br />A cleaner, easier to use interface for adding tags to nodes | ||
| + | *'''External Links'''<br />Makes external links to be opened in new window and adds an external link icon to indicate link being external. | ||
| + | *'''Plus 1'''<br />Makes guides to be voted so content editors knows which guides are helping application developers. | ||
| + | |||
| + | = 4. Detail description of content structure = | ||
| + | ==Content types== | ||
| + | *'''Api page'''<br/ >The API pages are simple pages, used to display API content | ||
| + | *'''Book page'''<br/ >A book page is a page of content, organized into a collection of related entries collectively known as a book. A book page automatically displays links to adjacent pages, providing a simple navigation system for organizing and reviewing structured content. | ||
| + | *'''Event'''<br/ >All events retrieved from main site by RSS/XML feed. | ||
| + | *'''External guide'''<br/ >Places a teaser into guide sections, allowing to link to external guides. | ||
| + | *'''Feed'''<br/ >Subscribe to RSS or Atom feeds. Creates nodes of the content type "Feed item" from feed content. | ||
| + | *'''Feed item'''<br/ >This content type is being used for automatically aggregated content from feeds. | ||
| + | *'''Guide'''<br/ >Guides include both internal guides and external guides. Internal guides are written by internal users while external guides are other resource references. | ||
| + | *'''Note'''<br/ >Notes are simple pages, used in such places as Developer notes and Release notes. They provide a left hand navigation structure on their list pages. | ||
| + | *'''Page'''<br/ >A page, similar in form to a story, is a simple method for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a page entry does not allow visitor comments and is not featured on the site's initial home page. | ||
| + | *'''Promotional block'''<br/ >A Promotional block can be used to place a content teaser into a section head or on the home page with different text or images then are found in the content itself. | ||
| + | *'''Section head'''<br/ >The Section head type is used to show a selection of content in a block layout. | ||
| + | *'''Section head with lists'''<br/ >The Section head type is used to show a selection of content in blocks around a dominant content list. | ||
| + | |||
| + | ==Views== | ||
| + | |||
| + | *'''content_list'''<br/ >Enhances the default listing content interface by giving advance filters | ||
| + | *'''feeds_community_blogs'''<br/ >Displays items imported via feeds from the meego.com blog RSS feed. | ||
| + | *'''feeds_community_events'''<br/ >Displays 2 coming up events from meego community | ||
| + | *'''feeds_defaults_feed_items'''<br/ >Show feed items for a feed node. Use together with default importer configuration "Feed". | ||
| + | *'''guide_list'''<br/ >Displays guides by terms (All, Popular and Latest) | ||
| + | *'''guide_list_embed'''<br/ >Short version of guide_list | ||
| + | *'''note_navigation'''<br/ >Provides the sidebar navigation for the notes section | ||
| + | *'''Notes'''<br/ >Displays notes content | ||
| + | *'''related'''<br/ >Displays related items on a specific node | ||
| + | *'''sh_list'''<br/ > | ||
| + | |||
| + | ==Blocks== | ||
| + | |||
| + | Most of the blocks are handled by Context module which has advanced ways to configure display settings. | ||
| + | |||
| + | *'''Apache Solr Search: Filter by content type'''<br/ >Apache Solr Search engine | ||
| + | *'''API Reference'''<br/ >Displayed when browsing API documentation. Has advanced JS functionality to keep link tree usability. | ||
| + | *'''Upcoming events'''<br/ >Gets displayed at front page. Content is generated by Views module | ||
| + | *'''feeds_community_blogs* | ||
| + | *'''Search form'''<br/ >Displayed when listing guides | ||
| + | *'''related: Block'''<br/ >Displayed when viewing a guide | ||
| + | *'''ApacheSolr blocks'''<br/ >Displayed in search results page | ||
| + | *'''Nice menu'''<br/ >Primary links rendered by Nice Menu module. Displayed site wide | ||
| + | *'''Search form'''<br/ >Displayed site wide | ||
| + | *'''Primary links'''<br/ >Displayed in footer region. Content is generated by Menu module | ||
| + | *'''Guides (level 1)'''<br/ >List guide's child menu links in footer region. Generated by Menu Block module | ||
| + | *'''Footer links'''<br/ >Static menu list in located at footer region. Generated by Menu module | ||
| + | *'''Footer copywrite'''<br/ >Contains copy texts at footer region below the links | ||
| + | *'''Developer notes'''<br/ >Contains list of the notes generated by Views | ||
| + | *'''Release notes'''<br/ >Contains list of release notes generated by Views | ||
| + | |||
| + | ==Taxonomies== | ||
| + | |||
| + | *'''Guide category''' (Guide, External guide)<br/ > | ||
| + | *'''Difficulty level''' (Guide, External guide)<br/ > | ||
| + | *'''Devices''' (Guide, External guide)<br/ > | ||
| + | *'''Tags''' (Guide, External guide)<br/ > | ||
| + | *'''MeeGo''' versions (Guide, External guide)<br/ > | ||
| + | *'''Notes''' categories (note) | ||
| + | |||
| + | ==Navigation menus== | ||
| + | *'''API Reference'''<br/ >This menu is used to store menu links of MeeGo platform's documentation | ||
| + | *'''Footer links'''<br/ >This menu is used in footer region to provide copywrite links like "Privacy Policy" etc. | ||
| + | *'''MeeGo sites*'''<br/ >This menu is used as a JS drop down menu at header | ||
| + | |||
| + | ==Themes== | ||
| + | *'''MeeGo developer''' is a custom theme which is based on '''tao''' theme. '''Rubik''' is used as admin theme which also is based on '''tao''' theme. | ||
| + | |||
| + | = 5. Backup solution = | ||
| + | Unknown!!! | ||
| + | |||
| + | = 6. Additional Materials = | ||
| + | ==Third party services== | ||
| + | '''Acquia Network'''<br/ > | ||
| + | Site is using Acquia Network to use external search index (Apache Solr). Acquia Network works as CRON runner and monitoring service. '''Michael R. Shaver''' is holding currently the Acquia Network account which is the main contact person in terms of Acquia Network subscription.<br/ > | ||
| + | |||
| + | '''Google Analytics'''<br/ > | ||
| + | Site was having before two GA tracking codes (Activeark's and MeeGo's) but we agreed to use only one (MeeGo's) in condition that Activeark will be able to see the statistics. See bug https://bugs.meego.com/show_bug.cgi?id=13307 | ||
| + | |||
| + | Activeark's account email address is <u>google@activeark.com</u>, under account <u>meego.com</u> | ||
| + | |||
| + | ==Users, Groups & Permission== | ||
| + | |||
| + | '''User design'''<br/ > | ||
| + | Only site administrators can create new user accounts. | ||
| + | |||
| + | '''Group and Permission design'''<br/ > | ||
| + | |||
| + | DMC has 4 user groups as following: | ||
| + | |||
| + | *'''administrator'''<br/ >Administrators have all permissions on site control | ||
| + | *'''editor'''<br/ >Editors have following permissions: view advanced help popup, view advanced help topic, add content to books, administer book outlines, create new books, show book reorder link, show core Outline links, create guide content, create guide_external content, create promo content, create section_head content, create section_head_view content, delete own guide_external content, edit any guide content, edit any guide_external content, edit any promo content, edit any section_head content, edit any section_head_view content, edit own guide_external content, edit own section_head content, edit own section_head_view content, administer external guides, create note content, create page content, edit any feed_item content, edit any note content, edit any page content, revert revisions, view revisions, access private content, edit private content, mark content as private | ||
| + | *'''site manager'''<br/ >Site managers have following permissions: view advanced help popup, view advanced help topic, add content to books, administer book outlines, create new books, show book reorder link, show core Outline links, delete any guide content, delete any promo content, delete any section_head content, delete any section_head_view content, administer external guides, administer menu, administer content types, delete any note content, delete any page content, administer meta tags, create url aliases, access private content, edit private content, mark content as private, access administration pages, access site reports, administer taxonomy, access user profiles, administer permissions, administer users | ||
| + | *'''user manager'''<br/ >User managers have following permissions: view advanced help popup, view advanced help topic, add content to books, access user profiles, administer permissions, administer users | ||
| + | |||
| + | ==Login (ssh) - host address== | ||
| + | developer.meego.com@otc02.sl.ssgisp.com | ||
| + | |||
| + | ==Version control - host address== | ||
| + | |||
| + | This project is under public GIT repository hosted at gitorious.org. See: http://meego.gitorious.org/meego-web-infrastructure/meego-developer-website | ||
| - | === | + | ==Database - host address== |
| - | + | ||
| - | + | Unknown | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ==CRON jobs== | |
| - | + | CRON are run by Acquia network. | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | == | + | ==PHP== |
| - | + | *'''configuration: '''<br/ >Unknown | |
| + | *'''libraries: '''<br/ >Unknown | ||
| - | == | + | ==Apache (additional tweaks)== |
| - | + | *'''configuration: '''<br/ >Unknown | |
| + | *'''Allowoverride: '''<br/ >Unknown | ||
| + | *'''Server signature: '''<br/ >Unknon | ||
| + | *'''modules: '''<br/ >Unknown | ||
Contents |
Current team:
Other persons involved before:
Project was initially managed in Redmine hosted by Activeark. Redmine's issue tracking was replaced with MeeGo's Bugzilla at http://bugs.meego.com. In Bugzilla, site bugs are categorized under product "developer.meego.com".
Drupal source is managed by using GIT. *Source code is public and should be available at Gitorious*. See link for the repository: http://meego.gitorious.org/meego-web-infrastructure/meego-developer-website
Michael R. Shaver from Intel is responsible for hosting. Developer.meego.com is hosting at Oregon State University (OSU)
Production and staging environment
Production and staging environment are in the same server. No passwords are used, instead we are using SSH public keys which should be provided to Michael when server access is needed.
Production site is mapped to document root "/data/sites/hthome/developer.meego.com/htdocs" and uses " dev_meego " database/name. Folder is linked to repository and should contain latest stable snapshot of site.
Staging site is mapped to document root "/data/sites/hthome/dev.developer.meego.com/htdocs" and uses " dev_dev_mego " database/name. Folder is linked to repository and has latest state of the site.
Development environment
No centralized development environment provided. Development happens locally.
Intel is currently responsible of hosting. The contact person for hosting is *Michael R. Shaver* from Intel.
Site uses Drupal's default structure, collation, storage engine.
Staging site is not using shared tables.
Production site is using following database settings:
$db_prefix = array( 'default' => '', 'users' => 'meego.', 'authmap' => 'meego.', 'openid_associations' => 'meego.', 'profile_fields' => 'meego.', 'profile_values' => 'meego.', );
Note! When synchronizing content from production site, you will be required to set node.uid to value 1 and clear cache to ensure availability of content. Nodes doesn't get loaded when user is not available (uids are different in production since we're sharing users table!).
Site is using Drupal's distribution *Pressflow* , because of better performance. Project uses PHPTemplate as template engine.
Modules
Contributed modules are located in @./sites/all/modules/contrib@.
Custom modules are located in @./sites/all/modules/custom@.
Modified contributed modules are located in @./sites/all/modules/modified-contrib@.
Most of custom modules are generated by Features module, but they might contain also alternative code in .module files made by developers.
Site is using external search indexing from Acquia Network which provides apache solr search index.
Most of the blocks are handled by Context module which has advanced ways to configure display settings.
Unknown!!!
Acquia Network
Site is using Acquia Network to use external search index (Apache Solr). Acquia Network works as CRON runner and monitoring service. Michael R. Shaver is holding currently the Acquia Network account which is the main contact person in terms of Acquia Network subscription.
Google Analytics
Site was having before two GA tracking codes (Activeark's and MeeGo's) but we agreed to use only one (MeeGo's) in condition that Activeark will be able to see the statistics. See bug https://bugs.meego.com/show_bug.cgi?id=13307
Activeark's account email address is google@activeark.com, under account meego.com
User design
Only site administrators can create new user accounts.
Group and Permission design
DMC has 4 user groups as following:
developer.meego.com@otc02.sl.ssgisp.com
This project is under public GIT repository hosted at gitorious.org. See: http://meego.gitorious.org/meego-web-infrastructure/meego-developer-website
Unknown
CRON are run by Acquia network.