1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
|
==============================================
Dialog On Software Project Management
==============================================
:Authors: Hui Lan (lanhui at zjnu.edu.cn)
:Version: 0.0.2 of 2020/03/17
.. 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.
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周佳威<zhouwys@qq.com>
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<charif19282@qq.com> 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 唐平<pacitwizere@hotmail.com> Good Afternoon Teacher
Nicole Rutagengwa (1403962700) 201925800169
NGOUNOU家长(438499151) hello Sir
Twizere Pacifique 唐平<pacitwizere@hotmail.com> 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 唐平<pacitwizere@hotmail.com> 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 唐平<pacitwizere@hotmail.com> 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 唐平<pacitwizere@hotmail.com> 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 唐平<pacitwizere@hotmail.com> Yes sir , It will be an honor to do be among the team
Lan Hui: (Learn more to earn more.)
Twizere Pacifique 唐平<pacitwizere@hotmail.com> 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 唐平<pacitwizere@hotmail.com> 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.
|