0% found this document useful (0 votes)
11 views

CSCI4140 1 - Intro

Uploaded by

andychchow326
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

CSCI4140 1 - Intro

Uploaded by

andychchow326
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Introduction

CSCI 4140: Open-Source Software


Project Development
Prof. Wei Meng

https://course.cse.cuhk.edu.hk/~csci4140/
Course Aim
• Not to teach you how to open your source

- We will introduce software licenses used in open-


source software

• Teach you techniques to develop “real” software


projects

- “Most of your previous assignments are just TOYS”

- “We will be implementing ADVANCED TOYS”

- Arouse the creativity and fun in developing software


projects

2
What Will You Learn In This Class?
• Becoming a full-stack developer

- How to host your application/service on the cloud

- How to implement the back end of an application

- How to manage user sessions

- How to write a dynamic and responsive frond end for


both desktop and mobile devices

- How to communicate between the frond end and the


back end

• Collaborating with other developers


3
What’s Involved In the Learning?
• Absorb material presented in lectures and tutorials

• 3 individual programming assignments (42% total)

• A group project (28%)

- No fixed theme

- Up to 2 group members

• A comprehensive final exam (30%)

• Suggestions?

4
What’s Required
• Prerequisites:

- CSCI 2100 / CSCI 2520 / ESTR 2102

- Familiarity with Linux, Java, Python, PHP, SQL, HTML

• Engage in lectures & tutorials

• Participate in Piazza (sign-up using same name)

- Post all course-related questions/comments there

- No email please: it doesn’t scale.

- For private matters, contact Prof or TA using Piazza direct


message

- Do not post specifics about homework/project


