An introduction and exploration of concepts and issues related to large-scale software systems development. Areas of exploration include technical complexities, organization issues, and communication techniques for large-scale development. Students participate through teams emulating industrial development. The projects cover the principal system development life-cycle phases from requirements analysis, to software design, and to final implementation. Issues relating to real-time control systems, human factors, reliability, performance, operating costs, maintainability, and others are addressed and resolved in a reasonable manner. Prerequisite: Junior or Senior standing
This course is intended to introduce students to the concepts of Open Source software development as well as deliver a software product for a real-world client. Specific areas of focus are:
- History of Open Source
- Communities and governance
- Technologies used
- Source control
- Communications tools
- Issue trackers
- Legal aspects (licensing/foundations)
Additionally, students should expect to be challenged in areas of personal development related to the business environment such as giving presentations, writing position papers and performing the full lifecycle of software development in a team setting.
Daniel Ruggeri - druggeri primary.net
Daniel Evans - evans23 wustl.edu
Mon/Wed 5:30pm - 7:00pm, 101 Lopata Hall
E81 CSE 437S
Open Source Software ~ Karl Fogel
ISBN: 0596007590, ISBN-13: 978-0596007591
Download free at http://producingoss.com/
In full transparency, the assignments as well as how they are graded are shared in this section
This is the bulk of the grade you will earn as well as the primary focus of the class. Each student will participate in a team responsible for delivering a software product to a client. By the middle of the semester, an MVP should be completed. By the end of the semester, the final project with client feedback incorporated is expected.
- Students will share ideas of projects in the second week
- The client may be any real-world use case. Non-for-profits, corporate projects, campus projects, etc are all encouraged
- You may not be your own client
- Your client and their satisfaction is greatly important
- Teams will be self-formed by the students and will consist of five to seven students
- Each member of the team will receive the same grade for the project as a whole
- Choose your teammates wisely - ensure coverage of important skills (code and non-code)
Grading for the project will be based on the effective execution of the following SDLC aspects:
- Gathering requirements and understanding the client's needs
- Incorporating client feedback into designs post-MVP
- Overall project planning and timing
- Time management and aligning deliverables in expected sprints
- User experience and non-code materials (documentation, UI, ease of use, etc)
- "Marketing" and presenting the final result
- Effective use of team skills and individual expertise
- Client evaluation of the delivered product
The system must be delivered in whole for grading. Examples:
- Projects delivering a web-based resource would provide the public URL and credentials for evaluation
- Projects delivering mobile applications would provide a physical device for evaluation (sorry - instructor will not install things onto his gear)
- Projects delivering software that operates on a desktop environment would provide a virtual machine image (VirtualBox preferred) on a thumb drive
The final system will be presented to the class and your clients. This presentation will take between 20 and 30 minutes.
Homework assignments will be passed out from time to time involving reading, researching or taking some action. These assignments should be completed by the next class
Each student will be required to give a short presentation about a topic related to Open Source of their choosing (approved by instructor). The presentation should be 5 to 10 minutes long.
The reason for this requirement is two-fold:
- To ensure a certain level of mastery of the topic such that it can be explained well
- To ensure a certain level of mastery in giving a presentation
This is so each student gets experience in exercising their "marketing" muscle which is not only required in the world of business, but also the world of Open Source. While presentations will be graded on content, a significant portion of the grade will also come from organization of the content, aesthetics of any materials presented as well as the ability to adhere to guiding principles for good presentations.
Some ideas:
- Why I love the (name) Open Source project
- Five ways to make money on Open Source
- An analysis of Open Source license X versus license Y
- A guide to getting started in an Open Source project
Communicating well is critically important in the world outside of the classroom and, similar to giving presentations, is a muscle that must be exercised regularly. Students will be tasked with writing short papers in the form of: ** Summary documents ** which should be written in a form suitable for a manager to understand the landscape or overview of a concept they are not familiar with. In addition to the points earned in position papers, these documents will also be graded on accuracy of their factual contents and the simplification of complex topics.
Exactly 1 physical page
I am a manager that has worked in manufacturing all of my career but have recently moved to become the manager of a software development team.
I hear people mention "source control" and things like "commit", "branch", "tag" and such but I don't know what any of these things are.
Provide me a one-pager that explains what source control is and gives a few key terms/definitions.
The world of Open Source is driven by community so it is important that the community within our classroom is full of individuals willing to contribute to the success of the whole class. Therefore, participation during discussions and presentations as well as within code and the project will be measured over the course of the semester and will contribute to a significant portion of the grade.
Through the course of the semester, students will have opportunities to earn extra credit. Opportunities will be shared as they come along.
- Contribute fixes to this course's content
- Contribute fixes to a real Open Source project
- Attend ACM events
Item | Points | Percentage |
---|---|---|
Homework | 20 | 4% |
Class Participation | 20 | 4% |
Paper: Source Control for Pointy hairs | 30 | 6% |
Presentation: About My Favorite Project | 30 | 6% |
Midterm | 50 | 10% |
Final | 50 | 10% |
Team Project | 300 | 60% |
Total | 500 |
This is the planned schedule of events for the course. Since topics may run longer or come up short, expect some minor alterations. It's also important to note that when you see discussion comes up in the schedule, you should expect the instructor to ask questions that will verify your understanding/homework as well as to cover some of the topics in depth.
Most class periods will be split between lecture/discussion about Open Source Software topics or class-wide work (30 to 45 minutes) with the remainder of the time dedicated to working within your teams and seeking guidance from the instructor.
- Get to know each other
- Cover syllabus
- Discuss project
- Understand sprints and retros
- Homework: Read chapter 1 of book
- Topic: Open Source intro and history - lecture notes
- Share and present project ideas
- Post-it notes!
- Begin forming teams and seeing what works
- During the time off, solidify your teams and get cracking
- Topic: TODO
- Teams and projects are set
- Plan and outline sprint 1
- Check-in:
- You know your project well
- Your teammates are now your closest friends :-)
- Analysis should be well under way
- Homework: Read Chapter 3 - Version Control section
- Topic: Source Control - lecture notes
- Remember the Source Control for Pointy Hairs paper is coming
- Topic: Source Control - Additional concepts - lecture notes
- Beware of "fork" term
- Branching
- Tags
- Homework: Source Control for Pointy Hairs paper
- Paper (Source Control for Pointy Hairs) is due
- 12:00 am 2/4/2019 (Sunday Night, Monday Morning)
- 1 Page Single Spaced
- Turn in to evans23 at wustl.edu
- Topic: TODO
- Team project presentations
- Five to ten minutes, as a team
- Who is your client and what is your project?
- Who are your experts in the team?
- Homework: Read Chapter 7 - Packaging "Compilation and Installation" and "Binary packages" subsections
- Topic: Building software - lecture notes
- Local builds
- Local tools
- Plan and outline sprint 2
- Sprint 1 retro
- Check-in:
- Analysis should be complete
- Design should be under way
- Some code should already be in development
- UX thoughts should be starting to form
- Topic: Managing dependencies - lecture notes
- What is a dependency?
- Why use a library?
- Automated dependency management
- Topic: Application environments (dev, stage, prod)
- Topic: Build systems - lecture notes
- Overview
- What are they/Why do I care?
- Declaration of build steps
- Continuous Integration (CI)
- Continuous Delivery/Deployment (CD)
- Overview
- Homework: Read Chapter 5 - Economics of Open Source and Types of Corporate Involvement
- Topic: Let's talk DevOps
- Sprint 2 retro
- Plan and outline sprint 3
- Check-in:
- Overall design should be gelled
- Double-check analysis work - anything to revisit?
- Continue coding
- Homework: Read Chapter 3 - Bug Tracker
- Topic: Discuss bug tracking chapter learnings - lecture notes
- Issue Tracking - overview
- Bugs vs issues
- Topic: Issue Tracking - applied
- Lab: Create an issue
- Homework: Create your own issue
- If this issue is for our class, resolve it with a pull request
- If this issue is in a real project, extra points if you resolve it!
- Go around the room
- What issue did you report?
- Open time - questions/review for midterm
- Mid term examination
- Sprint 3 retro
- Plan and outline sprint 4
- Check-in:
- MVP!!!
- Major internal system integrations are in place
- Major external system integrations are well under way
- Overall design should be complete
- Begin designing/creating documentation
- Topic: Communities and their importance - lecture notes
- Topic: Releasing software - lecture notes
- Versioning
- Release procedures
- Topic: Community models (part 1) - lecture notes
- Open Source Presentations
- Presenter 1: Dorian Stubblefield
- Topic: Henry Ford's contribution to open source.
- Presenter 2:
- Topic:
- Presenter 3: Joshua Gelbard
- Topic: Swift - Apple's Surprise Move
- Presenter 1: Dorian Stubblefield
- Topic: Community models (part 2) - lecture notes
- Sprint 4 retro
- Plan and outline sprint 5
- Check-in:
- Client has reviewed MVP and provided feedback
- Integration of code pieces should be well under way
- Test cases should be in place for units
- Plan to integrate client feedback into project
- Homework: Read Chapter 3 - Mailing Lists/Message Forums
- Open Source Presentations
- Presenter 1:
- Topic:
- Presenter 2:Nirek Sharma
- Topic: Why I Like VSCode
- Presenter 3: Lucas Florence
- Topic: Five ways to make money on Open Source
- Presenter 1:
- Topic: Communications tools - lecture notes
- Mailing lists
- IRC
- Forums
- Open Source Presentations
- Presenter 1:
- Topic:
- Presenter 2:
- Topic:
- Presenter 3: Visaal Ambalam
- Topic: What is Kafka?
- Presenter 1:
- Topic: Foundations - lecture notes
- Their role (some examples)
- US Non-for-profit types
- Open Source Presentations
- Presenter 1: John Bisognano
- Topic: Scaling genomics with Spotify
- Presenter 2:
- Topic:
- Presenter 3:
- Topic:
- Presenter 1: John Bisognano
- Topic: Getting involved - lecture notes
- The importance of credibility in the community
- A path to getting engaged
- User
- Contributor
- Committer
- Voter
- Open Source Presentations
- Presenter 1: Ethan Shry
- Topic: GraphQL > REST
- Presenter 2: Dan Schaeffer
- Topic: pfSense Open Source Firewall and Router
- Presenter 3:
- Topic:
- Presenter 1: Ethan Shry
- Sprint 5 retro
- Plan and outline final sprint
- Check-in:
- Client has reviewed the updates based on their feedback
- Get more client feedback!!!
- Presentation planning has started
- Open Source Presentations
- Presenter 1: Junbin Ma
- Topic: Challenges for OSS maintainers - real world examples
- Presenter 2: David Huang
- Topic: Be careful who you trust (npm event-stream)
- Presenter 3: Louise Zhu
- Topic: Mozilla Firefox and community led marketing
- Presenter 1: Junbin Ma
- Topic: Development best practices - lecture notes
- Documentation
- MUST have files: README, CHANGELOG, LICENSE
- Wiki, FAQ, Website
- Developer guidelines
- Translation
- Documentation
- Open Source Presentations
- Presenter 1: Benjamin Choi
- Topic: What is Apigee
- Presenter 2: Mystery Presenter
- Topic: Open Source IPO's
- Presenter 3:Christian Anyanwu
- Topic: Why most of Machine Learning is Open Source
- Presenter 4: Jin Han
- Topic: Leaflet - a JavaScript library for mobile-friendly interactive maps
- Presenter 5: Yipeng Wang
- Topic: Why Hugo Is the Best Open Source Static Site Generator
- Presenter 6: Shane Tong
- Topic: History and Future of JavaScript and Node.js
- Presenter 7: Julia Dickerman
- Topic: Open Source's Inclusivity Problem
- Presenter 1: Benjamin Choi
- Topic: Guest speaker: Joanna Lee
- Homework: Read Chapter 7 - Release Numbering and Chapter 7 - Stabilizing a Release
- Open Source Presentations
- Topic: Licenses!!! - lecture notes
- Questions that must be asked of every license
- What are the terms, are they compatible with planned use?
- The "big" licenses source
- MIT
- GPL 2/3
- Apache 2
- BSD
- Questions that must be asked of every license
- Final Exam Review
- Open Source Presentations
- Presenter 1: Kevin Fu
- Topic: Wine (What is it good for?)
- Presenter 2: Jianxing (Jason) Liao
- Topic: Why is LibreOffice so powerful?
- Presenter 3: Siam Abd Al-Ilah
- Topic: Why I like Kotlin
- Presenter 1: Kevin Fu
- Conclusion of Final examination
- Sprint 6 retro
- Check-in:
- Client loves the project
- Documentation should be in place
- Presentation should be ready
- Open Source Presentations
- Presenter 1: Kevin Ha
- Topic: React Native makes lives easier
- Presenter 2: Aumesh Misra
- Topic: What is Kubernetes?
- Presenter 3: Dominique Senteza
- Topic: Open Source and IoT
- Presenter 4: Zahra Lambe
- Topic: Open Source and Blockchain
- Presenter 1: Kevin Ha
- Project presentations -- Cupples II L 015
- Presenter 1: Cambridge
- Presenter 2: Amazon
- Presenter 3: Pupil
- Project presentations -- Cupples II L 015
- Presenter 1: Sicnum
This class has been shaped through input from many folks, but a few notable attributions are deserved: