========================================================================= These are the correct answers (for questions which *have* a correct answer, of course). My comments are the sentences in full capitals between square brackets, [LIKE THIS]. ========================================================================= When people cooperate in writing a Free Sofware or Open Source project how do they typically communicate, in your opinion? [ ] They use CVS [ ] They use Internet online chat systems, like IRC [X] They use Internet mailing lists [ ] They use the telephone [ ] They organize (physical) meetings [ ] There is no need for communication: anybody is free to add a piece of code, without asking permission to anybody; then the code is always distributed in the *next* official release of the software. [ ] There is no need for communication: anybody is free to add a piece of code, without asking permission to anybody; then a new version of the software is *immediately* released. [MAILING LISTS ARE BY FAR THE MOST COMMON MEAN OF COMMUNICATION (SEE ``THE CATHEDRAL AND THE BAZAAR'', BY RAYMOND). ONLINE CHAT SYSTEMS LIKE IRC ARE ALSO USED. THE LAST TWO OPTIONS WERE A TRAP, AND SOME STUDENTS FELL IN IT: COMMUNICATION IS *ESSENTIAL* FOR DEVELOPING TOGETHER! (AND CVS LOGS ARE NO SUBSTITUTE FOR IT). BY THE WAY, NO PROJECT ALLOWS PERFECT STRANGERS TO MODIFY THE CODE IN THE *OFFICIAL REPOSITORY* WITHOUT AUTHORIZATION: THE CODE WOULD BE TOO EASY TO BREAK, FOR MALICE OR INCOMPETENCE. FREE SOFTWARE LICENSES ALLOW YOU TO MODIFY WITHOUT ASKING PERMISSION (AND ALSO PUBLISH, IF YOU WANT) *YOUR* COPIES, NOT THE *SAME* COPIES ON WHICH OTHER PEOPLE ARE WORKING!] Which of the following countries does produce most free/open source software, in your opinion? [ ] The United States of America [ ] The United Kingdom [ ] India [ ] Japan [X] France [ ] Germany [ ] Russia [YOU'RE THE MOST CIVIL PEOPLE. :-)] Linux is: [X] a monolithic kernel [ ] a microkernel [ ] a single-server kernel built on a microkernel [ ] a set of servers built on a microkernel [LINUX IS A GOOD IMPLEMENTATION OF AN ESSENTIALLY TRADITIONAL DESIGN. IT'S IMPORTANT BECAUSE IT'S A FREE SOFTWARE KERNEL AND IT'S VERY FAST AND RELIABLE, BUT IT'S NOT PARTICULARLY INNOVATIVE IN A TECHNICAL SENSE.] Think of a simple GNU utility line `ls' or `cat'. Do you think it would it be possible to make it run on a non-GNU system? [ ] Yes, but it would need many modifications [X] Yes, it would run on practically any system with just some small modifications in the worst case [ ] Yes, on any operating system, but in practice only with Intel or AMD processors; it would be very difficult to port it to different hardware. [ ] Theorethically yes, but it would be a violation of the GPL to make it run on a different system [ ] Yes, but only if compiled with GCC [ ] No, it would have to be completely rewritten [MAKING GNU *PORTABLE* HAS BEEN AN EXPLICIT DESIGN GOAL SINCE THE BEGINNING: REMEMBER WHAT HAPPENED WHEN THE `ITS' OPERATING SYSTEM WHICH STALLMAN WAS CONTRIBUTING TO DEVELOP ESSENTIALLY *DIED* BECAUSE IT WAS WRITTEN IN ASSEMBLY FOR A MACHINE WHICH HAD BECOME OBSOLETE, THE PDP-10. PRACTICALLY EVERYTHING IN THE GNU PROJECT IS IMPLEMENTED IN C AND HAS EXCELLENT PORTABILITY. NOTE THAT A NORMAL USERSPACE PROGRAM DOESN'T DIRECTLY CALL KERNEL PRIMITIVES, BUT ONLY *LIBRARY FUNCTIONS* (FOR EXAMPLE chdir(), opendir(), write(), printf(), ...): GNU UTILITIES ARE PORTABLE ACROSS BOTH HARDWARE PLATFORMS AND KERNELS; IN MOST CASES THEY'RE ALSO PORTABLE ACROSS DIFFERENT SYSTEM LIBRARIES (FOR EXAMPLE THINK OF THE GNU LIBC AND THE BSD LIBC) AND COMPILERS (ALSO NON-GCC COMPILERS ARE TYPICALLY SUPPORTED); ALSO CONSIDER THAT MOST INDIVIDUAL GNU UTILITIES WERE DEVELOPED ON OTHER UNIX SYSTEMS *BEFORE* ANYTHING LIKE A COMPLETE GNU/LINUX COULD EXIST (I.E. BEFORE 1992): THEY *HAD* TO BE COMPATIBLE. NOTE THAT THE GNU GPL EXPLICITLY PERMITS LINKING WITH "System Libraries" (SEE SECTION 1 FOR DEFINITION AND EXACT TERMS), SO THE LICENSE IS NOT A PROBLEM.] You have released a software written by you, with *no external dependencies* on other software, under the GNU GPL. Can you re-release it later under a different license? [X] Yes. [ ] No, the GPL forbids it. [IF THERE ARE NO EXTERNAL DEPENDENCIES THEN *YOU* HAVE THE COPYRIGHT ON ALL THE CODE: THE LAW SAYS THAT *OTHER* PEOPLE NEED A LICENSE FROM YOU IF THEY WANT TO USE IT -- BUT IF *YOU* OWN THE COPYRIGHT YOU CAN DO WHATEVER YOU WANT WITH YOUR SOFTWARE, INCLUDING RELEASING IT AGAIN UNDER A DIFFERENT LICENSE. *YOU* DON'T NEED A LICENSE FOR YOUR OWN CODE.] You have written a software which depends on some other software released under the X11 license by someone else. Which licenses can you choose for if you want that other people can link it with ? [X] I can choose any license, even proprietary [ ] The GNU GPL [ ] The X11 license [THE X11 LICENSE IS A NON-COPYLEFT FREE SOFTWARE LICENSE; SEE THE DEFINITION OF COPYLEFT. OF COURSE YOU *CAN* USE THE GNU GPL OR THE X11 LICENSE IN THIS CASE.] Some software depends on some other software released under the GNU GPL by someone else. Which is the license of the *combined* work + ? [ ] The same license of [ ] The GNU GPL [ ] The X11 license [X] The GNU GPL, if the license of allows it; otherwise it's against the law to link with [ ] Linking and is forbidden by the law [THE GNU GPL IS A STRONG COPYLEFT FREE SOFTWARE LICENSE, AND THIS IS EXACTLY THE PURPOSE OF COPYLEFT: IF YOU RELEASE A DERIVED WORK OF THEN THE DERIVED WORK MUST BE RELEASED UNDER THE SAME TERMS OF . INSTEAD IF WERE RELEASED UNDER THE GNU *LGPL*, WHICH IS A *WEAK* COPYLEFT FREE SOFTWARE LICENSE, YOU WOULD NOT BE FORCED TO DO THE SAME: IN THIS CASE WE ARE ONLY TALKING ABOUT MAKING A DERIVED WORK BY LINKING TWO PIECES OF SOFTWARE, AND NOT BY *MODIFYING* .] [NOTE THAT I'VE *CHANGED* THE LAST PART OF THE FOLLOWING QUESTION, TO CORRECT A MISTAKE OF MINE. SORRY. THE ORIGINAL VERSION WAS NOT VERY INTERESTING AND POSSIBLY ALSO CONFUSING FOR STUDENTS. PLEASE ASK ME IF YOU WANT TO KNOW DETAILS AND THE CORRECT ANSWER TO THE ORIGINAL VERSION.] An 'obfuscator' is a program which takes as input the source code of another program and modifies it so that it becomes hard to read, for example removing comments and changing the name of all variables into strings like 'toto1', 'toto2', 'toto3' and so on. Can you release only the *obfuscated* modified version of a GPL program written by someone else which you have modified, and keep the non-obfuscated modified source only for you? [ ] Yes. [X] No. Why? (this is easy if you have read the GPL text) [THE OBFUSCATED SOURCE CODE IS NOT "SOURCE CODE" ACCORDING TO THE DEFINITION IN THE GNU GPL (SEE SECTION 0 OF THE GNU GPL TEXT): The "source code" for a work means the preferred form of the work for making modifications to it. OF COURSE THE OBFUSCATED CODE IS NOT "the preferred form of the work for making modifications to it". SO THE GNU GPL ALLOWS YOU TO CONVEY THE MODIFIED PROGRAM ONLY IF YOU DISTRIBUTE THE "source code" AS IT DEFINES IT. OF COURSE YOU ARE *NOT* FORCED TO DISTRIBUTE ANYTHING IF YOU DON'T WANT: BUT IF YOU DISTRIBUTE (THE LICENSE SAYS "convey") YOUR VERSION THEN YOU HAVE TO RESPECT THE LICENSE.] Can you ask money in exchange for a copy of a program released under the GNU GPL? [X] Yes. [ ] No. [YES, YOU CAN CHARGE (IF YOU WANT) FOR MODIFIED OR EVEN UNMODIFIED COPIES: SEE THE PREAMBLE AND SECTIONS 4, 5 AND 6.] If you modify some free software (take the usual definition by Stallman), are you *forced* to publish your modifications? [ ] Yes. [X] No. [THE FREE SOFTWARE DEFINITION (POINT 3) SAYS THAT YOU HAVE THE *FREEDOM* TO DISTRIBUTE MODIFIED VERSIONS, IF YOU WANT: IT'S NOT AN OBLIGATION.] Make an example of some software which does *not* need a license: [TWO EXAMPLES: 1. A SOFTWARE USED BY THE AUTHOR HIM-/HERSELF, OR HOWEVER NOT DISTRIBUTED (NOT "CONVEYED" ACCORDING TO THE DEFINITION IN THE GNU GPL VERSION 3). NOTE THAT THIS IS AN *EXTREMELY* COMMON CASE: MOST SOFTWARE DEVELOPED IN THE WORLD IS WRITTEN FOR INTERNAL USE, AND NOT FOR BEING DISTRIBUTED TO OTHERS. 2. A PUBLIC DOMAIN SOFTWARE, I.E. A SOFTWARE FOR WHICH THE AUTHOR HAS RENOUNCED TO HIS/HER COPYRIGHT. PUBLIC DOMAIN SOFTWARE IS (NON-COPYLEFTED) FREE SOFTWARE, EVEN IF IT DOESN'T HAVE A LICENSE. SOME STUDENTS WROTE THE NAME OF SOME PROPRIETARY SOFTWARE WHICH IS DISTRIBUTED AT ZERO PRICE. THIS IS *WRONG*: IN THAT CASE THERE IS AN EXPLICIT COPYRIGHT LICENSE.] Any comments or suggestions you think are useful to make thus course better (except for me to learn to speak a decent French; I'm already working on it :-)): [I WISH TO SINCERELY THANK STUDENTS FOR THEIR VERY CONSTRUCTIVE COMMENTS, AND FOR A COUPLE OF STATEMENTS OF APPRECIATION FOR MY COURSE THAT I WOULDN'T HAVE EXPECTED.]