Difference between revisions of "Fall 2013 SBR600 Weekly Schedule"

From CDOT Wiki
Jump to: navigation, search
(Thursday (October 3))
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Fall 2013 SBR600]]
 
[[Category:Fall 2013 SBR600]]
<!-- {{Admon/important|Tentative Schedule - Fall 2012|Please note that the schedule here is tentative. Week-by-week details will be added as the course progresses.}} -->
+
{{Admon/important|Tentative Schedule - Fall 2013|Please note that the schedule here is tentative. Week-by-week details will be adjusted as the course progresses.}}
{{Chris Tyler Draft}}
 
  
 
This is the Fall 2013 weekly schedule for the [[SBR600]] course.
 
This is the Fall 2013 weekly schedule for the [[SBR600]] course.
  
 
Previous semester: [[Fall 2012 DPI908/SBR600 Weekly Schedule]]
 
Previous semester: [[Fall 2012 DPI908/SBR600 Weekly Schedule]]
 +
  
 
<!--  ---------------------------------------------------------------------------------------------- Week 1 ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Week 1 ------------ -->
 +
 
= Week 1 - Introduction =
 
= Week 1 - Introduction =
 
== Tuesday (September 3) ==
 
== Tuesday (September 3) ==
Line 36: Line 37:
 
== Thursday (September 5) ==
 
== Thursday (September 5) ==
  
* Communication Tool Setup
+
* What is Open Source?
 +