5
Class Policies
• Late homework with penalty (http://course.cse.cuhk.edu.hk/
~csci4140/#policies-late-homework-policy)

- 3-day grace period for an assignment: -25% if < 1 day, -50% if < 2
days, -75% if < 3 days, no credit >= 3 days

- 2-day grace period for project: -15% if < 1 day, -30% if < 2 day,
no credit >= 2 days

• Collaboration (http://course.cse.cuhk.edu.hk/~csci4140/#policies-
collaboration)

- Work on your own (except for project)! Never share solutions,


code, etc., or let any other student see them.

• Other policies

- http://course.cse.cuhk.edu.hk/~csci4140/#policies
6
A Software Engineering Course?
Software Engineering Courses This Course

Focus on the formal steps in


Focus on how to leverage nowadays
developing software, independent of
technologies to develop software.
the technologies.

The requirements may be coming from


Focus on the requirements and the
the lead programmer himself and are
outcomes.
usually subject to change.

Most of the time, there is only a goal


Focus on the testing of the software
with a loosely written specification. So,
based on the requirement
we are going to learn how to write
specification(s).
robust software.

Formal courses A casual courses

7
Questions?

8
Open-Source Software vs.
Proprietary Software

9
Is A Free Software An OSS?

NOT a “free
software”

“Google Docs, Google Sheets, and Google Slides are a word processor, a spreadsheet
and a presentation program respectively, all part of a free, web-based software office suite
offered by Google within its Google Drive service.”
- https://en.wikipedia.org/wiki/Google_Docs,_Sheets,_and_Slides

10
What Is “Free Software”?
• The Free Software Definition

- “Free software” means software that respects users' freedom and


community. Roughly, it means that the users have the freedom to
run, copy, distribute, study, change and improve the software.

- “Free software” is a matter of liberty, not price.

You should think of “free” as in


“free speech,” not as in “free beer”.

Richard Stallman
Founded the GNU project in 1983
11
https://www.gnu.org/philosophy/free-sw.en.html
What Is “Free Software”? (Cont.)
• The Four Freedoms

- Freedom 0: The freedom to run the program for any purpose as


you wish.

- Freedom 1: The freedom to study how the program works, and


change it to make it do what you wish.

- Freedom 2: The freedom to redistribute and make copies so you


can help your neighbor.

- Freedom 3: The freedom to improve and distribute your modified


copies to the public, so that the whole community benefits.

Requiring access to the source code

12
https://www.gnu.org/philosophy/free-sw.en.html
What Is Open-Source Software?
• Open-source software (OSS) is computer software with its source code
made available with a license in which the copyright holder provides the
rights to study, change, and distribute the software to anyone and for any
purpose.

• Open-source software shares similarities with Free Software and is now


part of the broader term Free and open-source software (FOSS).

Free software is a political


movement; open source is a
development model.

Richard Stallman
13 Founded the GNU project in 1983
A little detour: GNU
• GNU is a complete operating system; Linux is a kernel
(check this out: https://www.gnu.org/gnu/linux-and-
gnu.html)

• GNU has many essential software as part of an OS,


most of which you use everyday without knowing it’s
from GNU

- GCC, gdb, glibc, BASH, make, emacs, tar, …

14
Free and Open-Source Software
Licensing
• Why do we need a software license?

- To protect the holders of the intellectual rights.

• Free software license / Open-Source license

- Types of license for computer software that allows


the software and/or the source code to be used,
modified and/or redistributed (under defined terms
and conditions).

- Explicitly grant actions that are usually prohibited by


copyright laws.

15
Copyleft
• A form of licensing that requires the derivative works to be
distributed with the same copyright conditions as in the
original work.

• GNU General Public License (GPL) - written by Richard Stallman

- Guarantees end users the freedom to run, study, share and


modify the software.

- Any modified versions / derivative works automatically carry


the GPL.

• Other examples:

- GNU Lesser General Public License, Mozilla Public License,


AGPL

16
Permissive Software License
• A free software license with minimal requirements
about how the software can be redistributed.

• “Non-copyleft license”

- Doesn’t enforce the modified source to be opened


when redistributed.

• Examples:

- MIT License, BSD License, Apache License, Apple


Public Source License

17
Software Licenses

Software licenses in context of copyright according to Mark Webbink.

18
σ Freeopen _

soura software

FOSS vs Proprietary Software


Copyleft apyright

• Benefits • Drawbacks

- Security - Security
右專 解法問題
- Affordability/Availability - User-support

- Flexibility - Bugs/Missing features

- Quality/Reliability - Compatibility

- Longevity 譸 - Licensing

19


Software Development Model
• The Cathedral (traditional) Model:

- Centralized; roles are defined and managed

- “A cathedral carefully crafted by individual wizards or


small bands of mages working in splendid isolation”

• The Bazaar (open-source) Model:

- Decentralized; roles are not clearly defined

- “A great babbling bazaar of differing agendas and


approaches”

“The Cathedral and the Bazaar”, Eric S. Raymond, 1997

20
OSS Development Model
• Users should be treated as co-developers

- Linus’s Law: "Given enough eyeballs all bugs are shallow."

• Rapid prototyping

• Early releases

• Frequent integration

• Incremental and evolutionary development

“Lessons for creating good open source software”

https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar#Lessons_for_creating_good_open_source_software

21
OSS Development Team

22
OSS Development Communication
Channels
• Email

- Mailing list

• Instant Messaging

- IRC

• Forums

• Wikis

23
OSS Development Tools
• Version control systems

- The Subversion revision control system (SVN)

- git, written originally by Linus Torvalds

• Bug trackers and task lists

- Bugzilla

24
History of FOSS
• Launch of the free software movement

- Richard Stallman launched the GNU Project in 1983

- GNU GPLv1 was published in 1989

• Linux

- Linus Torvalds released the Linux kernel first in 1991, then in 1992 under GPL

- Debian GNU/Linux was started in 1993

• FreeBSD and NetBSD were released as free software in 1993

• The LAMP systems powered the development of the World Wide Web in the dot-com years (late
1990s)

• Eric Raymond published The Cathedral and the Bazaar in 1997

• Netscape Communicator was released as free software in 1998

• The Open Source Initiative was founded in 1998

• Google released Android in 2008

• Google released Chromium OS in 2009


25
Trends in OSS
• New HTML5 specifications

• Cloud computing & mobile computing

• Internet-of-things

• Artificial Intelligence applications

• Augmented reality

• Virtual reality

• Cross-device applications

26
Focus of This Course
• Technologies around the World Wide Web

- Web is the primary tool that connects billions of


people and devices on the Internet

- Web browsers are ubiquitous, versatile clients that


are available on multiple devices

• The cloud infrastructure that empowers the Web

- Virtualization, distributed storage, etc.

27
How To Start An OSS Project?
• Announces the intent to develop a project in public

• Releases a limited-but-working project to the public

• The source code of a mature project is released to the


public

• Fork an existing OSS project

• It is very important to investigate what's already there!


• It is often better to contribute to an existing similar project than
building one from scratch!
• Do not re-invent the wheels yourself!

28
Start Your Project Now!
• Form a group of up to 2 people by 23:59 January 28, 2024

- Use Piazza as a platform to search for teammates

- Post any idea, or even prototypes, that you would like to


build

- Comment on other’s post to express your interest and


discuss the idea

- Find people with similar interests

• Write a project proposal and present to the instructor and TA in


February

- We will estimate the score that your proposed project is


worth
29

You might also like