# Fedora 13 # # Copyright 2009-2011 John Poelstra # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # macro major [13] macro next_major [14] macro content [f] macro content_title [Fedora] macro start_date [2009-11-17] # GA date of previous release macro start_work [2009-11-18] # set to one day after "start_date" macro end_date [2012-01-31] macro id [$Id: f-13.tjp,v 1.21 2011/07/22 23:52:13 poelstra Exp $] macro state [$State: Exp $] macro prior_project [f11] project ${content}${major} "${content_title}" "${major}" ${start_date} - ${end_date} { timeformat "%Y-%b-%d" # Based on Eastern time zone in USA timezone "America/New_York" # Setup scenarios scenario plan "Original Plan" { scenario actual "Actual" } # Limit working days workinghours sat,sun off } include "reports.tji" # ========= Cornerstones of Fedora Schedules ============= /* 1) Time driven unless specified differently during planning 2) Freezes and releases always happen on Tuesdays 3) Alpha & Beta Candidates start on Wednesdays 4) Composes always start on Thursdays 5) Beta snapshots happen on Thursday or Fridays and are best effort --nothing depends or waits on them 6) Syncing releases to mirrors ideally happens on Thursdays... end of day on Friday is worst case 7) Most tasks are scheduled with 'length' instead of 'duration' to get a sense of "work days" required--using 'length' one week = 5 days --an eternal debate could be held to discuss whether or not schedule cacluations should include weekends because community members work at all times and not within strict work days. 8) There is little to no benefit found in including a holiday.tji file for Fedora. In some cases it made the scheduling more complicated 9) Use "length" everywhere and "duration" only when something must take into account a weekend day 10) All "Blocker Bug Days" should be on Fridays 11) If a task takes one day or less--schedule with no length--this way it showes up as a milestone and gets included in iCalendar (ics) file 12) Because of bugs in the way TaskJuggler ics files get rendered in some calendars (e.g. Zimbra) we only include zero length (milestone) tasks in the ics file. As a result there are several duplicate tasks with no length that have been added so they appear in the ics file. 13) There are basically five different Fedora projects the Fedora Translation team works on: a) Software localization b) Guides localization c) Release Notes localization d) Website localization e) Release banner localization --there is probably a better place for this information */ # ============ What should be included in TaskJuggler? ============== /* e.g. Tasks that *should* be tracked in this schedule vs. subgroup ticketing or task systems 1) Inter-team dependencies. For example Docs team release-notes.rpm or Artwork team packages needed by Release Eng for complete distro creation. 2) Significant tasks that are important for other groups to be aware of 3) Tasks critical to releasing a new version of Fedora. For example, syncing the release to the mirrors 4) Informational tasks that round out important parts of the release. For example when the release will stop being supported--EOL 5) Tasks that must be completed for a quality release--"nice to have" items should tracked elswhere and clutter the schedule 6) In general we have found it to be ineffective to create overly-detailed schedules for the subteams because they are hard to maintain and the ROI appears to be low */ task ${content}${major} "${content_title} ${major}" { start ${start_work} # Not sure if this is the right way to do this, but giving it a shot... # For Fedora 13, the docs group wants the Guides work to span almost # the entire release cycle--they don't fit nicely into different phases. # So I'm putting them all here in their own block to see if it works # poelstra-2009-12-24 task all_guides "${content_title} ${major} Guides" { task guides_pot "Create POT files for All Guides" { length 120d flags docs #Wed 18-Nov Fri 07-May } task guides_trans "Translate All Guides (POT to PO)" { length 120d flags translation #Wed 18-Nov Fri 07-May } task srpm_review "Remind new guide owners SRPM package review" { start 2010-03-31 flags docs } task remind_trans "Reminder to Trans that Final Guides POT files are coming" { start 2010-04-23 flags docs } task build_daily "Daily builds of Final guides for Translation" { start 2010-04-26 end 2010-05-07 flags docs } task review_daily "Review and correct Final Translated Guides (daily builds html)" { start 2010-04-26 plan: end 2010-05-07 flags translation } task guides_trans_deadline "Translation Deadline: All Final Guides" { start 2010-05-07 flags translation } task guides_final_build "Final Build All Guides: All Languages" { start 2010-05-07 end 2010-05-10 flags docs } task publish_guides "Publish all guides to docs.fp.o (html,html-single,pdf)" { start 2010-05-10 flags docs } } # end of "all_guides" task elections "${content_title} ${next_major} Elections" { # manually set start date that is seven weeks before GA date (on a Tuesday) # this is cleaner than using precedes # use 'duration' to make it easier for some tasks to land on weekends start 2010-03-23 flags elections, pm task remind "Remind advisory-board list of upcoming election schedule" { } task solicit "Solicit volunteers for questionnaire and town halls" { depends !remind duration 7d } task wiki_update "Update wiki page https://fedoraproject.org/wiki/Elections with required information" { depends !solicit } task advertise_elections "Advertise elections schedule and pages" { depends !solicit } # two weeks before GA task announce_nominations "FPL/designee announces opening of nominations" { depends !solicit {gapduration 25d} } task open_questions "Questionnaire wrangler announces opening for questions"{ depends !announce_nominations } task collect_questions "Collect question on the wiki"{ depends !announce_nominations duration 8d } task collect_answers "Candidates write questionnaire answers" { depends !collect_questions duration 7d } task announce_town "Town hall wrangler announces schedule for town hall meetings" { depends !announce_nominations } task question_deadline "Questionnaire answers due from candidates" { depends !collect_answers } # five days before GA task present_answers "Wrangler presents questionnaire answers" { depends !collect_answers {gapduration 1d} duration 2d } task post_questions "All answers posted to questionnaire page, advertise to voters" { depends !present_answers } task town_hall "Town hall period" { depends !post_questions {gapduration 1d} duration 6d } task voting_application "Finalize Voting Application" { duration 1d depends !town_hall } task voting_start "Voting Begins" { depends !voting_application } task voting "Voting for general elections" { depends !voting_application duration 6d } task voting_end "Voting Ends" { depends !voting } task announce_results "Announce Results" { depends !voting_end {gapduration 1d} } } # end elections # This task is required for the Product Pages # taskid and description should not be changed task PlanningPhase "Planning Phase" { # add for ical task start_features_cal "Start Feature Submission" { flags key, pm, roadmap } task clean_market_wiki "Cleanup Marketing wiki from previous releases" { depends !start_features_cal {gaplength 25d} length 5d flags marketing } task cycle_market_wiki "Cycle Marketing wiki pages for current release" { depends !start_features_cal {gaplength 25d} length 5d flags marketing } task fudcon "Fudcon Fedora 13: Toronto, Ontario" { start 2009-12-05-01:00-EST end 2009-12-07-23:00-EST flags design, pm, proto, devel } task bug_trackers "Create Tracker Bugs" { flags pm note "See details at https://fedoraproject.org/wiki/BugZappers/HouseKeeping/FirstDayDevel" } # The release name process should be started shortly after GA of the previous releases # and concluded preferably before FUDCon so it can be part of discussions and planning there # naming process: https://fedoraproject.org/wiki/Releases/Naming_Guidelines # https://fedoraproject.org/wiki/Name_suggestions_for_Fedora_11 # 1 week -- collect names # 1 week --fedora board reviews names # 2 weeks -- names reviewed by RHT legal # 1 week -- community vote on names task naming "Name the ${content_title} ${major} Release" { flags pm task gather "Collect ${content_title} ${major} Names on Wiki" { length 5.5d } task board "Board Review" { depends !gather length 3d } task legal "Legal Review" { depends !board length 5d } task vote "Voting" { depends !legal length 4d } task announce_name "Announce ${content_title} ${major} Release Name" { depends !vote {gapduration 1d} flags design, pm } } task art_concept "Conceptual Design Phase" { depends !naming.announce_name length 10d flags design } # a solid start for the wallpaper is the goal for alpha # NOTE: task ends with Feature Freeze and packaging for release task wallpaper_design "Wallpaper Design for Alpha" { depends !art_concept length 31d flags design } } # E N D of PlanningPhase # This task is required for the Product Pages # taskid and description should not be changed task DevelopmentPhase "Development Phase" { start ${start_work} task devel_start "Start Development" { flags devel } # ADJUST this task to set the start of ALPHA (alpha freeze) # KEY ADJUSTMENT POINT for Alpha task develop "Packaging and Development (precedes Alpha)" { length 65d # flags devel, proto, proto2, releng flags hidden, proto2 } # This task is required for the Product Pages # taskid and description should not be changed task export_freeze "Requirements Freeze" { depends !develop flags hidden } # HARDCODED date task fedora10_eol "Fedora 10 End of Life" { start 2009-12-11 flags devel, releng, pm, key } # HARDCODED date task feature_check_remind "Request Feature Status Updates + Remind Submit Deadline" { start 2010-01-04 flags devel, pm } # HARDCODED date task qa_alpha_compose1 "Create Installable Images for QA testing #1" { start 2010-01-21 flags releng } task alpha_rawhide_install1 "Pre-Alpha Rawhide Acceptance Test Plan #1" { depends !qa_alpha_compose1 length 6d flags quality } # KEY ADJUSTMENT POINT for Planning # shadow task to avoid using gaplength task first_blocker_meeting "First Blocker Meeting" { depends !devel_start length 58d flags hidden } task alpha_blocker1 "Alpha Blocker Meeting (${content}${major}alpha) #1" { depends !first_blocker_meeting flags releng, quality, devel, blocker } task alpha_blocker2 "Alpha Blocker Meeting (${content}${major}alpha) #2" { depends !alpha_blocker1 {gaplength 5d} flags releng, quality, devel, blocker } } # E N D of DevelopmentPhase task TestingPhase "Testing Phase" { task alpha "Alpha Release" { # feature freeze is one week before Alpha Freezes # automatically calculated based on Alpha Freeze date task hidden_feature_freeze "Feature Freeze (Testable|Complete)" { precedes !alpha_freeze_start {gaplength 6d} length 0.1h flags hidden } task feature_freeze "Feature Freeze (Testable|Complete)" { depends !hidden_feature_freeze flags releng, quality, pm, design, proto, proto2, devel, key, marketing } task feature_freeze_deadline_announce "Announce Feature Freeze Reached" { depends !feature_freeze flags pm } task alpha_freeze_remind "Remind Alpha Freeze in 1 week" { depends !feature_freeze flags pm } task spins_freeze "Spins Freeze" { depends !hidden_feature_freeze flags releng, quality, pm, design, proto, proto2, devel, key, marketing } task talking_points "Create Talking Points" { depends !feature_freeze {gaplength 6d} length 5d flags marketing } task release_slogan "Create Release Slogan" { depends !talking_points length 5d flags marketing } task feature_profiles "Feature Profiles" { depends !release_slogan length 20d flags marketing } task branch_rawhide "Branch Fedora ${major} from Rawhide" { depends !hidden_feature_freeze flags releng, devel, pm, design, proto, proto2, key } task bugzilla_descrption "Reflect supported versions in Bugzilla product description" { depends !hidden_feature_freeze flags pm } task rawhide_rebase "Rebase Rawhide bugs to Fedora ${major}" { depends !hidden_feature_freeze flags pm } # HARDCODED date task feature_submit_remind_2_weeks "Feature Submission Deadline Two Weeks away" { start 2010-01-12 flags devel, pm } # HARDCODED date task feature_submit_remind_1_week "Feature Submission Deadline One Week away" { start 2010-01-19 flags devel, pm } task feature_freeze_remind_1_week "Feature Freeze Deadline One Week away" { depends !feature_submit_remind_1_week {gaplength 11d} flags devel, pm } # Feature Submission deadline is two weeks before feature freeze # create hidden task with 'length' to utilize 'precedes', otherwise 'precedes' produces strange results task hidden_feature_submission_deadline "Feature Submission Deadline" { precedes !feature_freeze {gaplength 10d} length 0.1h flags hidden } # depend on hidden task so this shows up as a milestone task feature_submission_deadline "Feature Submission Deadline" { depends !hidden_feature_submission_deadline flags releng, quality, pm, proto, proto2, devel, key } task feature_submission_deadline_announce "Announce Feature Submission Reached" { depends !hidden_feature_submission_deadline flags pm } task spins_submission_deadline "Custom Spins Submission Deadline" { depends !hidden_feature_submission_deadline flags releng, quality, pm, proto, proto2, devel, key } task qa_alpha_compose2 "Create Installable Images for QA testing #2" { depends !feature_submission_deadline {gaplength 3d} flags releng } task alpha_rawhide_install2 "Pre-Alpha Rawhide Acceptance Test Plan #2" { depends !qa_alpha_compose2 length 5d flags quality } task qa_alpha_compose3 "Create Installable Images for QA testing #3" { depends !alpha_rawhide_install2 flags releng } task alpha_rawhide_install3 "Pre-Alpha Rawhide Acceptance Test Plan #3" { depends !qa_alpha_compose3 length 5d flags quality } task feature_incomplete_nag "Incomplete Feature Nag" { depends !feature_freeze {gaplength 1d} flags pm } task feature_incomplete_fesco "Deliver Incomplete Features to FESCo " { depends !feature_freeze {gaplength 6d} flags pm } # NOTE: If the length of 'alpha_freeze' changes also need to ADJUST the length of # Alpha Testing task to land in the right place if slip is "absorbed" # KEY ADJUSTMENT POINT # Start of Alpha Freeze depends on length of development task alpha_freeze_start "Development: Start Alpha Freeze" { depends !!!DevelopmentPhase.develop flags proto, releng, quality, pm, devel, key, roadmap, proto2, blocker } task alpha_freeze_announce "Announce Alpha Freeze Reached" { depends !alpha_freeze_start flags pm } # KEY ADJUSTMENT POINT # Show the duration of the Alpha freeze--2 weeks task alpha_freeze "Development: Alpha Freeze" { depends !alpha_freeze_start plan: length 10d actual: length 15d # flags releng, proto, proto2 flags hidden } task alpha_infrastructure_freeze "Alpha Infrastructure Change Freeze" { depends !alpha_freeze_start plan: length 10d actual: length 15d flags infrastructure, releng } # Happens the same day as Feature Freeze task orphan "Orphan Rawhide Packages" { depends !feature_freeze flags releng, proto, devel } task finalize_alpha_wallpaper "Finalize Alpha Wallpaper" { depends !!!PlanningPhase.wallpaper_design flags design, pm length 5d } task blog_alpha_wallpaper "Blog About Alpha Wallpaper" { depends !finalize_alpha_wallpaper flags design } # must land a few days before Alpha compose by Releng task package_alpha_wallpaper "Package Alpha Wallpaper" { depends !finalize_alpha_wallpaper flags design, releng } # depends on nearly complete version of the wallpaper, otherwise # you have to create the splashes twice # work on until Beta freeze task start_splash_screens "Create Splash Screens" { start 2010-03-02 # add manual start because of slip of alpha #depends !alpha_drop length 9d flags design } # for ics file task start_splash_screens_cal "Start Splash Screens" { start 2010-03-02 # add manual start because of slip of alpha #depends !alpha_drop flags design } # work on until Beta freeze task finalize_splash_screens "Finalize Splash Screens" { depends !start_splash_screens length 6d flags design } # work on until Beta freeze task beta_wallpaper "Prepare wallpaper for Beta" { depends !alpha_drop length 15d flags design } task package_splash "Package: Splash Screens For Fedora 13" { depends !start_splash_screens {gaplength 1d} flags design } task alpha_freeze_end "End Alpha Freeze" { depends !alpha_freeze #flags proto, releng, quality, pm, devel flags hidden } task alpha_blocker3 "Alpha Blocker Meeting (${content}${major}alpha) #3" { depends !!!DevelopmentPhase.alpha_blocker2 {gaplength 5d} flags releng, quality, devel, pm, blocker } # placeholder if slip /* task alpha_blocker4 "Alpha Blocker Bug Day (F13Alpha) #4" { depends !alpha_blocker3 {gaplength 5d} flags releng, quality, devel, pm, blocker } */ task alpha_go_not "${content_title} ${major} Alpha Go/No-Go Meeting #1 (20:00 EST)" { depends !create_alpha_compose {gaplength 4d} flags releng, quality, devel, pm, proto2, blocker } task alpha_go_not2 "${content_title} ${major} Alpha Go/No-Go Meeting #2 (20:00 EST)" { depends !create_alpha_compose {gaplength 9d} flags releng, quality, devel, pm, proto2, blocker } task trans_software_rebuild1 "Remind f-dev-announce to Rebuild All Translated Packages" { depends !feature_freeze {gaplength 5d } flags translation } task software_string_freeze "Software String Freeze" { depends !feature_freeze {gaplength 6d } milestone flags devel, translation, pm, proto, releng, key } task announce_software_string_freeze "Announce Software String Freeze Reached" { depends !feature_freeze {gaplength 6d } milestone flags pm } # NOTE: The LENGTH of this task hinges on how long the alpha period is and # the "Final Freeze" date. This task should end on a Tuesday, one week # before Final Freeze (also on a Tuesday). # If any of the Alpha tasks are late the length of this task is extended # KEY ADJUSTMENT POINT task software_translation "Software Translation"{ task trans_software "Software Translation Period" { depends !!software_string_freeze length 20d flags translation } task build_trans_software "Build F-13 collection packages for all language translators" { depends !!software_string_freeze {gaplength 11d} length 2d flags translation, devel } task trans_software_review "Review and correct software translation in built UI" { depends !build_trans_software {gaplength 1d} plan: length 6d flags translation } task trans_software_rebuild2 "Remind f-dev-announce to Rebuild All Translated Packages" { depends !trans_software_review flags translation } # should land one week before "Final Development Freeze" & end of Alpha # always double check after adjusting "trans_software" or length of alpha testing task trans_software_deadline "Software: Translation Deadline (PO Files complete)" { depends !trans_software_review milestone flags translation, proto, roadmap } # for ical file task start_trans_rebuild "Software: Start Rebuild all translated packages" { depends !trans_software_deadline flags translation, devel } task trans_rebuild "Software: Rebuild all translated packages" { depends !trans_software_deadline length 5d flags translation, devel } } #end software_translation task alpha_meeting_announce "Announce: Alpha Release Readiness Meeting" { depends !feature_freeze {gaplength 6d} milestone flags pm } task alpha_meeting_reminder "Reminder: Alpha Release Readiness Meeting" { depends !alpha_meeting_announce {gaplength 3d} milestone flags pm } # pushed out one week for slip of alpha task alpha_meeting "${content_title} ${major} Alpha Release Readiness Meeting" { #depends !alpha_meeting_reminder {gaplength 4d} depends !alpha_meeting_reminder {gaplength 9d} milestone flags releng, pm, quality, docs, design, translation, marketing, web } task create_alpha_tc "Create Alpha Test Compose (TC)" { precedes !start_compose_alpha {gaplength 6d} length 0.1h flags releng, proto2 } task test_alpha_tc "Test Alpha 'Test Compose'" { depends !create_alpha_tc length 5d flags releng, quality, proto2 } task start_compose_alpha "Start Alpha Compose" { depends !alpha_freeze_start {gaplength 2d} flags releng } task create_alpha_compose "Compose Alpha Candidate" { depends !alpha_freeze_start {gaplength 2d} flags releng, proto2, key } # 2010-02-25: Alpha slipped by one week because blocker list could not be cleared in time task test_alpha_candidate "Test Alpha Candidate" { depends !create_alpha_compose plan: length 5d actual: length 10d flags releng, quality, proto2 } # for ical file task start_stage_alpha "Start Stage & Sync Alpha to Mirrors" { depends !test_alpha_candidate flags releng } task stage_alpha "Stage & Sync Alpha to Mirrors" { depends !test_alpha_candidate length 3d flags releng, proto2 } task alpha_export_control "Alpha Export Control Reporting" { depends !start_stage_alpha {gaplength 1d} flags releng, pm } task alpha_announce "Create Alpha Announcement (Marketing & Docs)" { depends !alpha_meeting length 2d flags docs, marketing } # TODO: For Fedora 13 consider a nag to feature owners one week before task alpha_drop "Alpha Public Availability" { depends !stage_alpha milestone flags releng, docs, quality, design, pm, proto, proto2, devel, key, marketing, roadmap, blocker } # KEY ADJUSTMENT POINT task alpha_release_notes "Alpha Release Notes" { # create for ical task start_alpha_beats "Start Alpha Beat and Feature Page Review" { depends !!feature_freeze {gaplength 11d} flags docs, quality } task comb_alpha_beats "Comb Beats and Feature Pages for Alpha" { depends !start_alpha_beats length 2d flags docs, quality } # KEY ADJUSTMENT POINT # Beta release notes depend on this task # alph candidate was not ready on time so it gave an extra week for the release notes task prep_alpha_notes "Prepare Alpha Release Notes (1 page)" { depends !comb_alpha_beats plan: length 1d actual: length 6d flags docs, quality } task post_notes "Post Alpha Release Notes One-Page" { depends !prep_alpha_notes {gaplength 1d} flags docs } } #end alpha_release_notes # two days to create web banner # one day for websites team to add to www.fedoraproject.org # should be live one day before the release # FIXME: reconsider use of preceds here # start three days before Alpha public availability task alpha_banner "Alpha Release Banner" { precedes !alpha_drop {gaplength 3d} task alpha_create_banner "Create Alpha Website Banner" { length 2d flags design } task alpha_publish_banner "Add Alpha Banner to Website" { length 1d flags web } } # This task is required for the Product Pages # taskid and description should not be changed task public_alpha "Public Alpha" { depends !stage_alpha flags hidden } # NFR makes this task N/A for F13 and beyond # task branch "Allow Pre-branch Fedora 13" { # milestone # flags releng, proto, devel # depends !stage_alpha # } # NOTE: If this length changes, MUST also change "software translation" length # so that Translation Deadline falls 1 week before end of alpha # KEY ADJUSTMENT POINT for Alpha # Three weeks for Alpha Testing # 2010-02-25: Alpha slipped by one week because blocker list could not be cleared in time # decision was made to not slip the rest of the schedule so reducing Alpha duration by one week to two total task test_alpha "Alpha Testing" { #depends !stage_alpha, !alpha_freeze depends !stage_alpha plan: length 15d actual: length 10d flags quality, releng, proto, proto2 } task review_bookmarks "Review Firefox Bookmarks For Update" { depends !stage_alpha length 5d flags marketing } task update_bookmarks "Update and Package Firefox Bookmarks" { depends !review_bookmarks length 2d flags marketing } task tag_bookmarks "Tag Updated Bookmarks Package for ${content_title} ${major}" { depends !update_bookmarks flags marketing } # dummy task to mark end of alpha # created so that other tasks can "precedes" using gaplength() task alpha_end "End of Alpha Testing" { depends !test_alpha flags quality, releng, proto } task beta_marketing_notes "Marketing: Beta One Page Release Notes" { depends !alpha_end {gaplength 5d} length 5d flags marketing } # Once the Alpha is staged, start holding Blocker meetings # for the Beta # KEY ADJUSTMENT POINT--if changes are made elsewhere, make sure this # task and dependent tasks line up correctly task beta_blocker1 "Beta Blocker Meeting (${content}${major}beta) #1" { depends !stage_alpha {gaplength 3d } #reflect slip of alpha # depends !stage_alpha {gaplength 8d } flags quality, releng, devel, pm, blocker } task beta_blocker2 "Beta Blocker Meeting (${content}${major}beta) #2" { depends !beta_blocker1 {gaplength 5d} flags releng, quality, devel, pm, blocker } } task beta "Beta Release" { # two weeks before the Beta Release availability task beta_freeze "Development: Beta Milestone--Features 100%" { depends !!alpha.test_alpha milestone flags releng, docs, design, quality, pm, translation, proto, proto2, devel, key, marketing, roadmap, blocker #flags hidden } task beta_infrastructure_freeze "Beta Infrastructure Change Freeze" { depends !!alpha.test_alpha plan: length 10d actual: length 15d flags infrastructure, releng } # task remind_beta_freeze "Remind Beta Freeze in 1 week" { # precedes !beta_freeze {gaplength 5d} # length 0.1h # flags pm # } task remind_final_freatures "Remind Features 100% Complete in 1 week" { precedes !beta_freeze {gaplength 5d} length 0.1h flags pm } # task announce_beta_freeze "Announce Beta Freeze Reached" { # depends !!alpha.test_alpha # milestone # flags pm # } task final_feature_fesco "Deliver features < 100% to FESCo" { depends !beta_freeze {gaplength 1d} flags pm, devel } task brief_ambassadors "Brief Ambassadors on upcoming release" { depends !beta_freeze {gaplength 5d} length 5d flags marketing } # The Release Slogan is created by the Marketing team based on # the initial artwork theme. The Design Team needs to know # the slogan to create the release banners # prepare 6 weeks before GA (2 weeks of work) # go live 1 month before GA # KEY ADJUSTMENT POINT task create_countdown "Create Count Down Graphic" { depends !beta_freeze length 10d flags design } task publish_countdown "Publish Count Down Graphic" { depends !create_countdown length 1d flags web } task beta_release_notes "Beta Release Notes" { task unclaimed_beats "Write Unclaimed Wiki Beats" { start 2010-03-02 # set manual start to reflect slip of alpha # depends !!!alpha.alpha_drop length 7d # length 6d flags docs } task port_wiki_publican "Port Wiki to Publican" { depends !unclaimed_beats {gaplength 1d} length 2d flags docs } task remind_trans_beta_notes "Remind Translation: Beta Rel Notes POT Coming" { depends !unclaimed_beats flags docs } task start_release_notes_pot1 "Start nightly POT files all fed-rel-notes.rpm content" { depends !unclaimed_beats {gaplength 1d} flags docs } task release_notes_pot1 "Generate nightly POT files all fed-rel-notes.rpm content" { depends !unclaimed_beats {gaplength 1d} length 13d flags docs } task remind_devel_beta_notes"Remind announce-list & f-devel-announce: Wiki Freeze" { depends !unclaimed_beats {gaplength 1d} flags docs } task beta_wiki_freeze "Wiki Freeze: Beta Release Notes" { depends !remind_devel_beta_notes {gaplength 2d} flags docs } task beta_trans_remind "Remind Translation Deadline: release notes" { depends !remind_devel_beta_notes {gaplength 2d} flags translation } task trans_release_notes "Translate Beta Release Notes" { depends !start_release_notes_pot1 length 17d flags translation } # KEY ADJUSTMENT POINT task build_trans_review "Ongoing build translation review htmls" { depends !beta_wiki_freeze length 5d flags docs } # KEY ADJUSTMENT POINT task trans_review_beta "Review and correct Beta Release Notes (daily buids html)" { depends !beta_wiki_freeze length 5d flags translation } task trans_release_notes_deadline "Translation Deadline: Beta Release Notes (PO Files complete)" { depends !trans_review_beta milestone flags translation, docs } task build_beta_relnotes "Build fed-rel-notes.rpm for Beta Release" { depends !trans_release_notes_deadline length 2d flags docs, translation } # manually move out one week because of Beta slips # FIXME: anchor this task better for Fedora 14 task final_release_notes_reminder "Reminder: Send Project Wide-Final Release Notes Deadlines" { #depends !!beta_meeting_reminder {gaplength 3d} start 2010-04-08 milestone flags docs } # one day before release which is 2D after meeting task web_notes "Build and Post release-notes to docs.fedorahosted.org" { #depends !!beta_meeting {gaplength 2d} depends !!beta_meeting {gaplength 3d} flags docs } task final_release_note_wiki_reminder "Reminder to Development: Wiki Freeze in 7 days" { #depends !!beta_meeting {gaplength 2d} depends !!beta_meeting {gaplength 3d} flags docs } } # end beta_release_notes task splash_deadline "Deadline: Final Splash Screens" { depends !!alpha.finalize_splash_screens flags design } task package_final_splash "Package: Final Splash Screens" { depends !!alpha.finalize_splash_screens {gaplength 1d} flags design } task final_art "Package: Beta Wallpaper"{ depends !!alpha.beta_wallpaper {gaplength 1d} flags design } task beta_meeting_announce "Announce: Beta Release Readiness Meeting" { depends !beta_freeze{gaplength 1d} milestone flags pm } task beta_meeting_reminder "Reminder: Beta Release Readiness Meeting" { depends !beta_meeting_announce {gaplength 3d} milestone flags pm } # KEY ADJUSTMENT POINT # manually move out by one week because of slip of Fedora 13 Beta task beta_meeting "${content_title} ${major} Beta Release Readiness Meeting" { # depends !beta_meeting_reminder {gaplength 3d} start 2010-04-08 milestone flags releng, pm, quality, docs, design, translation, marketing, web } task beta_announce "Create Beta Announcement (Docs & Marketing)" { depends !beta_meeting length 2d flags docs, marketing } task create_beta_tc "Create Beta Test Compose (TC)" { precedes !start_compose_beta {gaplength 6d} length 0.1h flags releng, proto2 } task test_beta_tc "Test Beta 'Test Compose'" { depends !create_beta_tc length 5d flags releng, quality, proto2 } task beta_rawhide_install "Branched Acceptance Test Plan" { precedes !create_beta_tc length 5d flags quality } task beta_blocker3 "Beta Blocker Meeting (${content}${major}beta) #3" { depends !!alpha.beta_blocker2 {gaplength 5d} flags releng, quality, devel, pm, blocker } task beta_go_not "${content_title} ${major} Beta Go/No-Go Meeting (20:00 EST)" { depends !start_compose_beta {gaplength 4d} flags releng, quality, devel, pm, proto2, blocker } # KEY ADJUSTMENT POINT if Beta release date slips task start_compose_beta "Compose Beta Candidate" { depends !beta_freeze {gaplength 2d} flags releng, proto2, key } # add in extra check-point because of slip task beta_go_not2 "${content_title} ${major} Beta Go/No-Go Meeting (20:00 EST)" { start 2010-04-07 flags releng, quality, devel, pm, proto2, blocker } # KEY ADJUSTMENT POINT if Beta release date slips # Adjust for slip of Beta--unresolved blocker bugs and incomplete testing # adds 1 week to the rest of the schedule task test_beta2 "Test Beta Candidate" { depends !start_compose_beta plan: length 5d actual: length 10d flags releng, quality, proto2 } task start_stage_beta "Start Stage & Sync Beta to Mirrors" { depends !test_beta2 flags releng } task stage_beta "Stage & Sync Beta to Mirrors" { depends !test_beta2 length 3d flags releng, proto2 } task beta_export_control "Beta Export Control Reporting" { depends !start_stage_beta {gaplength 1d} flags releng, pm } # two days to create web banner # one day for websites team to add to www.fedoraproject.org # should be live one day before the release task beta_banner "Beta Release Banner" { precedes !beta_drop {gaplength 3d} task beta_create_banner "Create Beta Website Banner" { length 2d flags design } task beta_publish_banner "Add Beta Banner to Website" { length 1d flags web } } # four weeks prior to GA task beta_drop "Beta Release Public Availability" { milestone depends !stage_beta flags docs, releng, quality, pm, translation, proto, proto2, design, devel, key, marketing, roadmap, blocker } # three weeks of public testing task beta_test "Beta Testing" { depends !stage_beta length 15d flags quality, releng, proto, proto2 } task websites_trans_reminder "Reminder to f-websites-list about POT/PO dates in 7 days" { depends !beta_drop flags translation, web } # two weeks to create # should be completely done and ready for hand off to Ambassadors two weeks before GA # Ambassadors should have made prior arrangements to flip artwork over to media producer # at this time. # FIXME: need an ambassadors task which tracks pre-coordination with printer and media producer task media "Create DVD/CD label and sleeve artwork" { # not a "great" place to anchor to as it could move # needs to start four weeks before GA depends !beta_drop length 10d flags design } task rc_rawhide_install "Pre-RC Branched Acceptance Test Plan" { depends !stage_beta {gaplength 7d} length 4d flags quality } task testmile "End of Beta Testing" { milestone depends !beta_test flags quality, releng, proto } # Start after Beta ships task ga_blocker1 "Final Blocker Meeting (${content}${major}blocker) #1" { depends !!!TestingPhase.beta.beta_drop {gaplength 3d} flags releng, quality, devel, pm, blocker } task ga_blocker2 "Final Blocker Meeting (${content}${major}blocker) #2" { depends !ga_blocker1 {gaplength 5d} flags releng, quality, devel, pm, blocker } } } # E N D of TestingPhase task LaunchPhase "Launch Phase" { # four weeks before GA ambassadors create release posters--two weeks # two weeks before GA to art team does final polish to posters # posters are ready on release day! task release_posters "Release Party Posters" { depends !!TestingPhase.beta.beta_drop task create_posters "Create Release Party Posters" { length 10d flags ambassadors } task polish_poster "Polish/Finalize Release Party Posters" { depends !create_posters length 9d flags design } } task screenshots "Update and freeze the screenshots page" { depends !!TestingPhase.beta.stage_beta {gaplength 5d} length 5d flags marketing } task final_screenshots "Marketing: Final Screen Shots" { depends !screenshots length 5d flags marketing } task final_marketing_notes "Marketing: Final One Page Release Notes" { depends !screenshots length 5d flags marketing } # extend for 2 week overall schedule slip task briefings "Brief news distribution network" { depends !screenshots plan: length 5d actual: length 15d flags marketing } # extend for 2 week overall schedule slip task monitor "Monitor news sites to provide corrections & info" { depends !screenshots plan: length 29d actual: length 39d flags marketing } task rc "Release Candidate" { task final_freeze "Development: Final Freeze" { depends f13.TestingPhase.beta.beta_test flags releng, docs, translation, pm } task announce_final_freeze "Announce Final Freeze & Implications" { depends !final_freeze flags pm } task eol_warning "File RHT Eng-ops ticket for EOL Bugzilla warning" { depends !final_freeze flags pm } task final_infrastructure_freeze "Final Infrastructure Change Freeze" { depends f13.TestingPhase.beta.beta_test length 10d flags infrastructure, releng } task ga_blocker3 "Final Blocker Meeting (${content}${major}blocker) #3" { depends !!!TestingPhase.beta.ga_blocker2 {gaplength 5d} flags releng, quality, devel, pm, blocker } task ga_blocker4 "Final Blocker Meeting (${content}${major}blocker) #4" { depends !ga_blocker3 {gaplength 3d} flags releng, quality, devel, pm, blocker } task ga_release_notes "Final Release Notes" { task prep_ga_notes "Prepare GA Release Notes" { depends !!!!TestingPhase.beta.beta_drop flags docs, quality } task ga_release_notes_freeze "String Freeze: GA Release Notes" { depends !prep_ga_notes {gaplength 4d} flags docs } task wiki_ga_port "Port diff wiki content to Publican" { depends !ga_release_notes_freeze length 5d flags docs } task remind_trans_ga_notes "Remind Translation: RPM Freeze (no more POTs) in 5 days" { depends !ga_release_notes_freeze {gaplength 2d} flags docs } # FIXME: normalize "depends" and anchoring of this task for Fedora 14 # extend by 5d because of one week slip of Fedora 13 Beta # KEY ADJUSTMENT POINT for Beta task ga_pot_trans "Translate Final Release Notes (POT to PO)" { depends f13.TestingPhase.beta.beta_release_notes.trans_release_notes_deadline {gaplength 1d} plan: length 24d actual: length 29d flags translation } task ga_release_notes_pot "Generate GA Release Notes POT files for Translation" { depends !wiki_ga_port flags docs } task build_trans_review_final "Build GA release note htmls for Translation" { depends !ga_release_notes_pot {gaplength 1d} length 4d flags docs } task build_ga_trans_review "Review and correct GA Release Notes (daily builds html)" { depends !ga_release_notes_pot {gaplength 1d} length 4d flags docs, translation } task remind_ga_trans_deadline "Remind Translators of GA Release Notes Deadline in 4 days" { depends !ga_release_notes_pot {gaplength 3d} flags docs, translation } task ga_release_notes_po "Translation Deadline: GA rel-notes (PO Files complete)" { milestone depends !ga_pot_trans flags translation } task ga_release_notes_rpm "Build fedora-release-notes.rpm" { depends !ga_release_notes_po length 2d flags docs } } #end final release notes # Three banners are created for the GA release (based on the Slogan from Marketing) # 1) large banner--fedoraproject.org front page # 2) "the release is out, go get it"--fedoraproject.org front page # 3) release name on start.fedoraproject.org # banners take one week to complete # banners should be completed one week before GA # banners are translated the week up until GA # translated during the week up until GA task ga_create_banners "Create Final Release Banners" { depends !!!TestingPhase.beta.testmile length 9d flags design } # FIXME: find an automated anchor for this task--end of beta is 1 day too late # add an extra week for slip of Fedora 13 Beta task create_ga_announce "Create GA Announcement (Docs & Marketing)" { plan: start 2010-04-26 actual: start 2010-05-03 length 7d flags docs, marketing } task translate_ga_announce "Translate GA Announcement" { depends !create_ga_announce length 5d flags translation } task translate_ga_announce_deadline "Translation Deadline: GA Announcement" { depends !translate_ga_announce flags translation } task ga_publish_banners "Add Final Release Banners to Website" { depends !ga_create_banners length 1d flags web } # web propertities need to be updated and translated # Tasks start at time Beta Release goes out # http://fedoraproject.org/en/index # http://fedoraproject.org/en/get-fedora # http://fedoraproject.org/en/join-fedora # http://fedoraproject.org/en/get-help task web_content_update "Update Website Content" { depends !!!TestingPhase.beta.beta_drop length 5d flags web } task web_freeze "Website String Freeze" { depends !web_content_update milestone flags web } task web_create_pot "Create Website POT Files" { depends !web_freeze length 1d flags web } task trans_web "Translation Period for Website (POT to PO)" { depends !web_create_pot length 9d flags translation } task review_trans_web "Review and correct Website translations" { depends !trans_web length 4d flags translation, web } task finish_trans_web "Translation Deadline: Websites (POs done)" { depends !review_trans_web flags translation } task publish_trans_web "Publish Translations on Website (fedoraproject.org)" { depends !review_trans_web length 1d flags web } task final_meeting_announce "Announce: Final Release Readiness Meeting" { depends !!!TestingPhase.beta.beta_test {gaplength 1d} flags pm } task final_meeting_reminder "Reminder: Final Release Readiness Meeting" { depends !final_meeting_announce {gaplength 3d} flags pm } task ga_meeting "${content_title} ${major} Final Release Readiness Meeting" { depends !final_meeting_reminder {gaplength 3d} milestone flags releng, pm, quality, docs, design, marketing, translation, web } # no duration so it gets picked up in ICS file task start_compose_rc_ics "Compose 'Final' RC" { depends !!!TestingPhase.beta.beta_test {gaplength 2d} flags releng, key, roadmap, proto2, blocker, devel, hidden } # show duration of composing RC to reflect slip task start_compose_rc "Compose 'Final' RC" { depends !!!TestingPhase.beta.beta_test {gaplength 2d} plan: length 1d actual: length 5d flags releng, key, roadmap, proto2, blocker, devel } # reflect slip of final by one week because blocker list was not cleared task test_rc "Test 'Final' RC" { depends !start_compose_rc plan: length 5d # actual: length 10d flags quality, devel } task enable_updates "Enable Fedora 13 Updates" { depends !!!TestingPhase.beta.beta_test {gaplength 2d} flags releng } # NOTE: use of precedes task create_rc_tc "Create 'Final' Test Compose (TC)" { precedes !start_compose_rc {gaplength 6d} length 0.1h flags releng, proto2 } task test_rc_tc "Test 'Final' Test Compose" { depends !create_rc_tc length 5d flags releng, quality, proto2 } task start_stage_rc "Start Stage & Sync RC to Mirrors" { depends !test_rc flags releng } task stage_rc "Stage & Sync RC to Mirrors" { depends !test_rc length 3d flags releng, proto2 } # set hardcoded event for slip task final_go_not1 "${content_title} ${major} Final Go/No-Go Meeting (20:00 EST)" { start 2010-05-11 flags releng, quality, docs, proto, pm, proto2, blocker } task final_go_not2 "${content_title} ${major} Final Go/No-Go Meeting (20:00 EST)" { depends !start_compose_rc {gaplength 3d} flags releng, quality, docs, proto, pm, proto2, blocker } task final_export_control "Final Export Control Reporting" { depends !start_stage_rc {gaplength 1d} flags releng, pm } # this is a shadow task so that precedes will work within this section # depends on staging RC so that 0-day dates end up in the right place--right before launch task drop "Hidden GA Release Task" { depends !stage_rc length 1d flags hidden } task zero_day_relnotes "Zero Day Release Notes" { task zero_day_web "0-Day rel-notes update docs.fp.org" { depends !!start_compose_rc {gaplength 1d} length 6d flags docs } task zero_day_rpm "0-Day rel-notes build updated rpm" { depends !!start_compose_rc {gaplength 1d} length 6d flags docs } task zero_day_pot "0-Day rel-notes generate POT" { depends !!start_compose_rc {gaplength 1d} length 6d flags docs } task zero_day_trans "Translate rel-notes nightly POT builds" { depends !!start_compose_rc {gaplength 1d} length 6d flags translation } task zero_day_deadline "Translation Deadline: 0-Day (PO Files complete)" { depends !zero_day_trans milestone flags translation } task web_post "Add translated zero-day updates to docs.fp.org" { depends !zero_day_trans flags docs } task push_updates_rpm "Push updated rel-notes RPMs to Updates repo" { start 2010-05-06 flags docs } } # zero_day_relnotes } # end of rc task # Required for product pages--do not change description # Also make sure to confirm this date with Red Hat IS to # make sure it does not conflict with other releases. This should # generally not be a problem because of: # https://fedoraproject.org/wiki/Infrastructure/Red_Hat_bandwidth_effects task ga "GA Release" { depends !rc.stage_rc flags hidden, roadmap } task bugzilla_descrption "Reflect supported versions in Bugzilla product description" { depends !rc.stage_rc flags pm } task bugzilla_eol_warning "Add Warning to All Fedora 11 Bugzillas about EOL" { depends !rc.stage_rc flags pm } task final "Final (GA) Release" { depends !rc.stage_rc flags quality, releng, docs, design, pm, translation, proto, proto2, devel, key, marketing, roadmap } task marketing_post "Marketing Retrospective" { depends !final length 10d flags marketing } } /* task MaintenancePhase "Maintenance Phase" { } */ } # Bitter End