** [http://opensource.org/osd The Open Source Definition]
 +
** For comparison: [http://www.gnu.org/philosophy/free-sw.html Free Software Definition] (and [http://www.fsf.org/about/what-is-free-software related essay])
 +
** What about money? (Open source business models)
 +
** The [[Open Source Professional Option Student Agreement]]
 +
* [[DPI908/SBR600 Communication Tools|Communication Tools]] used in Open Source Projects
 +
** IRC
 +
** Wiki
 +
** Blog/planets
 +
** Bugzilla
 +
** Mailing lists
  
 
=== To Do ===
 
=== To Do ===
Line 43: Line 54:
 
# [[SBR600 Communication Lab|Communication Lab]]
 
# [[SBR600 Communication Lab|Communication Lab]]
 
# [[SBR600 Fedora Installation|Fedora Installation]]
 
# [[SBR600 Fedora Installation|Fedora Installation]]
# Submit the ''Open Source Student Agreement''
+
# Submit a signed copy of the [[Open Source Professional Option Student Agreement]]
  
 
<!--  ---------------------------------------------------------------------------------------------- Week 2 ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Week 2 ------------ -->
Line 54: Line 65:
  
 
* [[Make and Makefiles]]
 
* [[Make and Makefiles]]
 +
 +
=== GNU Autotools ===
 +
 +
* The challenge of adjusting a Makefile
 +
* The GNU Autotools / GNU Build System
 +
** '''GNU autoconf''' (Makefile.in -> Makefile via configure script)
 +
** GNU automake (Makefile.am -> Makefile.in)
 +
** GNU libtool
 +
** GNUlib
  
 
=== Building from Source ===
 
=== Building from Source ===
Line 88: Line 108:
  
 
* Two simple [http://matrix.senecac.on.ca/~chris.tyler/osd600/makefile-examples.tgz makefile examples]
 
* Two simple [http://matrix.senecac.on.ca/~chris.tyler/osd600/makefile-examples.tgz makefile examples]
* [[:fedora:PackageMaintainers|Fedora Package Maintainers page]]
+
<!-- * [[:fedora:PackageMaintainers|Fedora Package Maintainers page]]
 
** [[:fedora:PackageMaintainers/CreatingPackageHowTo|Packaging How-To]]
 
** [[:fedora:PackageMaintainers/CreatingPackageHowTo|Packaging How-To]]
 
* ''Fedora Linux'' chapter 5 (see Seneca Library website > eBooks > View All > Safari > Fedora Linux).
 
* ''Fedora Linux'' chapter 5 (see Seneca Library website > eBooks > View All > Safari > Fedora Linux).
 
* rpmlint
 
* rpmlint
** [[:fedora:Common Rpmlint issues|Fedora Common Rpmlint issues]]
+
** [[:fedora:Common Rpmlint issues|Fedora Common Rpmlint issues]] -->
 +
* [http://www.gnu.org/savannah-checkouts/gnu/automake/manual/html_node/index.html#Top GNU Automake/Autotools documentation]
 +
* [http://en.wikipedia.org/wiki/GNU_build_system GNU Build System] (Wikipedia)
  
 
=== To Do ===
 
=== To Do ===
  
By '''Wednesday, September 12''':
+
By '''Thursday, September 12''':
 
# [[DPI908/SBR600 Build-from-Source Lab|Build-from-Source Lab]]
 
# [[DPI908/SBR600 Build-from-Source Lab|Build-from-Source Lab]]
 
# Send your [[SSH]] public key to your professor.
 
# Send your [[SSH]] public key to your professor.
Line 108: Line 130:
 
=== To Do ===
 
=== To Do ===
  
By '''Monday, September 17''':
+
By '''Tuesday, September 17''':
 
* [[DPI908/SBR600 RPM-Writing Lab|RPM-Writing Lab]]
 
* [[DPI908/SBR600 RPM-Writing Lab|RPM-Writing Lab]]
  
 
<!--  ---------------------------------------------------------------------------------------------- Week 3 ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Week 3 ------------ -->
 +
 
= Week 3 - Mock and Koji, Signing and Repos =
 
= Week 3 - Mock and Koji, Signing and Repos =
  
Line 139: Line 162:
 
== Thursday (September 19) ==
 
== Thursday (September 19) ==
  
 +
=== Signing and Repository Creation ===
 
[[Signing and Creating a Repository for RPM Packages]]
 
[[Signing and Creating a Repository for RPM Packages]]
  
Line 146: Line 170:
 
# [[DPI908/SBR600 RPM Signing Lab|RPM Signing Lab]]
 
# [[DPI908/SBR600 RPM Signing Lab|RPM Signing Lab]]
 
# [[DPI908/SBR600 Repo Creation Lab|Repo Creation Lab]]
 
# [[DPI908/SBR600 Repo Creation Lab|Repo Creation Lab]]
-->
 
  
 
<!--  ---------------------------------------------------------------------------------------------- Week 4 ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Week 4 ------------ -->
Line 163: Line 186:
 
*** See what work has already been done related to that project. Check the Seneca wiki for work by previous SBR600 semesters, the upstream project's wiki and mailing list archives for information about the current state of the project, and the web for related information (similar projects being done by other groups).
 
*** See what work has already been done related to that project. Check the Seneca wiki for work by previous SBR600 semesters, the upstream project's wiki and mailing list archives for information about the current state of the project, and the web for related information (similar projects being done by other groups).
 
*** Join the mailing lists and IRC channels of the upstream community.
 
*** Join the mailing lists and IRC channels of the upstream community.
** Update the [[Winter 2013 SBR600 Participants]] table with your project information, according to the instructions at the top of that page.
+
** Update the [[Fall 2013 SBR600 Participants]] table with your project information, according to the instructions at the top of that page.
 
* On Thursday we'll sort out project conflicts.
 
* On Thursday we'll sort out project conflicts.
* [[User:Chris Tyler|Your professor]] will approve your project selection via the [[Winter 2013 SBR600 Participants|participants page]].
+
* [[User:Chris Tyler|Your professor]] will approve your project selection via the [[Fall 2013 SBR600 Participants|participants page]].
* Link your project title on the [[Winter 2013 SBR600 Participants|participants page]] to a page of the same name to create a project page. Copy the contents of the [[Sample Project]] page to your project page and fill in the details.
+
* Link your project title on the [[Fall 2013 SBR600 Participants|participants page]] to a page of the same name to create a project page. Copy the contents of the [[Sample Project]] page to your project page and fill in the details.
  
 
This week, finalize your project plans and get started on your project:
 
This week, finalize your project plans and get started on your project:
Line 199: Line 222:
  
 
Resources:
 
Resources:
* http://git-scm.com/
+
* GIT
* https://github.com/
+
** http://git-scm.com/
 +
** https://github.com/
 +
* fedpkg
 +
** [[:fedora:Using Fedora GIT]]
 +
** [[:fedora:Using git FAQ for package maintainers]]
 +
 
 +
A lot of open source software (and some proprietary software!) is hosted at [http://github.com/ GitHub]
  
 
== Thursday (October 3) ==
 
== Thursday (October 3) ==
Line 207: Line 236:
  
 
[[SBR600 Python Lab|Python Lab]]
 
[[SBR600 Python Lab|Python Lab]]
 +
 +
Resources:
 +
* [http://www.diveintopython.net/ Dive Into Python] - Also available in print form, or as a Fedora package (<code>yum install diveintopython</code>)
 +
* [http://docs.python.org/2/tutorial/ The Python Tutorial]
  
 
<!--  ---------------------------------------------------------------------------------------------- Week 6 ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Week 6 ------------ -->
Line 222: Line 255:
  
 
{{Admon/important|Thanksgiving|Monday, October 14 is the Thanksgiving Holiday.}}
 
{{Admon/important|Thanksgiving|Monday, October 14 is the Thanksgiving Holiday.}}
{{Admon/caution|No Class October 15 & 17|Our class will not be meeting this week. Your professor will be at a Polytechnics Canada meeting in Calgary but will be communicating by e-mail (and possibly IRC). Please use this time to work on your 0.1 Project Milestones. You can meet with your professor on Monday or Friday, by appointment.}}
+
 
 +
This week you'll be working on your 0.1 releases. We'll use the class time to discuss and work on issues and challenges that you're facing.
  
 
<!--  ---------------------------------------------------------------------------------------------- Study Week ------------ -->
 
<!--  ---------------------------------------------------------------------------------------------- Study Week ------------ -->
Line 247: Line 281:
  
 
= Week 10 - Presentations =
 
= Week 10 - Presentations =
 +
 +
{{Admon/caution|Possibly no class November 14|Class on November 14 may be cancelled.}}
  
 
== Tuesday (November 12) and Thursday (November 14) ==
 
== Tuesday (November 12) and Thursday (November 14) ==
Line 518: Line 554:
 
= Guest Lecture Notes =
 
= Guest Lecture Notes =
 
* [[DPI908/SBR600 Guest Lecture-Paul Whalen-20121119]]
 
* [[DPI908/SBR600 Guest Lecture-Paul Whalen-20121119]]
 +
-->
 +
 +
<!--
 +
  September 2013 
 +
Su Mo Tu We Th Fr Sa
 +
1  2  3  4  5  6  7    1
 +
8  9 10 11 12 13 14    2
 +
15 16 17 18 19 20 21    3
 +
22 23 24 25 26 27 28    4
 +
29 30
 +
 +
    October 2013 
 +
Su Mo Tu We Th Fr Sa
 +
      1  2  3  4  5    5
 +
6  7  8  9 10 11 12    6
 +
13 14 15 16 17 18 19    7 - Polytechnics
 +
20 21 22 23 24 25 26    FSOSS
 +
27 28 29 30 31        8 - LCA / ARM TechCon
 +
 +
    November 2013 
 +
Su Mo Tu We Th Fr Sa
 +
                1  2    8
 +
3  4  5  6  7  8  9    9 - AWAY
 +
10 11 12 13 14 15 16    10
 +
17 18 19 20 21 22 23    11
 +
24 25 26 27 28 29 30    12
 +
 +
    December 2013 
 +
Su Mo Tu We Th Fr Sa
 +
1  2  3  4  5  6  7    13
 +
8  9 10 11 12 13 14    EXAM
 +
15 16 17 18 19 20 21    PROMOTION
 +
22 23 24 25 26 27 28    CHRISTMAS
 +
29 30 31
 +
 
-->
 
-->

Latest revision as of 10:33, 3 October 2013

Important.png
Tentative Schedule - Fall 2013
Please note that the schedule here is tentative. Week-by-week details will be adjusted as the course progresses.

This is the Fall 2013 weekly schedule for the SBR600 course.

Previous semester: Fall 2012 DPI908/SBR600 Weekly Schedule


Contents

Week 1 - Introduction

Tuesday (September 3)

Welcome

  • About this course
  • Introductions

Intro to SBR600 - Software Build & Release

Thursday (September 5)

To Do

By Tuesday, September 10:

  1. Communication Lab
  2. Fedora Installation
  3. Submit a signed copy of the Open Source Professional Option Student Agreement


Week 2 - Building from Source & RPM Packaging

Tuesday (September 10)

Using make

GNU Autotools

  • The challenge of adjusting a Makefile
  • The GNU Autotools / GNU Build System
    • GNU autoconf (Makefile.in -> Makefile via configure script)
    • GNU automake (Makefile.am -> Makefile.in)
    • GNU libtool
    • GNUlib

Building from Source

  • Obtaining source code
  • Configuring the build
  • Performing the build
  • Testing the build
  • Installing the built software

RPM Packages

  • Differences between managing RPMS and Installing from Source
    • RPMS provide a database of installed software
      • Let you determine what's installed
      • Automatic management of dependencies
      • Identify the origin of files
      • Permit easy update or removal
      • Enable you to verify installation (useful for spotting file corruption and intrusions)
  • Contents of an RPM Package

The RPM Database

Using SSH

  • Using SSH - a Review
    • Using public/private keypairs
    • Passphrase protection
    • Keyrings

Resources

To Do

By Thursday, September 12:

  1. Build-from-Source Lab
  2. Send your SSH public key to your professor.

Thursday (September 12)

Creating an RPM Package

To Do

By Tuesday, September 17:


Week 3 - Mock and Koji, Signing and Repos

Tuesday (September 17)

Mock

Mock is a tool which builds a package using rpmbuild in a 'cleanroom' environment. This has several advantages:

  • it tests the completeness of the BuildRequires in the spec file
  • it avoids the installation of a lot of tools (BuildRequires) on the main host system
  • it permits different tools and tool versions to be used for the build than are installed on the host (e.g., building for F18 on an F16 system)

Background information on using Mock:


Using Koji to Test on Multiple Architectures

To Do

By Thursday, September 19:

  1. Mock Lab
  2. Koji Lab

Thursday (September 19)

Signing and Repository Creation

Signing and Creating a Repository for RPM Packages

To Do

By Tuesday, September 24:

  1. RPM Signing Lab
  2. Repo Creation Lab


Week 4 - Project Selection

Tuesday (September 24) and Thursday (September 26)

Project Selection

This is a project-based course. These projects involve participation in an open-source community.

  • Projects are listed on the SBR600 Potential Projects page.
  • Select two or three projects that are of interest to you.
    • Do some initial research into what the project involves.
      • Find out who to talk to in the community (start with the initial contacts listed on the project description)
      • See what work has already been done related to that project. Check the Seneca wiki for work by previous SBR600 semesters, the upstream project's wiki and mailing list archives for information about the current state of the project, and the web for related information (similar projects being done by other groups).
      • Join the mailing lists and IRC channels of the upstream community.
    • Update the Fall 2013 SBR600 Participants table with your project information, according to the instructions at the top of that page.
  • On Thursday we'll sort out project conflicts.
  • Your professor will approve your project selection via the participants page.
  • Link your project title on the participants page to a page of the same name to create a project page. Copy the contents of the Sample Project page to your project page and fill in the details.

This week, finalize your project plans and get started on your project:

  • The project page must be filled in, including your 0.1, 0.2, and 0.3 targets. Ensure that you have a link from the Projects column of the Fall 2013 SBR600 Participants table to a page for your project; use the Sample Project template for your project page, and fill in as much detail as possible.
    • Release 0.1: Proof of concept (e.g., a first draft of a package, a basic script, infrastructure set up on a test system) - Note that this must include the release of something, not just research, and must be done in consultation with the community.
    • Release 0.2: Basic Technical Work Complete - Whatever you are working on -- package, script, infrastructure configuration -- should be working, although it may not be feature-complete, fully deployed, or fully documented. Feedback from the community should be solicited. If there is a review process required to submit upstream, it should be started.
    • Release 0.3: Completed Working State - The work is complete and documented. Any upstream review, whether formal or informal, has been completed, feedback has been incorporated into the project, and the work has been committed to the appropriate repositories (or released in an appropriate manner).
  • You must have a strategy in place for reaching your targets.

Be prepared to give a professional, detailed, but very brief (2- to 4-minute) presentation on your project plan. Include:

  • Your approach to the problem.
  • Contacts and resources you've identified.
  • Your plans for each release. Note that at each release you will be expected to actually release something -- an RPM, a script, test results -- as appropriate to your project. Identify what you are intending to release at each stage:
    • 0.1 Release - Proof of Concept
    • 0.2 Release - Basic Technical Work Complete
    • 0.3 Release - Completed Working State
  • Challenges and potential pitfalls that you have identified, and your approach to mitigating those challenges so that you can complete your project on time regardless of things beyond your control.
  • Time for a brief Q&A/Feedback session at the end.

To Do


Week 5 - Using GIT and Python

Tuesday (October 1)

Using GIT and FedPkg

Resources:

A lot of open source software (and some proprietary software!) is hosted at GitHub

Thursday (October 3)

Python Primer

Python Lab

Resources:


Week 6 - Presentations

Tuesday (October 8) and Thursday (October 10)

Project Plan (Release 0.0) Presentations


Week 7 - Project Work

Important.png
Thanksgiving
Monday, October 14 is the Thanksgiving Holiday.

This week you'll be working on your 0.1 releases. We'll use the class time to discuss and work on issues and challenges that you're facing.


Study Week and FSOSS

  • Please don't leave your 0.1 milestone work until the last minute!
  • Your professor will be around campus most of the week, working on FSOSS. He is also available to meet regarding projects from Monday to Wednesday, by appointment.
  • FSOSS 2012 is Thursday/Friday October 24/25.


Week 8 - Project Work

Stop (medium size).png
No Class October 19 & 31
Our class will not be meeting this week. Your professor will be at Linaro Connect / ARM TechCon in California but will be communicating by e-mail (and possibly IRC). Please use this time to work on your 0.1 Project Milestones.


Week 9 - Project Work

Stop (medium size).png
No Class November 5 & 7
Our class will not be meeting this week. Your professor will be hiding in a secret location with no Internet access whatsoever.


Week 10 - Presentations

Stop (medium size).png
Possibly no class November 14
Class on November 14 may be cancelled.

Tuesday (November 12) and Thursday (November 14)

Release 0.1 Presentations


Week 11 - Practical Quiz & Project Work

Tuesday (November 19)

Practical Quiz

  • The quiz consists of one task: you will need to update an RPM to the latest upstream version of the software. For example, if the package is foo-2-1 and there is a new upstream version 3 of foo available, you will need to produce a foo-3-1 package. It would be worthwhile practicing this task in advance.
  • The practical quiz will be in T3076 (which not our normal room) so that lab computers will be available.
  • Make sure that you have access to your Fedora system, either on your laptop, on a removable disk pack, or through an SSH connection to one of your computers at home. Verify your arrangements! You may want to bring a Fedora Live system on USB or DVD as a backup.
  • You may use your notes and online resources during the quiz. However, you may not share information with other people during the quiz.

Thursday (November 21)

Problem Solving

  • We will brainstorm on solutions to project problems.


Week 12 - Presentations

Tuesday (November 26) and Thursday (November 28)

Release 0.2 Presentations


Week 13 - Wrap-up

Tuesday (December 3)

Problem Solving

  • We will brainstorm on solutions to project problems.

Thursday (December 5)

Wrap-Up

  • Final opportunity to get help and feedback on your project work.


Exam Week

Projects Due