============================================== Dialog On Software Project Management ============================================== :Authors: Hui Lan (lanhui at zjnu.edu.cn) :Version: 0.0.3 of 2020/03/18 .. contents:: Table of content Preface ========= This book contains a series of special lecture notes in a dialog form on software project management during the Great Lockdown period due to the outbreak of 2019 novel coronavirus. Monday, 9 March 2020 ==================== Morning section ---------------- *Sustained efforts - How to earn 1b 10 years later - Software licenses - Copyleft - Non-copyleft - Commercial - Non-commercial - Proprietary - Non-proprietary - Quiz* 蓝老师(1348141770) =================================================== 蓝老师(1348141770) Morning guys. Could you type your student number? 2020-03-09 10:36:06 ibrahim(1525200991) 201732120159 2020-03-09 10:36:06 201732120167 Clive妈妈(3321692247) 201732120167 2020-03-09 10:36:07 软英171周仙龙(1748153603) 201732120130 2020-03-09 10:36:08 201732120141--AHAMED SABUJ妈妈(2686217157) 201732120141 2020-03-09 10:36:08 201732120168_Golden(2984538488) 201732120168 2020-03-09 10:36:08 201732120127 张滨(2350711965) 201732120127 蓝老师(1348141770) It is useful for me. 2020-03-09 10:36:11 201732120134_Michelle(3304952232) 201732120134 2020-03-09 10:36:11 201732120165 MJH MOHAMED(2751595398) 201732120165 2020-03-09 10:36:15 软英171高增(1520653544) 201732120117 2020-03-09 10:36:16 李佳兴(421281726) 201732120118 2020-03-09 10:36:16 201632120150-Ashly(1661411131) 201632120150 2020-03-09 10:36:16 软英171 吕伊豪(745291576) 201732120120 2020-03-09 10:36:17 nainezz(2407048879) 201732120173 2020-03-09 10:36:17 叶涵涛(2289316051) 201732120125 2020-03-09 10:36:24 201732120170-Tamene Robel妈妈(3287975278) 201732120170 2020-03-09 10:36:29 Saeed : 201732120146(446571011) 201732120146 2020-03-09 10:36:49 201732120157 hossain arif 201732120157 蓝老师(1348141770) Let's wait 4 minutes for more people to join in. 2020-03-09 10:37:06 Saeed : 201732120146(446571011) ok 2020-03-09 10:37:12 软英171包振丰(984456043) 201732120111 2020-03-09 10:37:19 应宇腾(1356633192) 20732120126 2020-03-09 10:37:24 软英171陈伟超(937202326) 201732120113 2020-03-09 10:37:33 陈真赐(1312502742) 201732120114 2020-03-09 10:37:58 软英171郑洪宇(1633787262) 201732120128 2020-03-09 10:37:59 系统消息(10000) 201732120165 MJH MOHAMED邀请201732120165_Mohamed_Jifry_Hazzaly加入了本群。 2020-03-09 10:38:14 谢佳聪(1249923715) 201732120123 2020-03-09 10:38:17 郑晓钰(280768265) 201732120110 2020-03-09 10:38:22 软英171 郑可富(1924773187) 201732120129 2020-03-09 10:39:01 ALBOROM WARD-201732120143家长(3279308836) 201732120143 2020-03-09 10:39:11 201732120135 玛莎(3534763826) 201732120135 2020-03-09 10:39:25 软英171 陆博业(2794513466) 201732120119 2020-03-09 10:40:06 SPM软件项目管理-蓝老师(1348141770) [Announcement] We will have a pop-up quiz, near the end of today's lecture. 2020-03-09 10:40:15 Tarmom 201732120166(2104297320) 201732120166 2020-03-09 10:40:35 1n(2835813510) 201732120102 2020-03-09 10:40:36 SPM软件项目管理-蓝老师(1348141770) Make sure you can login LRR. 2020-03-09 10:40:54 Saeed : 201732120146(446571011) yes 2020-03-09 10:40:58 SPM软件项目管理-蓝老师(1348141770) There is a recent story about LRR. 2020-03-09 10:40:58 软英171戴泽荣(975336710) 201732120115 2020-03-09 10:41:00 Tarmom 201732120166(2104297320) laoshi I can't 2020-03-09 10:41:10 Saeed : 201732120146(446571011) try now 2020-03-09 10:41:23 Tarmom 201732120166(2104297320) ok 2020-03-09 10:41:33 Npl.(593635848) 201732120121 蓝老师(1348141770) (Tarmom, you should first sign up.) 蓝老师(1348141770) Ashly updated LRR so that a CRITICAL bug is gone. 蓝老师(1348141770) I think most of you guys encountered that bug before. 蓝老师(1348141770) That is, you were unable to sign in immediately after sign up. 2020-03-09 10:42:46 LUL GUOBA RUOT (2217724540) 201632120161 蓝老师(1348141770) This bug makes the software essentially not usable. 蓝老师(1348141770) A really bad bug. 蓝老师(1348141770) You had to recover your password by email (which did not always work). 2020-03-09 10:43:37 Samantha 201632120140(2459455104) 201632120140 蓝老师(1348141770) It is absurd that we require people to recover their password immediately after they sign up. 蓝老师(1348141770) Ashly fixed that. 蓝老师(1348141770) Suddenly the software looks much better. 蓝老师(1348141770) Where did Ashy learn PHP? 2020-03-09 10:45:27 201632120150-Ashly(1661411131) Personal projects Laoshi 蓝老师(1348141770) There are a lot of existing talents. A manager's job is to recognize them and cultivate them. 蓝老师(1348141770) That is a Great Fix. 蓝老师(1348141770) But that fix introduced a new problem. 蓝老师(1348141770) The old users were no longer able to login, which is almost equally bad. 蓝老师(1348141770) This is an example of failed regression test. 蓝老师(1348141770) The new fix breaks old, functional work. 蓝老师(1348141770) That is quite normal. 蓝老师(1348141770) The old, legitimate users saw a Blank Page after they logged in, leaving them totally perplexed. 蓝老师(1348141770) How to solve that? 蓝老师(1348141770) It turns out the fix is really simple. 蓝老师(1348141770) [图片] :: // verify the hashed password and unhashed password if(password_verify($password, $row["Password"]) or ($password = $row["Password"])){ 蓝老师(1348141770) Just relax the conditional test by adding an OR condition: ($password = $row["Password"]). 蓝老师(1348141770) The reason is that the old password is not hashed (encrypted). 蓝老师(1348141770) We must hash people's password by law. 蓝老师(1348141770) Hash is like a one-way function. 蓝老师(1348141770) Hash('secrete') gives you a 64 obfuscating characters. 蓝老师(1348141770) But you cannot recover 'secrete' even if you know these 64 characters. 蓝老师(1348141770) That is my understanding of one-way. 蓝老师(1348141770) This small fix solved a Big problem. 蓝老师(1348141770) That is a great start. 蓝老师(1348141770) I can even say Ashly is done on the course project. 蓝老师(1348141770) However, I still hope he could do a bit more. 2020-03-09 10:53:08 Tarmom 201732120166(2104297320) laoshi still I can't sign up on LRR it's not working. 蓝老师(1348141770) (Fine. I will create one for you during the break.) 2020-03-09 10:53:46 Tarmom 201732120166(2104297320) thank you 蓝老师(1348141770) Returning to storing password in LRR, can we hash all existing, old passwords so that we can remove the additional OR condition: ($password = $row["Password"])? 蓝老师(1348141770) Simpler code. 蓝老师(1348141770) Is it worth doing that? 蓝老师(1348141770) We have more than 200 accounts now in LRR. 蓝老师(1348141770) Let us take a 5-minute break. 2020-03-09 10:55:31 Saeed : 201732120146(446571011) ok 2020-03-09 10:57:17 Tarmom 201732120166(2104297320) ok 2020-03-09 10:58:46 LUL GUOBA RUOT (2217724540) Me too I can’t login 蓝老师(1348141770) =================================================== 蓝老师(1348141770) That is interesting. You two guys could sign up again. I believe it should work now. 蓝老师(1348141770) What have I learned from this improvement process? 蓝老师(1348141770) Good software takes time. 蓝老师(1348141770) Sustained efforts are required to build something that is really great so that people would pay to use it. 蓝老师(1348141770) You need at least 10 years. 蓝老师(1348141770) But after 10 years, you will be good, earning billions of dollars a year. 蓝老师(1348141770) Here is an article I want to share with you. 蓝老师(1348141770) https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/ 2020-03-09 11:05:51 Npl.(593635848) 很多人看不到这么远 一年就够呛的 2020-03-09 11:06:18 Npl.(593635848) [表情] 蓝老师(1348141770) Yes. That is true. That is why we have very few companies which have a yearly revenue of billions. 蓝老师(1348141770) I doubt LRR could sustain such a long period. 蓝老师(1348141770) Look at QQ, which started around 1998. 蓝老师(1348141770) How many years have passed? 蓝老师(1348141770) More than 20 years! 蓝老师(1348141770) The current QQ is much better than the original QQ (which is a clone of OICQ). 蓝老师(1348141770) I would say most people who have not taken this course don't realize that. 蓝老师(1348141770) Software is hard. And hard things need time. As simple as that. 蓝老师(1348141770) [图片] .. image:: lotus-note-user-pool.png :height: 100 :alt: number of installations of the Lotus Notes over the years 蓝老师(1348141770) User pool of Lotus Notes. 蓝老师(1348141770) It hit 55 million users in 1999. 蓝老师(1348141770) 55 million users means lots of money and great influence. 蓝老师(1348141770) 12 years have passed since the author(s) wrote the first line of code. 2020-03-09 11:11:47 ibrahim(1525200991) most people dream that thier software blow up like Facebook did 蓝老师(1348141770) The problem of China software industry is exactly Lack of Time. 蓝老师(1348141770) Desire of Success + Lack of Time = ? 2020-03-09 11:13:06 Npl.(593635848) failure 蓝老师(1348141770) [图片] 蓝老师(1348141770) How much money has Oracle made? 蓝老师(1348141770) Billions of dollars at least. 2020-03-09 11:14:01 Npl.(593635848) [图片] 蓝老师(1348141770) The Oracle database system was there in 1970's. 2020-03-09 11:14:02 Npl.(593635848) 复利曲线 蓝老师(1348141770) (Oh, really. That is a good observation.) 蓝老师(1348141770) This gentleman, Joel Spolsky, the founder of Stack Overflow, is good at writing. 蓝老师(1348141770) He is a very prolific author. 蓝老师(1348141770) Produced more than 1000 blog posts over a period of 10 years. 蓝老师(1348141770) I think you should read his "Top 10" posts. 蓝老师(1348141770) Let's take a 5-minute break. 2020-03-09 11:17:41 系统消息(10000) Npl.撤回了一条消息 2020-03-09 11:22:01 Npl.(593635848) I’ve looked through several his books (his blogs sets, more currently), he thinks most programmers are not true programmer. And it would be good if these “fake programmers” been fired(filter out).[表情] 2020-03-09 11:23:39 ALBOROM WARD-201732120143家长(3279308836) [表情] 蓝老师(1348141770) Npl seems like a motivated learner. We need more self-driven learners. 蓝老师(1348141770) =================================================== 蓝老师(1348141770) Writing is Thinking. Writing is Communicating. 蓝老师(1348141770) You must sharpen your writing skills before you graduate. 蓝老师(1348141770) Programming is more like a liberal and arts subject. 蓝老师(1348141770) Think about that. 2020-03-09 11:26:26 Npl.(593635848) “Talking” with the computer 蓝老师(1348141770) If you could earn 1 billion dollars 10 years later by focusing on developing one thing, and leading a very frugal life in these 10 years, would you do that? 蓝老师(1348141770) I think many people will do that. 蓝老师(1348141770) That is about 100,000,000 dollars per year. 蓝老师(1348141770) However, since there is no success guarantee, many people would choose to be a less disciplined person. 蓝老师(1348141770) We talked about software licenses last time. 蓝老师(1348141770) One question. 蓝老师(1348141770) What kind of free license would you use if your software is an online application, i.e., you do not send people installation packages? 蓝老师(1348141770) Apache, GPL, or MIT? 2020-03-09 11:30:46 ibrahim(1525200991) MIT 蓝老师(1348141770) License for online application, things like Simple Note, One Note. 蓝老师(1348141770) I think MIT is a good one. It is simple and permissive. 2020-03-09 11:31:25 ibrahim(1525200991) or AGPL 蓝老师(1348141770) I want to mention Affero GPL. 蓝老师(1348141770) Exactly. 蓝老师(1348141770) Affero GPL has an extra clause designed specifically for online applications. 蓝老师(1348141770) Are GPL-like licenses MIT-compatible? 蓝老师(1348141770) Or Are MIT-like licenses GPL-compatible? 蓝老师(1348141770) GPL is a copyleft license, while MIT is a non-copyleft license. 蓝老师(1348141770) What does "copyleft" mean? 蓝老师(1348141770) Copyleft is an interesting word. 2020-03-09 11:33:30 ibrahim(1525200991) your code can't be used by proprietary software 蓝老师(1348141770) I don't know that before yesterday. 2020-03-09 11:33:39 ibrahim(1525200991) I guess 2020-03-09 11:34:05 Dean Majaya201732120164爷爷(3623840484) 201732120164 蓝老师(1348141770) The exact meaning of copyleft is that all its derivative work under the copyleft license must be copyleft too. 蓝老师(1348141770) MIT license does not require that. 蓝老师(1348141770) If you use the code that is under the MIT license, you could apply a proprietary license to your software. 蓝老师(1348141770) That is why we say MIT license is a permissive license. 蓝老师(1348141770) The point of copyleft is ensuring that the subsequent (or derivative) work is also free. 蓝老师(1348141770) However, the danger is that people would rather not use your code in the first place if they think they don't agree with this condition. 蓝老师(1348141770) A rule of thumb is that if you do not care how your code is to be used, you could use either MIT or GPL or Apache. 蓝老师(1348141770) If you do not wish proprietary software to use your code, use GPL-like licenses. They are more restrict on ensuring subsequent freedom. 蓝老师(1348141770) Note the difference between proprietary and commercial. 蓝老师(1348141770) They are not the same thing. 蓝老师(1348141770) A commercial software can be non-proprietary. 蓝老师(1348141770) A proprietary software can be non-commercial. 蓝老师(1348141770) Proprietary emphasizes "Owner", 蓝老师(1348141770) while commercial emphasizes "Money". 蓝老师(1348141770) [Announcement] 蓝老师(1348141770) "Decide areas for improvement" is due today. 蓝老师(1348141770) You need to finish reading Chapter 2 by the end of this week. 蓝老师(1348141770) Let's take a 5-minute break. 2020-03-09 11:44:36 ALBOROM WARD-201732120143家长(3279308836) Laoshi how about course scheduler would you let me manage it as my course project? 蓝老师(1348141770) =================================================== 蓝老师(1348141770) My main concern is that there are tons of Course Scheduling applications out there. 蓝老师(1348141770) Your efforts will be wasted on just producing yet-another Course Scheduling application. 蓝老师(1348141770) Anyway, we could discuss that more after class. 2020-03-09 11:51:24 ALBOROM WARD-201732120143家长(3279308836) ok laoshi 蓝老师(1348141770) You need to finish reading Chapter 2 by the end of this week. 蓝老师(1348141770) I could finish reading one chapter in one evening. 蓝老师(1348141770) I don't know your reading speed. 2020-03-09 11:52:23 KELVIN Chimtengo(3110702155) One week is enough. 蓝老师(1348141770) You can use lots of aids that are available online, such as the Bing translator. 2020-03-09 11:53:01 ALBOROM WARD-201732120143家长(3279308836) i can finish it in 3-5 hours 2020-03-09 11:53:34 201732120151 Barkay sanoussi(3178573723) reading is not a big deal but understanding is .. 2020-03-09 11:53:57 Saeed : 201732120146(446571011) yes 蓝老师(1348141770) To understand it, repeat the reading process. 蓝老师(1348141770) Repeat it at least three times. 2020-03-09 11:54:26 ibrahim(1525200991) do you want us to just read it, or understand and highlight some points, if the later then that takes some time 蓝老师(1348141770) I think the most important purpose of reading is understanding. 2020-03-09 11:55:14 ALBOROM WARD-201732120143家长(3279308836) yeah that's why i said 3-5 hours including highliting and understanding 蓝老师(1348141770) Otherwise, Microsoft Edge could read it for us. 2020-03-09 11:55:27 Npl.(593635848) There is no reading speed, only understanding speed 蓝老师(1348141770) I will post a new, longer reading: The Cathedral and the Bazaar. 蓝老师(1348141770) http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html 蓝老师(1348141770) It discusses 2 development modes. 蓝老师(1348141770) You don't have to read all, only a few selected sections. 2020-03-09 11:56:45 ALBOROM WARD-201732120143家长(3279308836) that would be better 蓝老师(1348141770) I want to maximize the usefulness of this course while minimizing your workload. 蓝老师(1348141770) I will post the required sections. 蓝老师(1348141770) Quiz time. 2020-03-09 11:58:36 ibrahim(1525200991) wish most teacher follow your theme 蓝老师(1348141770) :: [True/False] Free software means zero-cost software. [True/False] Zero-cost software cannot be proprietary. [True/False] If the source code is visible, then the software is open source. [True/False] Open source software cannot be used for commercial purposes. 蓝老师(1348141770) You select two of them to answer. 蓝老师(1348141770) Submit it at LRR (under Quiz 3). 蓝老师(1348141770) Before 12:15pm. 蓝老师(1348141770) Bye. 2020-03-09 11:59:39 ibrahim(1525200991) what if i answer all of them ? 2020-03-09 11:59:46 nainezz(2407048879) Bye 2020-03-09 11:59:53 ABDALMUHAYMEN 201730210234(1071107298) Bye 2020-03-09 11:59:59 Saeed : 201732120146(446571011) ok 蓝老师(1348141770) Please just answer two questions. 2020-03-09 12:00:18 1n(2835813510) only true or false or explanation also 2020-03-09 12:00:21 KELVIN Chimtengo(3110702155) We should post answers here? Or ? 蓝老师(1348141770) The two which you feel most confident about. 蓝老师(1348141770) Just True or False. No explanation. 2020-03-09 12:00:43 1n(2835813510) ok 2020-03-09 12:00:43 ALBOROM WARD-201732120143家长(3279308836) Submit it at LRR (under Quiz 3). 2020-03-09 12:01:40 KELVIN Chimtengo(3110702155) Okay cool 2020-03-09 12:01:56 KELVIN Chimtengo(3110702155) 201632120149 2020-03-09 12:02:51 201732120170-Tamene Robel妈妈(3287975278) LRR not working Afternoon Section ----------------- *Project management tools - Kanboard - Swim lanes - Rhythm of releases - Sustained efforts - Joel Spolsky - Software licenses* Lan Hui(1348141770) =================================================== Lan Hui(1348141770) Good afternoon. 2020-03-09 15:41:41 Guedalia Youma (3014432207) Good afternoon professor Lan Hui(1348141770) Could you type your student number? It is useful for me. 2020-03-09 15:41:59 NGOUNOU家长(438499151) good afternoon laoshi Lan Hui(1348141770) I am going to get some hot water. 2020-03-09 15:42:05 Guedalia Youma (3014432207) 201925800221 Lan Hui(1348141770) Let's wait a few minutes for more people to join in. 2020-03-09 15:42:26 NGOUNOU家长(438499151) 201925800180 2020-03-09 15:42:36 Marie(2928285277) 201925800173 2020-03-09 15:42:36 NGOUNOU家长(438499151) OK Lan Hui(1348141770) Where were we last time? Lan Hui(1348141770) I've talked about an important management tip: Don't THROW AWAY YOUR CODE. Lan Hui(1348141770) This tip was given by Joel Spolsky, founder of Stack Overflow. Lan Hui(1348141770) Also Trello, a $425m product for project management. 2020-03-09 15:45:29 Kumson爸爸(3157209053) 201925800166 Lan Hui(1348141770) I was thinking about using Trello. Lan Hui(1348141770) There are many project management tools out there. Lan Hui(1348141770) Trello, JIRA, Microsoft Project, etc. Lan Hui(1348141770) I should choose a simpler one. Lan Hui(1348141770) So I choose Kanboard. Lan Hui(1348141770) https://kanboard.org/ Lan Hui(1348141770) Have you checked that? Lan Hui(1348141770) I can show you in a moment. Lan Hui(1348141770) [图片] .. image:: TIM20200316180248.png :height: 100 :alt: Kanboard for undergraduate thesis supervision Lan Hui(1348141770) You can see many cards, in different colors and in different swim lanes. Lan Hui(1348141770) We've got 4 swim lanes, representing different project stages. Lan Hui(1348141770) The leftmost is **TODO**. Lan Hui(1348141770) Followed by **Ready**. Lan Hui(1348141770) Followed by **In Progress**. Lan Hui(1348141770) Followed by **Done**. Lan Hui(1348141770) To avoid multi-tasking, we should minimize the number of cards (tasks) in the **In Progress** swim lane, Lan Hui(1348141770) which seems to be not the case in my Kanboard. Lan Hui(1348141770) That is why I feel exhausted. 2020-03-09 15:51:19 Nicole Rutagengwa (1403962700) 201935800169 Lan Hui(1348141770) We can move the cards (tasks) around. Lan Hui(1348141770) I plan to ask you to use Kanboard (in our course). Lan Hui(1348141770) I will create accounts for you within one week. Lan Hui(1348141770) I've also talked about rhythm of releases and the importance of having and keeping that rhythm. Lan Hui(1348141770) In the beginning, we should release early and often. Lan Hui(1348141770) But when our product becomes more mature, releasing too often is a bit annoying to users (once in a half year is good enough). Lan Hui(1348141770) Sometimes people just do not need that many new features if the product has already satisfied their daily use. Lan Hui(1348141770) [Announcement] We will have a pop-up quiz, near the end of today's lecture. Lan Hui(1348141770) Make sure you can login LRR (Lab Report Repository). Lan Hui(1348141770) There is a recent update for LRR. Lan Hui(1348141770) Last lecture I mentioned a CRITICAL (even BLOCKER) bug in LRR. Lan Hui(1348141770) A new user could not login immediately after sign up. Lan Hui(1348141770) That bug was fixed by Ashly, an undergraduate student in the morning section. Lan Hui(1348141770) Suddenly, the software looks much better. 2020-03-09 16:00:21 Marie(2928285277) So do we need to sign up again Lan Hui(1348141770) You don't have to recover your password by email, which does not always work, and is quite absurd. Lan Hui(1348141770) (No.) Lan Hui(1348141770) But that fix introduced a new problem. Lan Hui(1348141770) The old, legitimate users are no longer able to login, which is equally bad as being unable to login immediately after sign up. Lan Hui(1348141770) The fix failed that Regression Test. Lan Hui(1348141770) Failing a regression test is quite normal. Lan Hui(1348141770) Two old users reported that they saw a Blank Page after they logged in, making them totally surprised. Lan Hui(1348141770) Let's take a 5-minute break. 2020-03-09 16:07:43 Guedalia Youma (3014432207) Alright Lan Hui(1348141770) Where is Pacifique? 2020-03-09 16:12:59 系统消息(10000) Twizere Pacifique 唐平撤回了一条消息 2020-03-09 16:13:12 Twizere Pacifique 唐平 201925800174 Lan Hui(1348141770) Thanks, Pacifique. Lan Hui(1348141770) =================================================== Lan Hui(1348141770) How to solve the newly introduced "Blank Page" problem? Lan Hui(1348141770) It turns out the solution is really simple. Lan Hui(1348141770) Just tweak a conditional test a bit. Lan Hui(1348141770) [图片] :: // verify the hashed password and unhashed password if(password_verify($password, $row["Password"]) or ($password = $row["Password"])){ Lan Hui(1348141770) Just relax the conditional test by adding an OR condition: ($password = $row["Password"]). Lan Hui(1348141770) The variable $password stores the password you entered through the LRR web form. Lan Hui(1348141770) $row["Password"] contains the pre-stored password which you entered during sign up. Lan Hui(1348141770) Of course, they have to be equal before LRR would allow you in. Lan Hui(1348141770) Then, you may ask, what is the point of having "password_verify($password, $row["Password"])"? Lan Hui(1348141770) password_verify is a built-in function in PHP. Lan Hui(1348141770) Well. Lan Hui(1348141770) This function takes password stored in a human-readable form (e.g., 'secret'), hashes it and compares the hash result with the pre-stored password $row["Password"], which is also stored in a hash form. Lan Hui(1348141770) Why bother with hash? Lan Hui(1348141770) The point is that we, the software developers, do not want, or are not allowed to store users' password in a plain form. Lan Hui(1348141770) By law we should not do that. Lan Hui(1348141770) We should never, ever store users' password in a non-encrypted form because of risk of leak and the consequent liability. Lan Hui(1348141770) Yahoo made that mistake a few years ago. Lan Hui(1348141770) We must hash people's password by law. Lan Hui(1348141770) For example, if my password is 'secret', then its hashed form, '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b', should be stored in our application. Lan Hui(1348141770) Holy cow. Who can understand '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b' even if he gets that? Lan Hui(1348141770) Here is a hash calculator that you can play with. Lan Hui(1348141770) https://www.tools4noobs.com/online_tools/hash/ Lan Hui(1348141770) A great attribute of hash function is that it is a one-way function. Lan Hui(1348141770) You cannot recover 'secret' from '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'. Lan Hui(1348141770) Therefore, even when '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b' is now in a bad guy's hands, it does not matter that much, since it will take him hundreds of thousands of years to get the 'secret'. Lan Hui(1348141770) A wise bad man won't do that. Lan Hui(1348141770) The additional OR conditional test is for backward compatibility. Lan Hui(1348141770) A bit awkward. Lan Hui(1348141770) Perhaps we can get rid of that conditional test in the future, to make the code simpler. Lan Hui(1348141770) To do so, we need to hash all passwords that are stored in plain form. Lan Hui(1348141770) Is it worth doing that? Lan Hui(1348141770) We have more than 200 accounts now in LRR. Lan Hui(1348141770) I think there is a programmable way to do that. Lan Hui(1348141770) Anyway, that is future work. Lan Hui(1348141770) Let us take a 5-minute break. Lan Hui(1348141770) =================================================== Lan Hui(1348141770) What have I learned from this improvement process? Lan Hui(1348141770) Good software takes time. Lan Hui(1348141770) LRR started in Fall 2018 as a graduate course project: http://lanlab.org/course/2018f/se/homepage.html Lan Hui(1348141770) One year and a half have passed. Lan Hui(1348141770) Sustained efforts are required to build something that is really great so that people would pay to use it. Lan Hui(1348141770) Sustained efforts require great focus and self-discipline. Lan Hui(1348141770) You need at least 10 years of sustained efforts. Lan Hui(1348141770) That is actually a rule of thumb in almost all areas of business. Lan Hui(1348141770) But after 10 years, you will be good, earning billions of dollars a year. Lan Hui(1348141770) Breathtakingly worthwhile. Lan Hui(1348141770) That is about 100,000,000 dollars per year, for the previous ten years. Lan Hui(1348141770) However, you need to lead a very frugal life in these 10 years with no guarantee of success. Lan Hui(1348141770) Below is an article I want to share with you. Lan Hui(1348141770) https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/ Lan Hui(1348141770) “The Oracle RDBMS has been around for 22 years now. Windows NT development started 12 years ago. Microsoft Word is positively long in the tooth; I remember seeing Word 1.0 for DOS in high school (that dates me, doesn’t it? It was 1983.)” Lan Hui(1348141770) Look at QQ too - it started around 1998. Lan Hui(1348141770) How many years have passed? Lan Hui(1348141770) More than 20 years! Lan Hui(1348141770) The current QQ is much better than the original QQ (which is a clone of OICQ). Lan Hui(1348141770) I would say most people (who have not taken this course) don't know GOOD SOFTWARE TEAKS 10 YEARS. Lan Hui(1348141770) Want to be a billionaire overnight? No way. Lan Hui(1348141770) Except Facebook. Lan Hui(1348141770) Software is hard. And hard things need time to polish. As simple as that. Lan Hui(1348141770) [图片] .. image:: lotus-note-user-pool.png :height: 100 :alt: number of installations of the Lotus Notes over the years Lan Hui(1348141770) User pool of Lotus Notes. Lan Hui(1348141770) It hit 55 million users in 1999. Lan Hui(1348141770) 55 million users means lots of money and a huge impact. Lan Hui(1348141770) 12 years have passed since 1.0. Lan Hui(1348141770) Yet people have already spent 5 years to arrive at 1.0. Lan Hui(1348141770) It is important to keep a healthy body as a programmer. Lan Hui(1348141770) It takes very long time to be successful and you should enjoy that day when it arrives. Lan Hui(1348141770) The problem of China software industry is exactly Lack of Time. Lan Hui(1348141770) Desire of Success + Lack of Time = ??? Lan Hui(1348141770) Crap. Lan Hui(1348141770) How much money has Oracle made? Lan Hui(1348141770) Billions of dollars at least. Lan Hui(1348141770) The Oracle database system was there in 1970's. Lan Hui(1348141770) Joel Spolsky, the founder of Stack Overflow, is a prolific author good at writing. Lan Hui(1348141770) He has produced more than 1000 blog posts over a period of 10 years. Lan Hui(1348141770) He must have been thinking and thinking. Lan Hui(1348141770) Writing is Thinking. Writing is Communicating. Lan Hui(1348141770) I think you should read his "Top 10" posts. Lan Hui(1348141770) Let's take a 5-minute break. Lan Hui(1348141770) After that we will talk about licenses. 2020-03-09 17:01:19 Marie(2928285277) Okay sir Lan Hui(1348141770) =================================================== Lan Hui(1348141770) One question. Lan Hui(1348141770) What kind of free software license would you use if your software is an online application, i.e., you do not send people installation packages? Lan Hui(1348141770) License for online applications, such as Simple Note, One Note. Lan Hui(1348141770) Affero GPL. Lan Hui(1348141770) Affero GPL has an extra clause designed specifically for online applications. Lan Hui(1348141770) I think MIT is good too. It is simple and permissive. Lan Hui(1348141770) In contrast, GPL is a copyleft license, less permissive. Lan Hui(1348141770) Copyleft is an interesting word. Lan Hui(1348141770) The exact meaning of copyleft is that it requires all its derivative work to be copyleft too. Lan Hui(1348141770) Some people think this is a way of defending freedom. Lan Hui(1348141770) =================================================== Lan Hui(1348141770) Quiz time. Lan Hui(1348141770) This is limited-time quiz which you have to submit before 5:35pm today to LRR. Lan Hui(1348141770) :: [True/False] Free software means zero-cost software. [True/False] Zero-cost software cannot be proprietary. [True/False] If the source code is visible, then the software is open source. [True/False] Open source software cannot be used for commercial purposes. Lan Hui(1348141770) Select two and only two to answer. 2020-03-09 17:10:23 Marie(2928285277) I still can’t login to LRR 2020-03-09 17:10:26 Guedalia Youma (3014432207) Where should we submit it ? By email ? Lan Hui(1348141770) Bye. Friday, 13 March 2020 ===================== *Quiz review - The Cathedral and the Bazaar - Project management software - Kanboard - Sustained maintenance efforts - Project mission - Standard code tree* Morning section ---------------- 2020-03-13 7:57:26 初阳软工171 伍泰炜(2728735169) [表情] 2020-03-13 7:57:45 网络171许晓鹏(892376699) [表情] 2020-03-13 8:00:05 初阳软工171 伍泰炜(2728735169) 201736900125 2020-03-13 8:00:10 软工初阳171 刘莉莉(1196448461) 201736900108 2020-03-13 8:00:17 软件工程 张珣(1955357976) 201732120109 2020-03-13 8:00:18 初阳软工171 吴贞娴(1395588359) 201732120108 2020-03-13 8:00:22 初阳软工171 余慧(945168786) 201736900117 2020-03-13 8:00:22 初阳软工171叶红霞(1655602611) 201736900115 2020-03-13 8:00:23 初阳软工171袁世家(1515245651) 201739230123 2020-03-13 8:00:23 软工初阳171周佳威 201736900130 2020-03-13 8:00:24 初阳软工171 王海榕(1012635788) 201732120105 2020-03-13 8:00:24 初阳软工171 蒋佳玲(1850424414) 201732120103 2020-03-13 8:00:28 系统消息(10000) 初阳软工171 陈俊蕾撤回了一条消息 2020-03-13 8:00:28 唐叶尔(1768559501) 201736900111 2020-03-13 8:00:30 网络171许晓鹏(892376699) 201730210128 2020-03-13 8:00:33 软件工程初阳1701 徐梦旗(2663479778) 201732120124 2020-03-13 8:00:37 初阳软工171 陈俊蕾(1223259604) 201736900103 2020-03-13 8:00:40 重新做人(1344914885) 201736900113 2020-03-13 8:00:40 软件工程 王雪洁(249795581) 201732120106 2020-03-13 8:00:44 初阳软工171 陈肖飞(1662727361) 20173690104 2020-03-13 8:00:46 蓝珲(1348141770) 大家早上好 2020-03-13 8:00:52 网络171—董文文(2373706002) 201730210303 2020-03-13 8:01:00 初阳软工171 徐闰钞(374526027) 201736900127 2020-03-13 8:01:03 网络171许晓鹏(892376699) 早上好 蓝珲(1348141770) =============================================== 蓝珲(1348141770) 我们上次课讲了开源软件的收费模式,以及开源软件的许可证。 蓝珲(1348141770) 还做了一个Quiz。 蓝珲(1348141770) :: [True/False] Free software means zero-cost software. [True/False] Zero-cost software cannot be proprietary. [True/False] If the source code is visible, then the software is open source. [True/False] Open Source software cannot be used for commercial purposes. 蓝珲(1348141770) 我觉得答案都是F。 蓝珲(1348141770) 大家有没有不同意见的? 蓝珲(1348141770) Free software means zero-cost software. 说得过于绝对。 RStudio就可以收费啊。 蓝珲(1348141770) Zero-cost software cannot be proprietary. 如果这个zero-cost是对用户来说的话,其实大家在Apple Store免费下载的很多软件都是私有的。 2020-03-13 8:05:10 计非181 王智洋(1162466610) 201830220719 2020-03-13 8:05:18 网络171-侯新苗(953957823) 20173021034 蓝珲(1348141770) Simple Note是不是私有的? 蓝珲(1348141770) https://simplenote.com/ 蓝珲(1348141770) 看一下它的主页,好像没有说是open source的,许可证的信息也没有。 蓝珲(1348141770) Simple Note下载使用是免费的,有些额外功能需要付费。 蓝珲(1348141770) If the source code is visible, then the software is open source. 如果仅仅是代码可见,但是许可证是私有的话,就不是open source的。 蓝珲(1348141770) Open Source software cannot be used for commercial purposes. 这个也是False。 RStudio就是例子。它有不同的收费计划(pricing plan),收费是用于商业目的。 蓝珲(1348141770) 以上是Quiz的内容。 蓝珲(1348141770) 我还要求你们去读课本的第二章。大家都已经读完了吧? 蓝珲(1348141770) https://producingoss.com/en/getting-started.html 蓝珲(1348141770) 我估计有部分同学还没有开始读 -- 还没有开始读的要开始读起来了。 蓝珲(1348141770) 你们中文版的那个可以做成电子书吗? 蓝珲(1348141770) https://producingoss.com/zh/ 2020-03-13 8:12:34 软工初阳171 应舸(1434305984) 哪个中文版[表情] 蓝珲(1348141770) https://producingoss.com/zh/ch02.xml 蓝珲(1348141770) 就是上面这个。 蓝珲(1348141770) https://producingoss.com/zh/ 蓝珲(1348141770) 把整个文件夹拷贝下来,应该是可以做成电子书的。 蓝珲(1348141770) 大家可以试试看。我试过,没有成功。 蓝珲(1348141770) 如果有人成功了,可以分享一下。 蓝珲(1348141770) 因为我的英文比较好,所以英文看起来比较顺畅。 蓝珲(1348141770) 但是阅读速度,还是读中文快的。 蓝珲(1348141770) 中文的话,可以上下扫描。英文,只能老老实实一句一句读了。 蓝珲(1348141770) 也有好处。 蓝珲(1348141770) 另外一个阅读任务也出来了 蓝珲(1348141770) http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html 蓝珲(1348141770) The Cathedral and the Bazaar 蓝珲(1348141770) 大教堂与集市 蓝珲(1348141770) 这个是比较有名了,讲两种软件开发模式。 篇幅较长。 蓝珲(1348141770) 我也是教这门课才看一遍,以前听说过,一直没看,以为是讲生活信仰的。 蓝珲(1348141770) [图片] .. image:: Cathedral-and-Bazaar-ToC.png :height: 100 :alt: required reading sections 蓝珲(1348141770) 你们只需要把箭头经过的章节读一下,其他的不用读(主要在讲fetchmail的开发细节)。 蓝珲(1348141770) 这个,中文版也是有的,但是网上说翻译的比较烂。 蓝珲(1348141770) 确实也不好翻译。 蓝珲(1348141770) b站的一些字幕组来翻译估计会翻译的更好。 蓝珲(1348141770) 我们先休息5分钟。 2020-03-13 8:21:12 软工初阳171 何可人(1461938594) 201736900106 2020-03-13 8:21:40 软工初阳171 应舸(1434305984) 201736900128 2020-03-13 8:22:21 初阳软工171方梓安(2453122992) 201736900105 蓝珲(1348141770) =============================================== 蓝珲(1348141770) 还有其他一些好书,Peopleware 之类的。 蓝珲(1348141770) 这个大家工作后可以读读。 蓝珲(1348141770) [文件] 蓝珲(1348141770) 上面这个文件主要是专访熊节的文字实录。大家课后可以看看。 蓝珲(1348141770) 不做要求。 蓝珲(1348141770) 对了,你们的 Decide areas for improvement 还没有交。 蓝珲(1348141770) 是我忘记在对分易创建提交目录了。 蓝珲(1348141770) 现在已经创建,你们在下周一之前交上去。别忘了包括组员信息,这样方便我给分。这个是2分。 蓝珲(1348141770) 看板 - Kanboard 蓝珲(1348141770) 我想让你们用看板来管理软件项目。 蓝珲(1348141770) 你们的账号密码我已经创建。 蓝珲(1348141770) [图片] .. image:: TIM20200316180248.png :height: 100 :alt: Kanboard for undergraduate thesis supervision 蓝珲(1348141770) 我的看板是长上面这个样子的。 蓝珲(1348141770) 卡片可以拖动到不同的泳道(swim lane)。 蓝珲(1348141770) 有4个泳道。 2020-03-13 8:37:28 初阳软工171 伍泰炜(2728735169) 然而这是Github已经包含的一部分功能…… 蓝珲(1348141770) 原则上是“进行中(In Progress)”那个泳道卡片(任务)不能超过2个。这是为了避免 Multi-tasking。 蓝珲(1348141770) Github只是拿来做代码版本管理的。 蓝珲(1348141770) 看板肯定没有这个做得好。 蓝珲(1348141770) 个人观点。 蓝珲(1348141770) 我的目的是,我要看到你们管理项目的动态。 蓝珲(1348141770) 也许你已经有动态了,但是我不知道。 蓝珲(1348141770) 所以你要记录下来。 蓝珲(1348141770) 看板这个功能很多团队协作工具都有的,比如Trello,JIRA。 蓝珲(1348141770) 我们用的这个 kanboard 胜在轻量,简洁明快。 蓝珲(1348141770) 你们以后去公司工作,可以自己部署在公司服务器。 蓝珲(1348141770) 最多花一天时间,就可以部署好了。 蓝珲(1348141770) 所以,你们从今天开始,就可以慢慢在看板上(http://118.25.96.118/kanboard)添加卡片了。 蓝珲(1348141770) [图片] 蓝珲(1348141770) [图片] 蓝珲(1348141770) 每个卡片点进去是这样的。可以添加评论。 蓝珲(1348141770) [图片] 蓝珲(1348141770) 这个软件是个开源软件,法国人开发的,但是参与项目的人数前前后后也有200人了吧。 2020-03-13 8:44:30 系统消息(10000) 初阳软工171 伍泰炜撤回了一条消息 2020-03-13 8:44:45 初阳软工171 伍泰炜(2728735169) [图片] 蓝珲(1348141770) 你们登录一下试试。 蓝珲(1348141770) 我们先休息5分钟。 2020-03-13 8:45:40 软件工程 常思琦(995959606) 201732120101 蓝珲(1348141770) =============================================== 蓝珲(1348141770) [图片] 蓝珲(1348141770) 我们要做软件,首先要想想自己手里头有什么。 蓝珲(1348141770) 现在老是喊创新。 蓝珲(1348141770) 创新哪里有那么容易。 蓝珲(1348141770) 根据辩证法,创旧到极致就是创新。 蓝珲(1348141770) 很多所谓的创新,那叫一个惨不忍睹。 蓝珲(1348141770) 我手头上有一个软件,我要把它开源,公之于众,怎么个搞法? 蓝珲(1348141770) 把代码往github一扔,就完事了? 蓝珲(1348141770) 在现阶段,你们搞开源,其实更多的目的是对自己的一种鞭策。 蓝珲(1348141770) 看看自己有几天没有打卡了。 蓝珲(1348141770) 比如这个 Benno Schulenberg 就是几乎天天都在打卡。 蓝珲(1348141770) https://git.savannah.gnu.org/cgit/nano.git/log/ 蓝珲(1348141770) [图片] .. image:: nano-git-log.png :height: 100 :alt: Benno Schulenberg's nano maintenance activity 蓝珲(1348141770) 十年如一日的打卡,这样做出来的产品会不行? 蓝珲(1348141770) Benno Schulenberg 是在创旧啊。 蓝珲(1348141770) 说实话,我很佩服这个老哥的做事精神。 蓝珲(1348141770) 这才是做软件,才是管理软件嘛。 蓝珲(1348141770) 都是一行一行,实打实出来的嘛。 蓝珲(1348141770) 开源后,要告诉这个世界你的软件是做什么用的。 蓝珲(1348141770) 这个是 mission statement 里要包含的东西。 蓝珲(1348141770) 还有比较重要的是描述你的软件的特色, 蓝珲(1348141770) 与不足。 蓝珲(1348141770) 特色大家都不会忘记。 蓝珲(1348141770) 不足大家都不愿意提及。但是,这个确实是要提及的,而且是有帮助的。 蓝珲(1348141770) 能够拉近人与人的距离。 蓝珲(1348141770) 我们与圣人的距离很远,因为他的不足很少。 蓝珲(1348141770) 我们提不足,其实是锚定期望值。 蓝珲(1348141770) “我事先告诉你了哦,我的软件可能会随时崩溃,你可要经常存盘哦。” 蓝珲(1348141770) 当然,我们把不足描述了以后,也是为了给以后的改进提供方向。 蓝珲(1348141770) 介绍软件要尽量简洁明了,让别人理解你的软件。 蓝珲(1348141770) 别炫技。 蓝珲(1348141770) 把代码公开后,也有助你一开时就注意采取比较好的开发目录。 蓝珲(1348141770) 不要把所有的文件都丢在一个文件夹下。 蓝珲(1348141770) 除非你的项目只有很少的文件。 蓝珲(1348141770) [图片] .. image:: courseobjectivesatisfaction-git-log.png :height: 100 :alt: source tree for Course Objective Satisfaction 蓝珲(1348141770) 比如我这个,只有两个文件,所以放在一个文件夹下也可以。 蓝珲(1348141770) 项目的名字就是 “课程目标达成度”。 蓝珲(1348141770) 不是很好的名字,是个功能性的名字。 蓝珲(1348141770) 就是根据同学的各项成绩,算出一个班级的课程达成度。 蓝珲(1348141770) 不过这个指标是有 bug 的。 蓝珲(1348141770) 什么bug大家自己想。(参见 Goodhart's Law) 蓝珲(1348141770) Code tree: src/, bin/, lib/, etc/, include/, test/, share/, data/, example/, doc/, README, LICENSE, COPYING, MANUAL, TUTORIAL, FAQ, ... 蓝珲(1348141770) 大型一点的软件,一般会有下面的子文件夹与文件。 蓝珲(1348141770) Code tree就是代码的目录结构。 蓝珲(1348141770) src里面放源代码,.c, .py, .java之类。 蓝珲(1348141770) bin里面放可执行文件。这个一般可以提供,也可以不提供,不提供的话,要确保用户能够很容易自己生成可执行文件。 蓝珲(1348141770) 提供的话,就要考虑不同的CPU架构、操作系统了。 蓝珲(1348141770) etc里放些杂七杂八的东西。 蓝珲(1348141770) doc放文档。 蓝珲(1348141770) LICENSE与COPYING选一个就好了,放许可证。 蓝珲(1348141770) 现在我看到的情况是,COPYING用得比较多。 蓝珲(1348141770) 这种标准化的软件项目目录是比较好的结构。 蓝珲(1348141770) 我们休息5分钟。 2020-03-13 9:15:03 初阳软工171 伍泰炜(2728735169) @蓝珲 应该没有行不行一说,Nano在做简单文本文件编辑时是不错。但不要希望用它来做复杂的编辑工作。其它的编辑器诸如'emacs','vim','gedit'都提供了文本着色以及自动文本格式化。而Nano只做最基本的编 辑操作,而不提供其它功能。而用户只要有需求就会尝试符合需求的软件。Linux平台的文本编辑器还有很多,vim,geditor,emacs等等,nano不是唯一的选择,也不能说是做的最好的。而且,nano的作者没有关心可怜的乌干达儿童。(玩笑) 蓝珲(1348141770) =============================================== 蓝珲(1348141770) 凡我不能做到的正义之事皆值得敬佩。 蓝珲(1348141770) 10年在维护一个“简单”的东西,你说他图啥? 蓝珲(1348141770) 值得深思。 蓝珲(1348141770) 下课。 蓝珲(1348141770) 这个大家看看。 蓝珲(1348141770) 10-year Rule https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/ .. image:: 10-year-rule-spolsky.png :height: 100 :alt: Good Software Takes Ten Years. Get Used To it. JULY 21, 2001 by JOEL SPOLSKY 蓝珲(1348141770) 我们下次课讲。 2020-03-13 9:32:23 初阳软工171 伍泰炜(2728735169) 英雄联盟也很厉害的,他从2009年美服开服,一直维护到今天,版本号从0到10。大家也来敬佩敬佩[表情] Monday, 16 March 2020 ===================== *Feedback on project proposal - Setting up a central code repo - Concerted management efforts - Kanboard - Project mission* Morning section ---------------- 2020-03-16 10:34:01 201732120170-Tamene Robel妈妈(3287975278) No class? 2020-03-16 10:34:27 Saeed : 201732120146(446571011) [表情] 2020-03-16 10:34:32 nainezz(2407048879) Was about to ask same question 2020-03-16 10:34:34 armand(2431154023) ? 2020-03-16 10:34:55 201732120134_Michelle(3304952232) it starts at 10:35 2020-03-16 10:34:55 201732120170-Tamene Robel妈妈(3287975278) Sleep guys 2020-03-16 10:34:56 ibrahim(1525200991) break 2020-03-16 10:35:01 201732120134_Michelle(3304952232) [表情] 2020-03-16 10:35:07 ALBOROM WARD-201732120143家长(3279308836) 10:40 2020-03-16 10:35:21 nainezz(2407048879) @ibrahim break ?? 蓝老师 =================================================== 2020-03-16 10:35:32 ibrahim(1525200991) breakfast 蓝老师 Morning guys. Could you type your student number? 2020-03-16 10:35:42 ibrahim(1525200991) 201732120159 2020-03-16 10:35:43 系统消息(10000) FADHEL ABDULLAH撤回了一条消息 2020-03-16 10:35:43 陈真赐(1312502742) 201732120114 2020-03-16 10:35:47 nainezz(2407048879) 201732120173 2020-03-16 10:35:49 201732120141--AHAMED SABUJ妈妈(2686217157) 201732120141 2020-03-16 10:35:50 ALBOROM WARD-201732120143家长(3279308836) 201732120143 2020-03-16 10:35:51 软英171 陆博业(2794513466) 201732120119 2020-03-16 10:35:52 李佳兴(421281726) 201732120118 2020-03-16 10:35:55 201732120134_Michelle(3304952232) 201732120134 2020-03-16 10:35:58 叶涵涛(2289316051) 201732120125 2020-03-16 10:36:02 软英171陈伟超(937202326) 201732120113 2020-03-16 10:36:05 FADHEL ABDULLAH(3071163205) 201532120139 2020-03-16 10:36:06 杰西卡201732120133(2422938906) 201732120133 2020-03-16 10:36:14 201732120167 Clive妈妈(3321692247) 201732120167 2020-03-16 10:36:20 软英171高增(1520653544) 201732120117 2020-03-16 10:36:21 201732120157 hossain arif 201732120157 2020-03-16 10:36:22 Saeed : 201732120146(446571011) 201732120146 2020-03-16 10:36:23 ABDALMUHAYMEN 201730210234(1071107298) 201730210234 蓝老师 Let's wait 4 minutes for more people to join in. 2020-03-16 10:36:37 armand(2431154023) 201732120161 2020-03-16 10:36:40 软英171 郑可富(1924773187) 201732120129 2020-03-16 10:36:51 201632120150-Ashly(1661411131) 201632120150 2020-03-16 10:36:54 Mohamed Jifry Hazzaly Mohamed爸爸(3028786026) 201732120165 2020-03-16 10:36:54 谢佳聪(1249923715) 201732120123 2020-03-16 10:37:03 LUL GUOBA RUOT (2217724540) 201632120161 2020-03-16 10:37:21 201732120170-Tamene Robel妈妈(3287975278) 201732120170 2020-03-16 10:37:31 软英171周仙龙(1748153603) 201732120130 2020-03-16 10:37:41 201732120127 张滨(2350711965) 201732120127 2020-03-16 10:38:12 Samantha 201632120140(2459455104) 201632120140 蓝老师 [Announcement] 蓝老师 You need to finish reading `The Cathedral and the Bazaar`_ by the end of this week. .. _The Cathedral and the Bazaar: http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html 蓝老师 I am not going to post new readings this week. Please finish the above reading first. 蓝老师 This reading may or may not appear in our quiz. But it will certainly appear in our exam. 蓝老师 Take some notes while you're reading. 蓝老师 I feel Eric Raymond's writing is a bit hard to understand. 蓝老师 You do not have to read all sections, only the selected sections that I mentioned on our course home page. 蓝老师 About "Decide areas for improvement". 蓝老师 I have posted my opinions on your proposed areas for improvement. 蓝老师 http://lanlab.org/course/2020s/spm/decide-areas-for-improvement-review.html 蓝老师 I have three opinions: Accept, Half Accept and Reject. 蓝老师 In most Reject cases, the reason why I rejected your proposal is that I could not understand what you are going to do, either because your writing is too vague or too confusing. 蓝老师 If your status is Accept, you get 2 marks. 蓝老师 If your status is Accept with Conditions, you get 1 (temporarily). 蓝老师 If your status is Reject, you get 0 (temporarily). 蓝老师 I will give you a chance to revise your proposal. 蓝老师 If I finally accept your proposal, I will update your mark of this part to 2. 蓝老师 For now, I use the above marking strategy. 蓝老师 You could look at the above `big table`_ and look at other people's proposals. .. _big table: http://lanlab.org/course/2020s/spm/decide-areas-for-improvement-review.html 蓝老师 Remember: if you submit your revised proposal (for Decide Areas for Improvement), that proposal should not duplicate the areas already mentioned in the above table. 蓝老师 We don't want duplicate efforts. 蓝老师 What is a good deadline for submitting the revised proposal? 蓝老师 (Ward, you sent that by email? If yes, I will check.) 蓝老师 (No problem.) 蓝老师 (Some late penalty may apply.) 蓝老师 Perhaps next Monday (Mar 23) is a good deadline for submitting the revised proposal. 蓝老师 You do not need to submit your proposal again if you are in the Accept category. 蓝老师 However, please check the questions I asked (if any) in the column Instructor Comments, and answer them in your Kanboard project. 蓝老师 You should first create a project inside Kanboard (http://118.25.96.118/kanboard), 蓝老师 then create a card within that project, addressing the questions (if any) I asked. 蓝老师 That is for people in the Accept category. 蓝老师 For people in the other two categories (Accept with Conditions and Reject), you must send an updated proposal to me by next Monday 11:59pm. 蓝老师 Everyone should start using Kanboard now. 蓝老师 If you do not have an account yet, tell me that. I will create one for you. 蓝老师 I believe most people have Kanboard accounts. 蓝老师 It seems you intend to manage either LRR or OAPS, 蓝老师 which is great. 蓝老师 The problem is that if each group manages LRR separately, we do not have a concerted management effort. 蓝老师 (OK. For guys who are unable to login Kanboard, don't worry. I will create an account for you later today.) 蓝老师 Since Ashly has already made some improvements to LRR, is it a good idea that all people commit to his github repo? 蓝老师 Ashly will act as a gatekeeper for merging your commits. 蓝老师 Is Ashly here? Could you do that? 蓝老师 Let's take a 5-minute break. 蓝老师 =================================================== 蓝老师 ("All of us can’t login (Kanboard)"?) 蓝老师 (Anyway, it is easy for me to change your password.) 蓝老师 (Of course, if you have made lots of failed attempts.) 蓝老师 Anyone good at github's pull request and review processes? 蓝老师 My idea is to have one (central) github repo that hosts all of our maintenance work. 蓝老师 We need a person to merge commits. 蓝老师 Is that supposed to be me? 蓝老师 We need a person to review pull requests, merge them, etc. 蓝老师 Different groups could work on different branches without interrupting each other. 蓝老师 We then regularly merge the branches back to the master branch. 蓝老师 That is the idea. 蓝老师 (You do not have to sign in Kanboard now.) 蓝老师 Of course, we can do the same thing (i.e., one central repo) for OAPS. 蓝老师 [图片] .. image:: TIM20200316222325.png :height: 100 :alt: two versions of the same software 蓝老师 The problem for OAPS is that you work on different versions (see the above picture). 蓝老师 (I think Ashly has that time. He is almost done.) 蓝老师 It is convenient for each group to work on their own version, but the drawback is that your individual improvements could not be taken together to make a big improvement. 蓝老师 Let me think more about that. 蓝老师 Perhaps I am the one who should review your code and merge it. 蓝老师 (It doesn't matter.) 蓝老师 (You could clone it to a public repo and work on the public one.) 蓝老师 (That is not the main reason.) 蓝老师 Or, we could create a `course-level public account`_ at github so that everyone could commit there. .. _course-level public account: https://github.com/spm2020spring 蓝老师 Anyway, send me an email if you are interested (in being the gatekeeper). 蓝老师 What is the reward? You may ask. 蓝老师 I don't know. Perhaps you could learn more? Or we will have a better software? 蓝老师 Ibrahim could do that? 蓝老师 You are not working on LRR, are you? 蓝老师 Alright. Let's say Ashly has temporarily agreed to maintain a course-level public repo for LRR, and Ibrahim for OAPS. 蓝老师 Of course, I welcome other people to join. 蓝老师 I may help too. 蓝老师 Perhaps you know more github operations that I do. 蓝老师 I kind of forget the look and feel of your OAPS, Ibrahim. 蓝老师 Could you show some screenshots? 蓝老师 If yours is good, I would suggest everyone to improve on top of your version. 蓝老师 I am going to create two course-level public github repos, one for LRR, and another for OAPS. 蓝老师 When you commit to the public repo, do not forget to include your name and student number for each commit in your commit message. 蓝老师 That is your credit. 蓝老师 It is harder for me to infer who you are from your email address. 蓝老师 (Yes. Send them to me by email. Thanks.) 蓝老师 We talked about how to earn 1b dollars from our software 10 years later. 蓝老师 Can we earn that much from LRR or OAPS. 蓝老师 I think the chance is very remote. 蓝老师 There are better products out there. 蓝老师 For OAPS's counterpart, we have arXiv, bioarXiv, etc. 蓝老师 For LRR, we have Duifenyi, Chaoxing, etc. 蓝老师 If you are successful, you should give me some credit. 蓝老师 Let's take a 5-minute break. 蓝老师 =================================================== 蓝老师 (Learn more to earn more.) 蓝老师 No problem for LRR, since everyone starts from "scratch". 蓝老师 OAPS - most of you have already worked on a version of it. If we choose to use Ibrahim's version, then ... 蓝老师 other people may be less familiar with that version than Ibrahim is. 蓝老师 How to solve that problem if we do want to have a central github repo? 蓝老师 Need to think more about that. 蓝老师 (Of course we can do that, but the point is that we need to merge these branches someday.) 蓝老师 If these branches are drastically different, it is very hard to merge them. 蓝老师 A better idea to start off from a Mother Branch. 蓝老师 Whose code should be the Mother Branch? 蓝老师 If we have decided a Mother Branch, then people could make their own improvements on top of that, making the merge job much easier. 蓝老师 I will check my grade book of last semester's OAPS evaluation and figure out if I can pick a Mother Branch. 蓝老师 I will browse your code too. 蓝老师 Lots of work on my side. But I am glad to do that. 蓝老师 I remember Ibrahim's code is not that bad, isn't it? 蓝老师 Let's see. 蓝老师 Kanboard. 蓝老师 Once you have created a project inside Kanboard, could you invite me to your project so that I can monitor your progress? 蓝老师 You should also make your Kanboard public. 蓝老师 Easier for the outsider to check your status (like something shown below). 蓝老师 [图片] .. image:: TIM20200316180248.png :height: 100 :alt: Kanboard for undergraduate thesis supervision 蓝老师 (Thanks, Ibrahim.) 蓝老师 [图片] .. image:: TIM20200316222412.png :height: 100 :alt: Slide "starting from what you have" 蓝老师 That is almost every thing for today. 蓝老师 One advice is "Starting from What You Have", 蓝老师 which is exactly we are doing now. 蓝老师 We need to have a mission, and a vision. 蓝老师 Give an overview of our project. 蓝老师 What is Raspberry Pi's mission statement? 蓝老师 https://www.raspberrypi.org/ 蓝老师 [图片] .. image:: TIM20200316222452.png :height: 50 :alt: Raspberry Pi's mission 蓝老师 Use one sentence to let other people hear your ping. 蓝老师 Use one sentence to let other people know why you do this project. 蓝老师 Bye. Afternoon Section ----------------- Lan Hui: =================================================== Lan Hui: Good afternoon. Could you type your student number? Guedalia Youma (3014432207) Good afternoon professor Nicole Rutagengwa (1403962700) Good afternoon sir Guedalia Youma (3014432207) 201925800221 Twizere Pacifique 唐平 Good Afternoon Teacher Nicole Rutagengwa (1403962700) 201925800169 NGOUNOU家长(438499151) hello Sir Twizere Pacifique 唐平 201925800174 Tabitha(2954060050) 201925800170 NGOUNOU家长(438499151) 201925800180 Marie(2928285277) 201925800173 Lan Hui: I would like to share with you an interesting article, on MOOC teaching methods. Lan Hui: https://www.classcentral.com/report/why-my-mooc-is-not-built-on-video/ Lan Hui: [图片: Lorena Barba. Mar 5th, 2015. Why My MOOC is Not Built on Video.] Lan Hui: The author's main point: "expensive, high-production-value videos are not necessary to achieve a quality learning experience." Lan Hui: " 'Lecture videos' have the same pitfalls as regular lectures: they provide a false sense of clarity and are utterly forgettable", she says. Lan Hui: Very interesting. You could save the essay for future reading. At least I am convinced. Lan Hui: When you watch video, you enter a Passive Zone. Lan Hui: Where were we left last time? Lan Hui: I have talked about Ashly's story of a bug fix for LRR. Lan Hui: The "`Unable to sign in immediately after sign up`_" bug. .. _Unable to sign in immediately after sign up: http://118.25.96.118/bugzilla/show_bug.cgi?id=30 Lan Hui: All LRR bugs are here: http://118.25.96.118/bugzilla/describecomponents.cgi?product=Lab%20Report%20Repository%20%28nor%20houzi%29 Lan Hui: I am happy that we have more than 40 bugs now for LRR. Lan Hui: .. image:: LRR-all-bugs.png :height: 100 :alt: Product: Lab Report Repository (nor houzi) http://118.25.96.118/bugzilla/buglist.cgi?bug_status=__all__&no_redirect=1&order=changeddate%20DESC%2Cpriority%2Cbug_severity&product=Lab%20Report%20Repository%20%28nor%20houzi%29&query_format=specific Lan Hui: The above picture shows some recent bug reports. I entered these reports, which I got from students. Lan Hui: The "Group creation error on duplicated group names" is reported by one of you guys. Lan Hui: These reports have laid a solid foundation for LRR. Lan Hui: At least I think so. Lan Hui: Software is Hard. Lan Hui: Thus I have also talked about the 10-year Rule. Lan Hui: See https://www.joelonsoftware.com/2001/07/21/good-software-takes-ten-years-get-used-to-it/ Lan Hui: [图片] Lan Hui: This is actually a VIR (Very Important Rule). Lan Hui: No one has told you that. I believe. Lan Hui: It is important for morale. Lan Hui: "Anyway, something good does need time. I just need to give myself more time for it to be that good." Lan Hui: You may think after knowing this rule. Lan Hui: "I just cannot believe that you could achieve something that good in one year. " Lan Hui: Policy makers think after knowing this rule, so they won't rush and set unrealistic expectations. Lan Hui: I have talked about the Affero GPL for online applications, too. Lan Hui: Online applications are a bit different from offline applications in that their source code is not distributed. Rather, it is stored on server. Lan Hui: Customers do not download a copy of the source code. Lan Hui: Weibo and twitter are these kinds of online applications. Lan Hui: Although you may still have clients for them too. Lan Hui: Office 365 is a typical online application, although it does not come with a free and open source license. Lan Hui: I mentioned that both GPL and Affero GPL are copyleft licenses. Lan Hui: What does "copyleft" mean? Lan Hui: Something in an opposite direction from "copyright"? Lan Hui: A copyleft license says that the derivative works must grant freedoms described in the parent license. Example: GPL, Affero GPL. Lan Hui: It is like an infectious license, Lan Hui: isn't it? Lan Hui: You require the derivative work to use the same (or at least compatible) license too. Lan Hui: What does derivative work mean? Lan Hui: A derivative work is a piece of work that is built upon the material of an old work. Lan Hui: In the software source code sense, a derivative software has used a piece of source code from someone else. Lan Hui: Whether that piece of source code is a file, or just a function. Lan Hui: GPL, Affero GPL -- copyleft licenses. Lan Hui: If you use GPL license in your software, other people who think this license too restrictive may be afraid to incorporate your code into their software. Lan Hui: Because if they do, their software has to use GPL-like licenses too. Many people do not want to do that. Lan Hui: That is OK. On the contrary, some people indeed want to do that. Lan Hui: What are non-copyleft licenses, while still being open source? Lan Hui: MIT Licenses, Apache Software License v2, and BSD license -- non-copyleft licenses. Lan Hui: These licenses do not put as strict a restriction on derivative work as copyleft licenses do. Lan Hui: "I do not care how you are going to use my source code." Lan Hui: "Commercial, proprietary, all OK." Lan Hui: "As long as you keep the copyright notice of the original code intact." Lan Hui: Let us take a 5-minute break. Guedalia Youma (3014432207) Alright Lan Hui: =================================================== Lan Hui: Remember the Software Engineering course taught by Professor Leveson at MIT? Lan Hui: https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-355j-software-engineering-concepts-fall-2005/ Lan Hui: [图片] .. image:: Leveson-Software-Engineering-MITOCW.jpg :height: 100 :alt: Software Engineering Concepts, Prof. Nancy Leveson, Fall 2005, Graduate, MIT Course Number 16.355J / IDS.341J / (formerly ESD.355J) Lan Hui: The course material's license is called Creative Commons License. Lan Hui: Creative Commons License is commonly used for documents. Lan Hui: [图片] .. image:: CC-icon.png :height: 100 :alt: Icon for Creative Commons License. Lan Hui: If you see this toilet sign-like icon, then it means that product uses the Creative Commons License. Lan Hui: You could use the materials for free, or build materials on top of it with no problems, as long as you give credit to the original authors. Lan Hui: Very few software would use Creative Commons License. CC is mostly for documents (I think). Lan Hui: Books can use CC License. Lan Hui: What is the license of our textbook? Lan Hui: Karl Fogel. Producing Open Source Software: How to Run a Successful Free Software Project. Second Edition. Lan Hui: I believe it is under Creative Commons License. Lan Hui: Check https://producingoss.com/en/copyright.html Lan Hui: If you write a book, you could consider using this license. Lan Hui: (Graduate Life in A beautiful City in East China?) Lan Hui: Creative Commons License is a very popular license in the publishing industry. Lan Hui: Let us move on to the next topic. Lan Hui: [Announcement] Lan Hui: You need to finish reading *The Cathedral and the Bazaar* by the end of this week. Lan Hui: http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html Lan Hui: There will be no new reading assignment this week. Lan Hui: Make a plan to finish reading the above essay, an important one in the open source world. Lan Hui: When you read, make sure you take some notes, writing down the key points, refreshing ideas, eye-opening thoughts, etc. Lan Hui: So that you could have a quick review when needed. Lan Hui: Now let's talk about "Decide areas for improvement". Lan Hui: I have posted my opinions on your proposed areas for improvement. Lan Hui: Check the following link. Lan Hui: http://lanlab.org/course/2020s/spm/decide-areas-for-improvement-review.html Lan Hui: [图片] .. image:: TIM20200316175023.png :height: 100 :alt: Accept case Lan Hui: [图片] .. image:: TIM20200316175029.png :height: 100 :alt: Half Accept case Lan Hui: 0 Reject. Lan Hui: 1 Accept with Conditions. Lan Hui: The "Accept with Conditions" proposal is proposing to provide Chinese language support. Lan Hui: Localization is best done by native speakers who master both the target language and the original language. Lan Hui: Below is my comments: While supporting Chinese is important and highly desired (see the bottom part of this link: http://lanlab.org/course/2019s/spm/user-feedback-on-LRR-implemented-by-nor-houzi-group.html), it is not my current priority since there are so many critical bugs awaiting to be solved. I am a bit unsure about your level of Chinese. Please convince me that you could carry out the task (e.g., by which means). If you just replace English words with Chinese words in user interface, that is not very flexible. Once the English interface has been changed, you need to do the whole thing again. I believe there is a better way to do localization. For example, Nano has a po file for each target language. See https://git.savannah.gnu.org/cgit/nano.git/tree/po/zh_CN.po You should provide a similar solution for LRR. Lan Hui: My main concern is that Bernard and Moummou do not know Chinese well enough. Lan Hui: Of course, you could argue that I don't have to know Chinese well enough to do the work. Lan Hui: Look, I have translation tools like Bing translator, Youdao translator, etc. Lan Hui: That is right. So I don't object your proposal based solely on the language-proficiency ground. Lan Hui: That is why I gave "Accept with Conditions" rather than Reject. Lan Hui: On the technical side, you need to make sure you don't just use a Search-and-Replace approach. Lan Hui: That is not flexible. Lan Hui: You should adopt a systematic method to provide the Chinese language support. Lan Hui: Nano supports Chinese too, achieved through a po file: https://git.savannah.gnu.org/cgit/nano.git/tree/po/zh_CN.po Lan Hui: This po file contains blocks like below. Lan Hui:: #: src/browser.c:67 #, c-format msgid "Cannot open directory: %s" msgstr "无法打开目录:%s" Lan Hui: You see. "Cannot open directory: %s" -> "无法打开目录:%s" Lan Hui: The translation is not done on the source code, but done in another file. Lan Hui: You need to familiarize with that kind of approach. Lan Hui: I won't accept a "Chinese version" of the source code made by a manual Search-and-Replace approach. Twizere Pacifique 唐平 Teacher I have small question about the bug correction assignment , After we finish ,how are we going to submit ? , Can we have a github repository access so that we can submit by doing pull requests , or are we going to send you the files that we have changed ? Lan Hui: That is a good question. I will talk about that in a moment. Lan Hui: Let's take a 5-minute break first. Twizere Pacifique 唐平 okay Lan Hui: =================================================== Lan Hui: Returning to Pacifique's question, Lan Hui: I intend to create a course-level github account so that you could send your changes there. Lan Hui: I will use Ashly's current code as the Mother Branch, from which you could clone. Lan Hui: BTW, Ashly is an undergraduate student taking the same course. Lan Hui: The Mother Branch is in fact the master branch. Lan Hui: You clone that master branch to your local drive. Lan Hui: Work on your "features" and send pull requests for merging. Lan Hui: Are you good at pull request and code merging, Pacifique? Lan Hui: You could be one of the committers. Twizere Pacifique 唐平 I did not do it a lot of times , because I mostly create my own projects Lan Hui: A committer has the write permission to the central repo. Lan Hui: We could discuss that later. It is good for you to learn that. Twizere Pacifique 唐平 Yes sir , It will be an honor to do be among the team Lan Hui: (Learn more to earn more.) Twizere Pacifique 唐平 okay Lan Hui: I am not very good at advanced github operations either. Lan Hui: But I do not think that is extremely hard to learn. Lan Hui: Just try-and-error and need some extra patience. Lan Hui: The idea is that each group's small improvements should be combined to form a big improvement, Lan Hui: instead of having many forks, each of which is error-prone. Lan Hui: We want to have a concerted project management effort for LRR. Lan Hui: I will explain the term "fork" later. Actually, our textbook spends a lot of time on talking about that. Lan Hui: https://producingoss.com/en/social-infrastructure.html#forkability Lan Hui: Not required now. But you can read it if you are interested. Lan Hui: For Bernard and Moummou, are you guys here? NGOUNOU家长(438499151) we are here Lan Hui: You could either convince me on your ability to provide the translation as suggested in your original plan, Lan Hui: or make a new plan. NGOUNOU家长(438499151) Okay laoshi Lan Hui: [图片] .. image:: LRR-5-bug-reports.png :height: 100 :alt: LRR 5 bug reports Lan Hui: Above are `five possibilities`_ that you could consider. .. _five possibilities: http://118.25.96.118/bugzilla/buglist.cgi?chfield=%5BBug%20creation%5D&chfieldfrom=7d&order=changeddate%20DESC%2Cbug_status%2Cpriority%2Cassigned_to%2Cbug_id&query_format=advanced Lan Hui: I think the feature request "Enter student numbers in batch" is particularly useful. Lan Hui: [图片] .. image:: TIM20200316175523.png :height: 100 :alt: batch student number enrollment Lan Hui: Now, to let LRR recognize a student, I need to manually insert his student number by operating on the backend MySQL sever. Lan Hui: This is OK if I do not have many student numbers to enter. Lan Hui: But think about that. If you are asked to enter 100 student numbers a day, Lan Hui: or 3-5 student numbers each day in a week. Lan Hui: That is not efficient. Lan Hui: It would be great to have a User Interface for each instructor so that he could copy and paste any number of student numbers in a box and click submit. Done. Lan Hui: [Hui Lan 2020-03-10 11:44:24 CST] It would be nice if I could enter many student number to the database table: students_data. Why? Because what I am doing now is quite time-consuming. I still receive many email messages telling me they are unable to sign up (see the attached picture), therefore, I have to enter their student numbers one by one. First, I need to login MySQL. Second, I need to execute the following SQL statement: insert into students_data(Student_ID, Passport_Number) values ('201925800169', ''); I believe we can do better than that. It would be great to have a input box so that I could copy and paste any number of student numbers, separated by white-spaces, click submit, then these numbers will be written to the table students_data. Of course, if a student number already exists, do not insert that number again. -Hui Lan Hui: This is something Bernard and Moummou could consider. Lan Hui: =================================================== Lan Hui: Last thing for today, Kanboard. Lan Hui: Basically, I want you to plan your project and record your project management activity on Kanboard (or Kanban). Lan Hui: http://118.25.96.118/kanboard Lan Hui: [图片] .. image:: TIM20200316180248.png :height: 100 :alt: Kanboard for undergraduate thesis supervision Lan Hui: Above is one of my Kanboard projects. Lan Hui: You see, I have 4 swim lanes, each representing a stage. Lan Hui: Each colored card represents a task. Lan Hui: I could drag the card to one of these four swim lanes. Lan Hui: [图片] Lan Hui: I could discuss inside each card (task). Lan Hui: That is everything for today. Lan Hui: I will create Kanboard accounts for you. Lan Hui: Bye. Marie(2928285277) bye Sir Guedalia Youma (3014432207) Good bye Sir Twizere Pacifique 唐平 Good Bye Sir How to cite ============= Is High Quality Software Worth the Cost? [MartinFowler2019]_. References ========== .. [MartinFowler2019] Martin Fowler. "Is High Quality Software Worth the Cost?". 29 May 2019.