From e36444dc0b7c1e1e88243c95c07fae8445d8643f Mon Sep 17 00:00:00 2001 From: tonels Date: Fri, 11 Dec 2020 18:27:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=90=8D=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + Revision-activities.md | 34 +- "\347\233\256\345\275\225.md" | 64 +-- ...10\346\230\257\345\274\200\346\272\220.md" | 0 ...13\345\276\205\345\274\200\346\272\220.md" | 166 ++++---- ...20\345\237\272\351\207\221\344\274\232.md" | 0 ...00\346\272\220\347\232\204\357\274\237.md" | 0 ...07\344\273\266\350\256\244\350\257\206.md" | 0 ...00\346\234\257\346\210\220\351\225\277.md" | 0 ...21\345\261\225\350\266\213\345\212\277.md" | 88 ++-- ...70\350\247\201\350\257\257\345\214\272.md" | 0 ...00\346\272\220\351\241\271\347\233\256.md" | 382 +++++++++--------- ...00\346\272\220\351\241\271\347\233\256.md" | 0 ...36\350\265\217\346\226\207\345\214\226.md" | 0 ...45\346\200\216\344\271\210\350\257\273.md" | 0 ...20\350\256\270\345\217\257\350\257\201.md" | 0 ...00\346\272\220\350\264\241\347\214\256.md" | 0 ...02\344\270\216\345\274\200\346\272\220.md" | 38 +- ...02\344\270\216\345\274\200\346\272\220.md" | 0 ...03\350\264\241\347\214\256\350\200\205.md" | 0 ...33\350\241\214\350\264\241\347\214\256.md" | 0 ...15\345\220\214\350\247\222\350\211\262.md" | 0 ...56\350\200\205\345\205\254\347\272\246.md" | 0 ...\254\254\344\270\200\344\270\252 Issue.md" | 0 ...4\344\270\200\344\270\252 Pull Request.md" | 0 .../CONTRIBUTING \347\274\226\345\206\231.md" | 122 +++--- ...75\347\232\204\345\237\272\347\241\200.md" | 0 ...41\347\214\256\345\207\206\345\210\231.md" | 0 ...01\347\232\204\345\272\224\347\224\250.md" | 0 ...44\345\222\214\347\256\241\347\220\206.md" | 0 ...16\344\275\225\345\274\200\345\247\213.md" | 0 ...02\344\275\225\351\200\211\346\213\251.md" | 102 ++--- ...73\347\220\206\346\236\266\346\236\204.md" | 0 ...00\346\272\220\347\244\276\345\214\272.md" | 0 ...40\344\270\252\350\246\201\347\202\271.md" | 92 ++--- ...04\345\225\206\344\270\232\345\214\226.md" | 0 ...32\345\245\275\345\271\263\350\241\241.md" | 2 +- 37 files changed, 548 insertions(+), 545 deletions(-) create mode 100644 .gitignore rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" (100%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" (98%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" (100%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" (100%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" (100%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" (100%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" (98%) rename "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" => "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" (100%) rename "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" => "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" (98%) rename "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" => "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" (100%) rename "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" => "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" (100%) rename "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" => "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" (100%) rename "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" => "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" (99%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" (100%) rename "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" => "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" (100%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" (97%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" (100%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" (100%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" (100%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" (100%) rename "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" => "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" (100%) rename "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" => "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" (98%) rename "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" => "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" (100%) rename "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" => "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" (100%) rename "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" => "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" (98%) rename "\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" => "\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" (100%) rename "\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" => "\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" (97%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4870b98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/*.ipr +/*.iws +/*.iml diff --git a/Revision-activities.md b/Revision-activities.md index 188902e..1ab839b 100644 --- a/Revision-activities.md +++ b/Revision-activities.md @@ -25,24 +25,24 @@ | 章节名 | 修订任务 | 链接 | |---|---|---| | 初识开源-如何判断一个项目是开源的 | 补充开源定义的十个条件 | 已修订 | -| 初识开源-有关开源的常见误区| 需补充更多与“开源误区”相关的内容 | [立即修订](./第一部分——初识开源/有关开源的常见误区.md) | -|初识开源-开源发展趋势| 需补充章节主题相关内容 | [立即修订](./第一部分——初识开源/开源发展趋势.md) | -|初识开源-企业视角看待开源| 补充“企业主动贡献开源”的相关内容,补充对文中所提出的问题的解答 | [立即修订](./第一部分——初识开源/企业视角看待开源.md) | -|尝试参与开源-可以用哪些方式参与开源| 需补充“ Gitee 参与开源”的流程或相关链接方便大家查看。 | [立即修订](./第三部分——尝试参与开源/可以用哪些方式参与开源.md) | -|尝试参与开源-如何找到适合的项目进行贡献| 需补充更多与本章节相关的内容 | [立即修订](./第三部分——尝试参与开源/如何找到适合的项目进行贡献.md) | -|尝试参与开源-提交第一个 Pull Request|(1)补充 Gitee 的相关操作(2)补充权限说明,code review、approve、CI 机制等。 | [立即修订](./第三部分——尝试参与开源/提交第一个%20Pull%20Request.md) | -|尝试参与开源-如何成为一个项目的核心贡献者| 可补充从社区的角度来阐述对核心贡献者的需求,比如与社区贡献者配合的能力和意愿,维护社区秩序和参与社区共建等 | [立即修订](./第三部分——尝试参与开源/如何成为一个项目的核心贡献者.md) | -|尝试参与开源-开源项目的贡献准则和贡献者公约| (1)补充多元化说明,多元化意味着开源参与者可以是任何肤色、信仰、语言的人。(2)在贡献准则中补充包括遵循项目的开源协议的约束(3)补充创建公开讨论的机制,未公开讨论相当于未发生过(4)义务中补充包含提升新的贡献者为项目维护者的机制说明| [立即修订](./第三部分——尝试参与开源/开源项目的贡献准则和贡献者公约.md) | -|尝试参与开源-企业为什么要参与开源| 需补充企业参与开源获得的回报,比如技术影响力提升,项目质量提升,收取咨询和服务费用、推行工程师文化等。 | [立即修订](./第三部分——尝试参与开源/企业为什么要参与开源.md) | +| 初识开源-有关开源的常见误区| 需补充更多与“开源误区”相关的内容 | [立即修订](第1部分——初识开源/有关开源的常见误区.md) | +|初识开源-开源发展趋势| 需补充章节主题相关内容 | [立即修订](第1部分——初识开源/开源发展趋势.md) | +|初识开源-企业视角看待开源| 补充“企业主动贡献开源”的相关内容,补充对文中所提出的问题的解答 | [立即修订](第1部分——初识开源/企业视角看待开源.md) | +|尝试参与开源-可以用哪些方式参与开源| 需补充“ Gitee 参与开源”的流程或相关链接方便大家查看。 | [立即修订](第3部分——尝试参与开源/可以用哪些方式参与开源.md) | +|尝试参与开源-如何找到适合的项目进行贡献| 需补充更多与本章节相关的内容 | [立即修订](第3部分——尝试参与开源/如何找到适合的项目进行贡献.md) | +|尝试参与开源-提交第一个 Pull Request|(1)补充 Gitee 的相关操作(2)补充权限说明,code review、approve、CI 机制等。 | [立即修订](第3部分——尝试参与开源/提交第一个%20Pull%20Request.md) | +|尝试参与开源-如何成为一个项目的核心贡献者| 可补充从社区的角度来阐述对核心贡献者的需求,比如与社区贡献者配合的能力和意愿,维护社区秩序和参与社区共建等 | [立即修订](第3部分——尝试参与开源/如何成为一个项目的核心贡献者.md) | +|尝试参与开源-开源项目的贡献准则和贡献者公约| (1)补充多元化说明,多元化意味着开源参与者可以是任何肤色、信仰、语言的人。(2)在贡献准则中补充包括遵循项目的开源协议的约束(3)补充创建公开讨论的机制,未公开讨论相当于未发生过(4)义务中补充包含提升新的贡献者为项目维护者的机制说明| [立即修订](第3部分——尝试参与开源/开源项目的贡献准则和贡献者公约.md) | +|尝试参与开源-企业为什么要参与开源| 需补充企业参与开源获得的回报,比如技术影响力提升,项目质量提升,收取咨询和服务费用、推行工程师文化等。 | [立即修订](第3部分——尝试参与开源/企业为什么要参与开源.md) | |启动自己的开源项目-有了开源的想法后从何开始| 待补充 | 待补充 | -|启动自己的开源项目-为开源项目建立良好的基础| 需要补充其中「如何打造一个优秀的 Readme」与「为项目撰写文档」部分 | [立即修订](./第四部分——启动自己的开源项目/为开源项目建立良好的基础.md) | -|启动自己的开源项目-开源许可证的应用| (1)「常见开源许可证授权概述」部分应参考:https://choosealicense.com/licenses/ (2)需补充木兰协议的介绍 | [立即修订](./第四部分——启动自己的开源项目/开源许可证的应用.md) | -|启动自己的开源项目-为自己的开源项目建立贡献准则| (1)需加入已有的主流的cla或dco介绍,以方便用户了解和选择(2)请原作者确认引用来源:https://jimmysong.io/blog/open-source-cla/ | [立即修订](./第四部分——启动自己的开源项目/为自己的开源项目建立贡献准则.md) | -|开源治理-打造开源社区|(1)“建设社区”部分需要整合内容,精简“组建小组”、“建立沟通渠道内容”、补充“吸引参与者”的内容(2)“壮大社区”部分需聚焦主要内容,合并小节 | [立即修订](./第五部分——开源治理/打造开源社区.md) | -|开源治理-开源项目的常见治理架构| 补充 BDFL 模式、精英模式、Node.js 的自由贡献规则等三种模版(或规则) | [立即修订](./第五部分——开源治理/开源项目的常见治理架构.md) | -|开源治理-确保开源代码质量的几个要点| 本篇需要重点补充软件质量管理的内容,从技术和工具角度来给与建议 | [立即修订](./第五部分——开源治理/确保开源代码质量的几个要点.md) | -|其他问题-怎样在本职工作和开源项目间做好平衡| (1)从开源与个人技术成长、为什么要参与开源贡献的文章中总结出几点(2)增加“家人的支持”、“开源的选题”(开源选题是否要和工作内容有关系?如何把握?)的相关内容 | [立即修订](./第六部分——其他问题/怎样在本职工作和开源项目间做好平衡.md) | -|其他问题-关于开源项目的商业化| (1)对有关 “Linux系统衍生的 Red Hat 系统”的说法需补充查证(2)关于“商业化开源项目参考”需补充商业化前的背景,商业化后的发展情况。 | [立即修订](./第六部分——其他问题/关于开源项目的商业化.md) | +|启动自己的开源项目-为开源项目建立良好的基础| 需要补充其中「如何打造一个优秀的 Readme」与「为项目撰写文档」部分 | [立即修订](第4部分——启动自己的开源项目/为开源项目建立良好的基础.md) | +|启动自己的开源项目-开源许可证的应用| (1)「常见开源许可证授权概述」部分应参考:https://choosealicense.com/licenses/ (2)需补充木兰协议的介绍 | [立即修订](第4部分——启动自己的开源项目/开源许可证的应用.md) | +|启动自己的开源项目-为自己的开源项目建立贡献准则| (1)需加入已有的主流的cla或dco介绍,以方便用户了解和选择(2)请原作者确认引用来源:https://jimmysong.io/blog/open-source-cla/ | [立即修订](第4部分——启动自己的开源项目/为自己的开源项目建立贡献准则.md) | +|开源治理-打造开源社区|(1)“建设社区”部分需要整合内容,精简“组建小组”、“建立沟通渠道内容”、补充“吸引参与者”的内容(2)“壮大社区”部分需聚焦主要内容,合并小节 | [立即修订](第5部分——开源治理/打造开源社区.md) | +|开源治理-开源项目的常见治理架构| 补充 BDFL 模式、精英模式、Node.js 的自由贡献规则等三种模版(或规则) | [立即修订](第5部分——开源治理/开源项目的常见治理架构.md) | +|开源治理-确保开源代码质量的几个要点| 本篇需要重点补充软件质量管理的内容,从技术和工具角度来给与建议 | [立即修订](第5部分——开源治理/确保开源代码质量的几个要点.md) | +|其他问题-怎样在本职工作和开源项目间做好平衡| (1)从开源与个人技术成长、为什么要参与开源贡献的文章中总结出几点(2)增加“家人的支持”、“开源的选题”(开源选题是否要和工作内容有关系?如何把握?)的相关内容 | [立即修订](第6部分——其他问题/怎样在本职工作和开源项目间做好平衡.md) | +|其他问题-关于开源项目的商业化| (1)对有关 “Linux系统衍生的 Red Hat 系统”的说法需补充查证(2)关于“商业化开源项目参考”需补充商业化前的背景,商业化后的发展情况。 | [立即修订](第6部分——其他问题/关于开源项目的商业化.md) | #### 💡 快速引导 有任何编写相关问题可联系 Gitee 小助手咨询,完成修订后可联系小助手加入开源指北维护群,发放奖品,领取证书。 diff --git "a/\347\233\256\345\275\225.md" "b/\347\233\256\345\275\225.md" index eff8fb5..5b7e400 100644 --- "a/\347\233\256\345\275\225.md" +++ "b/\347\233\256\345\275\225.md" @@ -1,47 +1,47 @@ ### 初识开源 -* [什么是开源?](./第一部分——初识开源/什么是开源.md) -* [开源与个人技术成长](./第一部分——初识开源/开源与个人技术成长.md) -* [如何判断一个项目是否是开源的?](./第一部分——初识开源/如何判断一个项目是否是开源的?.md) -* [关于开源基金会](./第一部分——初识开源/关于开源基金会.md) -* [有关开源的常见误区](./第一部分——初识开源/有关开源的常见误区.md) -* [常见开源文件](./第一部分——初识开源/常见文件认识.md) -* [企业视角看待开源](./第一部分——初识开源/企业视角看待开源.md) +* [什么是开源?](第1部分——初识开源/什么是开源.md) +* [开源与个人技术成长](第1部分——初识开源/开源与个人技术成长.md) +* [如何判断一个项目是否是开源的?](第1部分——初识开源/如何判断一个项目是否是开源的?.md) +* [关于开源基金会](第1部分——初识开源/关于开源基金会.md) +* [有关开源的常见误区](第1部分——初识开源/有关开源的常见误区.md) +* [常见开源文件](第1部分——初识开源/常见文件认识.md) +* [企业视角看待开源](第1部分——初识开源/企业视角看待开源.md) ### 学习和使用开源项目 -* [如何找到适合自己学习和使用的开源项目](./第二部分——学习和使用开源项目/如何找到适合自己学习和使用的开源项目.md) -* [开源项目的源代码该怎么读](./第二部分——学习和使用开源项目//开源项目的源代码该怎么读.md) -* [认识开源许可证](./第二部分——学习和使用开源项目/认识开源许可证.md) -* [开源中的赞赏文化](./第二部分——学习和使用开源项目/开源中的赞赏文化.md) -* [如何找到最强开源项目](./第二部分——学习和使用开源项目/%20如何找到最强开源项目.md) +* [如何找到适合自己学习和使用的开源项目](第2部分——学习和使用开源项目/如何找到适合自己学习和使用的开源项目.md) +* [开源项目的源代码该怎么读](第2部分——学习和使用开源项目//开源项目的源代码该怎么读.md) +* [认识开源许可证](第2部分——学习和使用开源项目/认识开源许可证.md) +* [开源中的赞赏文化](第2部分——学习和使用开源项目/开源中的赞赏文化.md) +* [如何找到最强开源项目](第2部分——学习和使用开源项目/%20如何找到最强开源项目.md) ### 尝试参与开源 -* [开源项目中的不同角色](./第三部分——尝试参与开源/开源项目中的不同角色.md) -* [个人为什么要参与开源贡献](./第三部分——尝试参与开源/个人为什么要参与开源贡献.md) -* [企业为什么要参与开源](./第三部分——尝试参与开源/企业为什么要参与开源.md) -* [可以用哪些方式参与开源](./第三部分——尝试参与开源/可以用哪些方式参与开源.md) -* [如何找到适合的项目进行贡献](./第三部分——尝试参与开源/如何找到适合的项目进行贡献.md) -* [提交第一个 Issue](./第三部分——尝试参与开源/提交第一个%20Issue.md) -* [提交第一个 Pull Request](./第三部分——尝试参与开源/提交第一个%20Pull%20Request.md) -* [如何成为一个项目的核心贡献者](./第三部分——尝试参与开源/如何成为一个项目的核心贡献者.md) -* [开源项目的贡献准则和贡献者公约](./第三部分——尝试参与开源/开源项目的贡献准则和贡献者公约.md) +* [开源项目中的不同角色](第3部分——尝试参与开源/开源项目中的不同角色.md) +* [个人为什么要参与开源贡献](第3部分——尝试参与开源/个人为什么要参与开源贡献.md) +* [企业为什么要参与开源](第3部分——尝试参与开源/企业为什么要参与开源.md) +* [可以用哪些方式参与开源](第3部分——尝试参与开源/可以用哪些方式参与开源.md) +* [如何找到适合的项目进行贡献](第3部分——尝试参与开源/如何找到适合的项目进行贡献.md) +* [提交第一个 Issue](第3部分——尝试参与开源/提交第一个%20Issue.md) +* [提交第一个 Pull Request](第3部分——尝试参与开源/提交第一个%20Pull%20Request.md) +* [如何成为一个项目的核心贡献者](第3部分——尝试参与开源/如何成为一个项目的核心贡献者.md) +* [开源项目的贡献准则和贡献者公约](第3部分——尝试参与开源/开源项目的贡献准则和贡献者公约.md) ### 启动自己的开源项目 -* [有了开源的想法后从何开始](./第四部分——启动自己的开源项目/有了开源的想法后从何开始.md) -* [为开源项目建立良好的基础](./第四部分——启动自己的开源项目/为开源项目建立良好的基础.md) -* [开源许可证的应用](./第四部分——启动自己的开源项目/开源许可证的应用.md) -* [为自己的开源项目建立贡献准则](./第四部分——启动自己的开源项目/为自己的开源项目建立贡献准则.md) -* [开源项目的维护和管理](./第四部分——启动自己的开源项目/开源项目的维护和管理.md) +* [有了开源的想法后从何开始](第4部分——启动自己的开源项目/有了开源的想法后从何开始.md) +* [为开源项目建立良好的基础](第4部分——启动自己的开源项目/为开源项目建立良好的基础.md) +* [开源许可证的应用](第4部分——启动自己的开源项目/开源许可证的应用.md) +* [为自己的开源项目建立贡献准则](第4部分——启动自己的开源项目/为自己的开源项目建立贡献准则.md) +* [开源项目的维护和管理](第4部分——启动自己的开源项目/开源项目的维护和管理.md) * [CONTRIBUTING 编写](./第四部分——启动自己的开源项目/CONTRIBUTING 编写.md) ### 开源治理 -* [个人维护和建立社区,两者如何选择?](./第五部分——开源治理/个人维护和建立社区,两者如何选择.md) -* [打造开源社区](./第五部分——开源治理/打造开源社区.md) -* [开源项目的常见治理架构](./第五部分——开源治理/开源项目的常见治理架构.md) -* [确保开源代码质量的几个要点](./第五部分——开源治理/确保开源代码质量的几个要点.md) +* [个人维护和建立社区,两者如何选择?](第5部分——开源治理/个人维护和建立社区,两者如何选择.md) +* [打造开源社区](第5部分——开源治理/打造开源社区.md) +* [开源项目的常见治理架构](第5部分——开源治理/开源项目的常见治理架构.md) +* [确保开源代码质量的几个要点](第5部分——开源治理/确保开源代码质量的几个要点.md) ### 其他问题 -* [怎样在本职工作和开源项目间做好平衡](./第六部分——其他问题/怎样在本职工作和开源项目间做好平衡.md) -* [关于开源项目的商业化](./第六部分——其他问题/关于开源项目的商业化.md) +* [怎样在本职工作和开源项目间做好平衡](第6部分——其他问题/怎样在本职工作和开源项目间做好平衡.md) +* [关于开源项目的商业化](第6部分——其他问题/关于开源项目的商业化.md) diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\273\200\344\271\210\346\230\257\345\274\200\346\272\220.md" diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" similarity index 98% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" index eb06b54..db873af 100644 --- "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" +++ "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\344\274\201\344\270\232\350\247\206\350\247\222\347\234\213\345\276\205\345\274\200\346\272\220.md" @@ -1,83 +1,83 @@ -## 概述 - -顾名思义,就是站在企业的角度去看待开源本身、开源项目、开源思维等。 - -我觉得开源本身是很好的,非常利于行业的进步和发展的,纵观历史,只有拥抱开源,解放思想,乐于分享,才能够有更加长足的进步和发展。 - -举个很简单且大家都知道的例子: - -假设:我手里只有一个苹果,你手里只有一个梨,我舍不得给你吃,你也舍不得给我吃,那么我就不知道梨的味道,你也不知道苹果的味道。 - -反之:则我分一半给你,你分一半给我,咱俩就都可以尝到苹果和梨的味道。 - -开源即是如此。 - -看待开源不能只从一个方面看,只看到它的好,看不到风险,那么给你今后可能会带来不小的麻烦哟;如果只看到它的不好,看不到他的好,那么自己只会成为井底之蛙,远见越来越小。 - -下面咱从 2 个大的方面来阐述一下它。 - -## 视角 - -1. 开源的好处及优势 -2. 开源的风险及劣势 - -### 开源的好处及优势 - -开源软件的好处真的是数不胜数,首当其冲的就是,比如你要做一个项目,现在没有现成的框架。如果自己要去开发一套框架,那势必要有足够的时间,精力去写它,如果写的成熟点少则数天,多则数月,那么项目急着要做,总不能等你把框架开发完了再去写吧。 - -那么开源的好处来了,开源框架开箱即用,还有非常完善的文档,交流群,各种采坑经验分享,可以从百度中搜索到一大把。 - -既然是开源,那么肯定有很多开源框架供你选择,好处又来了,你可以选择一个与你技术能力匹配的框架,或者你可以去挑选一个界面美观优化的框架,你也可以选择一个大家评价比较高的开源框架。 - -往往搭建开源框架不需要花费多长时间,快的可能几分钟就搭起来了,慢的也就顶多1小时也搭起来了,快捷方便自然不用说。 - -有些开源框架还有技术交流群,交流论坛等等,让你能够在遇到问题的时候,跟大家讨论,共同来解决你遇到的问题。 - -总结一下: - -- 开箱即用 -- 选择性多 -- 方便快捷 -- 技术解决方案交流 - -### 开源的风险及劣势 - -开源软件不能被简单地认为只涉及产品研发过程中的选型和开发。从企业视角看,开源软件还涉及产品外销时的知识产权法务风险、企业的研发效率、产品架构、软件生态系统、开放标准构建手段、人才竞备、商业利益角逐等。 -企业可以用多个视角去理解开源的意义和价值 - -> 企业用多个视角看待开源 - -1. 把开源看作是一个外购件或技术获取方式,看到的问题是:如何开源选型获取新技术?如何在软件生命周期过程有效迭代管理? -2. 把开源看作外部协作的一种方式,看到的问题是:获取外部人才的一种方式。与社区的技术人员、以及其他公司协作。 -3. 把开源当做发展手段:看到的问题是如何在新技术领域产生影响力;在新的技术和业务领域,如何通过开源,站在行业发展前沿等问题。 - -高德纳公司(Gartner)及Linux基金会的调查报告显示,企业平均有29%的软件代码来自开源,在互联网背景下,开源软件比例高达80%。产品中大规模嵌入开源代码,会产生一系列研发管理问题: - -1. 版权许可证(license)选择不慎会潜伏知识产权法务风险,成为企业拓展海外市场的绊脚石。 -2. 不同团队选择多种同类开源软件会带来巨大的管理成本。 -3. 产品研发初期,如何在众多类似的开源组件中选择合适的代码?方向选择错误会导致陷入产品生态与业界不兼容的困境,面临放弃重写还是继续往下走的两难抉择。 -4. 产品开发时难免会对代码进行修改,修改后的商用代码是闭源还是开源?随着时间的推移,社区版本更新迭代,继续闭源,意味着会重复投入资源,进行不增值的代码合入;而开源则意味丧失产品竞争力。 -5. 主动开源并不意味着社区就能接纳,需要长期有大量的回馈代码才能建立信誉及影响力,公司内的社区管理人员才能得到锻炼和培养。但是,社区管理人员个人知名度的提升会增加被猎头公司挖走的风险。 -6. 软件在开发过程中或完成之后,如果出现同类开源软件,该如何处理? - - -## 企业参与开源的动机 - -总的来说,企业参与开源项目的动机主要有以下几个: - -1. 参与制定行业标准(比如云计算厂商参与 CNCF 项目,大数据厂商参与 Hadoop 项目) -2. 增强公司的技术品牌和技术输出 -3. 为公司招聘人才提供标杆和增加吸引力 -4. 寻找商业化的机会(大公司的开源团队都有很多的商业化 KPI 压力) - -## 企业为什么会主动贡献开源 - - 1.吸引人才: 当贵司依赖开源软件,那么寻找人才最好的地方莫过于熟悉项目内部本身,而且还是项目社区成员。通过在社区的公开的工作,贵司可以吸引到一些既是做自己喜欢的工作,还能获得一定报酬的人。尤其重要的一点,贵司现有的项目参与的员工,每天都会和他们在一起打交道,自然是非常熟悉的,找到他们也很容易。 - - 2.降低维护成本: 如果一个企业开始在本地的分支做缺陷修复、增加新的功能,然而却没有将这些代码提交到上游的开源项目中,那么很快维护本地的分支,将成为该公司的一个成本噩梦。将上游作为优先的提交缺陷修复和增加新功能是最为明智的做法,因为这样的维护成本最低。 - - 3.项目影响力: 在一个开源的项目中,新的特性或功能来自社区的贡献,那么这些贡献就会影响到项目的走向,如果你认为为项目所贡献的新功能对于贵司非常的重要,那么你应该去安排积极的贡献者对这些功能进行开发和实现。通过贵司的贡献,自然而然就可以影响到项目的走向。 - -``` -总体上讲,尚属比较初级的阶段,还需要补充和完善很多内容,比如,提出了一些问题,但没有给出适当的解答;对于企业主动贡献开源这块,说的比较少。 -``` +## 概述 + +顾名思义,就是站在企业的角度去看待开源本身、开源项目、开源思维等。 + +我觉得开源本身是很好的,非常利于行业的进步和发展的,纵观历史,只有拥抱开源,解放思想,乐于分享,才能够有更加长足的进步和发展。 + +举个很简单且大家都知道的例子: + +假设:我手里只有一个苹果,你手里只有一个梨,我舍不得给你吃,你也舍不得给我吃,那么我就不知道梨的味道,你也不知道苹果的味道。 + +反之:则我分一半给你,你分一半给我,咱俩就都可以尝到苹果和梨的味道。 + +开源即是如此。 + +看待开源不能只从一个方面看,只看到它的好,看不到风险,那么给你今后可能会带来不小的麻烦哟;如果只看到它的不好,看不到他的好,那么自己只会成为井底之蛙,远见越来越小。 + +下面咱从 2 个大的方面来阐述一下它。 + +## 视角 + +1. 开源的好处及优势 +2. 开源的风险及劣势 + +### 开源的好处及优势 + +开源软件的好处真的是数不胜数,首当其冲的就是,比如你要做一个项目,现在没有现成的框架。如果自己要去开发一套框架,那势必要有足够的时间,精力去写它,如果写的成熟点少则数天,多则数月,那么项目急着要做,总不能等你把框架开发完了再去写吧。 + +那么开源的好处来了,开源框架开箱即用,还有非常完善的文档,交流群,各种采坑经验分享,可以从百度中搜索到一大把。 + +既然是开源,那么肯定有很多开源框架供你选择,好处又来了,你可以选择一个与你技术能力匹配的框架,或者你可以去挑选一个界面美观优化的框架,你也可以选择一个大家评价比较高的开源框架。 + +往往搭建开源框架不需要花费多长时间,快的可能几分钟就搭起来了,慢的也就顶多1小时也搭起来了,快捷方便自然不用说。 + +有些开源框架还有技术交流群,交流论坛等等,让你能够在遇到问题的时候,跟大家讨论,共同来解决你遇到的问题。 + +总结一下: + +- 开箱即用 +- 选择性多 +- 方便快捷 +- 技术解决方案交流 + +### 开源的风险及劣势 + +开源软件不能被简单地认为只涉及产品研发过程中的选型和开发。从企业视角看,开源软件还涉及产品外销时的知识产权法务风险、企业的研发效率、产品架构、软件生态系统、开放标准构建手段、人才竞备、商业利益角逐等。 +企业可以用多个视角去理解开源的意义和价值 + +> 企业用多个视角看待开源 + +1. 把开源看作是一个外购件或技术获取方式,看到的问题是:如何开源选型获取新技术?如何在软件生命周期过程有效迭代管理? +2. 把开源看作外部协作的一种方式,看到的问题是:获取外部人才的一种方式。与社区的技术人员、以及其他公司协作。 +3. 把开源当做发展手段:看到的问题是如何在新技术领域产生影响力;在新的技术和业务领域,如何通过开源,站在行业发展前沿等问题。 + +高德纳公司(Gartner)及Linux基金会的调查报告显示,企业平均有29%的软件代码来自开源,在互联网背景下,开源软件比例高达80%。产品中大规模嵌入开源代码,会产生一系列研发管理问题: + +1. 版权许可证(license)选择不慎会潜伏知识产权法务风险,成为企业拓展海外市场的绊脚石。 +2. 不同团队选择多种同类开源软件会带来巨大的管理成本。 +3. 产品研发初期,如何在众多类似的开源组件中选择合适的代码?方向选择错误会导致陷入产品生态与业界不兼容的困境,面临放弃重写还是继续往下走的两难抉择。 +4. 产品开发时难免会对代码进行修改,修改后的商用代码是闭源还是开源?随着时间的推移,社区版本更新迭代,继续闭源,意味着会重复投入资源,进行不增值的代码合入;而开源则意味丧失产品竞争力。 +5. 主动开源并不意味着社区就能接纳,需要长期有大量的回馈代码才能建立信誉及影响力,公司内的社区管理人员才能得到锻炼和培养。但是,社区管理人员个人知名度的提升会增加被猎头公司挖走的风险。 +6. 软件在开发过程中或完成之后,如果出现同类开源软件,该如何处理? + + +## 企业参与开源的动机 + +总的来说,企业参与开源项目的动机主要有以下几个: + +1. 参与制定行业标准(比如云计算厂商参与 CNCF 项目,大数据厂商参与 Hadoop 项目) +2. 增强公司的技术品牌和技术输出 +3. 为公司招聘人才提供标杆和增加吸引力 +4. 寻找商业化的机会(大公司的开源团队都有很多的商业化 KPI 压力) + +## 企业为什么会主动贡献开源 + + 1.吸引人才: 当贵司依赖开源软件,那么寻找人才最好的地方莫过于熟悉项目内部本身,而且还是项目社区成员。通过在社区的公开的工作,贵司可以吸引到一些既是做自己喜欢的工作,还能获得一定报酬的人。尤其重要的一点,贵司现有的项目参与的员工,每天都会和他们在一起打交道,自然是非常熟悉的,找到他们也很容易。 + + 2.降低维护成本: 如果一个企业开始在本地的分支做缺陷修复、增加新的功能,然而却没有将这些代码提交到上游的开源项目中,那么很快维护本地的分支,将成为该公司的一个成本噩梦。将上游作为优先的提交缺陷修复和增加新功能是最为明智的做法,因为这样的维护成本最低。 + + 3.项目影响力: 在一个开源的项目中,新的特性或功能来自社区的贡献,那么这些贡献就会影响到项目的走向,如果你认为为项目所贡献的新功能对于贵司非常的重要,那么你应该去安排积极的贡献者对这些功能进行开发和实现。通过贵司的贡献,自然而然就可以影响到项目的走向。 + +``` +总体上讲,尚属比较初级的阶段,还需要补充和完善很多内容,比如,提出了一些问题,但没有给出适当的解答;对于企业主动贡献开源这块,说的比较少。 +``` diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\205\263\344\272\216\345\274\200\346\272\220\345\237\272\351\207\221\344\274\232.md" diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\246\202\344\275\225\345\210\244\346\226\255\344\270\200\344\270\252\351\241\271\347\233\256\346\230\257\345\220\246\346\230\257\345\274\200\346\272\220\347\232\204\357\274\237.md" diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\270\270\350\247\201\346\226\207\344\273\266\350\256\244\350\257\206.md" diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\344\270\216\344\270\252\344\272\272\346\212\200\346\234\257\346\210\220\351\225\277.md" diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" similarity index 98% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" index 8a01bdf..8589264 100644 --- "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" +++ "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\345\274\200\346\272\220\345\217\221\345\261\225\350\266\213\345\212\277.md" @@ -1,44 +1,44 @@ -## 开源的行业趋势 - - -``` -整篇文章的架构需要调整,目前架构略显凌乱,感觉还没有写完? -``` - - -### 开源与商业软件的优劣对比 - - -``` -这个优劣对比不错,但没有文字交代,出现的比较突兀,位置似乎也不合适。 -``` - - -![输入图片说明](https://images.gitee.com/uploads/images/2020/1116/145816_170e8c7e_3026149.png "sss.png") - - -从容器技术开始,开源不再是商用软件的简单模仿,而是开始引领行业发展方向。开源看似在推动软件世界的发展,其实不然。从商业角度看,开源只是商用软件的模仿,例如从最早的Linux(模仿各类商用Unix)、Eclipse(模仿Ⅴisual Studio)、Apache Hadoop(模仿谷歌三篇经典论文成果),到这几年耳熟能详的:Xen/KVM(模仿VMWare)、OpenStack(模仿Amazon AWS)等。从容器技术开始,没有任何一家公司有最前沿的技术,也没有公司率先在容器技术上赚到钱,所有公司都在一个起跑线上。在容器技术兴起的2014年,才可以说开源技术牵引着整个行业发展方向。 -开源软件代表了一种新的技术产生方式。顶尖的高校研究成果很多都是以开源形式发布的,顶尖公司(如谷歌)的技术架构中,每套系统基本都有其对应的开源项目。 -1. 开源社区的运作越来越职业化。自由参与和自组织时代已经过去,近年来,开源逐步过渡到公司化运作模式。Linux基金会下的很多项目,比如核心基础架构联盟(Core Infrastructure Initiative,CII),都是各公司出钱,把钱放在一起经营,更像是一个合资公司;OpenStack等基金会有明确的章程、组织结构、晋升机制、会议制度等。开源社区的运作越来越职业化。 - -2. 开源成为另一种标准制定方式。电信领域存在设备对接,因而有着非常严格的规范和行业标准。同样,IT领域行业差异性大,各公司通过代码发言,在社区用代码的方式完成与其他厂商的对接和配合。从云计算OpenStack的接口定义等社区实践来看,开源已成为另一种标准制定方式,标准组织开源化已成趋势。 - -3. 开源重新定义了集成和被集成的关系。过去,IBM、惠普等大厂商都有各自的生态合作伙伴规程,策略都围绕本公司集成的。从云计算开始,这种方式发生了微妙的变化,开源扮演着集成的身份,各厂商(比如存储、网络、防火墙等厂商)都到开源平台上进行集成和对接。 - -### 开源+时代 -开源+时代是指,依托开源项目基础,组建自己的服务、业务、团队等(在开源许可认证内),减少了很多维护成本。 - - -``` -下面这段写的比较拗口,阅读难度大,建议重新组织语言。 -``` - - -- 开源+ IT服务提供商:在每种情况下,都应对软件需求进行单独评估–使用开源软件有很多充分的理由。使用闭源软件时可能产生的优势,例如通常仅适用于专有软件的进一步开发或支持,可以通过与有能力的IT服务提供商合作,为开源带来巨大优势。拥有合适的软件和出色的IT资源的公司处于创造最佳数字未来的理想位置。 IT服务提供商或内部IT团队可以接管各个定制,开发和支持,而不仅限于一种软件。在选择IT合作伙伴时,建议不仅要注意技术能力,还要考虑项目管理和实施的方法,变更管理质量以及IT服务提供商的文化和思维方式。 - - -``` -这块感觉还没有写完? -``` - - +## 开源的行业趋势 + + +``` +整篇文章的架构需要调整,目前架构略显凌乱,感觉还没有写完? +``` + + +### 开源与商业软件的优劣对比 + + +``` +这个优劣对比不错,但没有文字交代,出现的比较突兀,位置似乎也不合适。 +``` + + +![输入图片说明](https://images.gitee.com/uploads/images/2020/1116/145816_170e8c7e_3026149.png "sss.png") + + +从容器技术开始,开源不再是商用软件的简单模仿,而是开始引领行业发展方向。开源看似在推动软件世界的发展,其实不然。从商业角度看,开源只是商用软件的模仿,例如从最早的Linux(模仿各类商用Unix)、Eclipse(模仿Ⅴisual Studio)、Apache Hadoop(模仿谷歌三篇经典论文成果),到这几年耳熟能详的:Xen/KVM(模仿VMWare)、OpenStack(模仿Amazon AWS)等。从容器技术开始,没有任何一家公司有最前沿的技术,也没有公司率先在容器技术上赚到钱,所有公司都在一个起跑线上。在容器技术兴起的2014年,才可以说开源技术牵引着整个行业发展方向。 +开源软件代表了一种新的技术产生方式。顶尖的高校研究成果很多都是以开源形式发布的,顶尖公司(如谷歌)的技术架构中,每套系统基本都有其对应的开源项目。 +1. 开源社区的运作越来越职业化。自由参与和自组织时代已经过去,近年来,开源逐步过渡到公司化运作模式。Linux基金会下的很多项目,比如核心基础架构联盟(Core Infrastructure Initiative,CII),都是各公司出钱,把钱放在一起经营,更像是一个合资公司;OpenStack等基金会有明确的章程、组织结构、晋升机制、会议制度等。开源社区的运作越来越职业化。 + +2. 开源成为另一种标准制定方式。电信领域存在设备对接,因而有着非常严格的规范和行业标准。同样,IT领域行业差异性大,各公司通过代码发言,在社区用代码的方式完成与其他厂商的对接和配合。从云计算OpenStack的接口定义等社区实践来看,开源已成为另一种标准制定方式,标准组织开源化已成趋势。 + +3. 开源重新定义了集成和被集成的关系。过去,IBM、惠普等大厂商都有各自的生态合作伙伴规程,策略都围绕本公司集成的。从云计算开始,这种方式发生了微妙的变化,开源扮演着集成的身份,各厂商(比如存储、网络、防火墙等厂商)都到开源平台上进行集成和对接。 + +### 开源+时代 +开源+时代是指,依托开源项目基础,组建自己的服务、业务、团队等(在开源许可认证内),减少了很多维护成本。 + + +``` +下面这段写的比较拗口,阅读难度大,建议重新组织语言。 +``` + + +- 开源+ IT服务提供商:在每种情况下,都应对软件需求进行单独评估–使用开源软件有很多充分的理由。使用闭源软件时可能产生的优势,例如通常仅适用于专有软件的进一步开发或支持,可以通过与有能力的IT服务提供商合作,为开源带来巨大优势。拥有合适的软件和出色的IT资源的公司处于创造最佳数字未来的理想位置。 IT服务提供商或内部IT团队可以接管各个定制,开发和支持,而不仅限于一种软件。在选择IT合作伙伴时,建议不仅要注意技术能力,还要考虑项目管理和实施的方法,变更管理质量以及IT服务提供商的文化和思维方式。 + + +``` +这块感觉还没有写完? +``` + + diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" "b/\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" similarity index 100% rename from "\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" rename to "\347\254\2541\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" similarity index 98% rename from "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" rename to "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" index f2de81a..9920947 100644 --- "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" +++ "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/ \345\246\202\344\275\225\346\211\276\345\210\260\346\234\200\345\274\272\345\274\200\346\272\220\351\241\271\347\233\256.md" @@ -1,191 +1,191 @@ -这里指的最强,不是看 Star 数/不看口碑,纯粹从学术视角出发,找到最新科研成果的开源项目。 - -## 如何找到最新顶级学术会议的开源代码 -1. 首先找到顶级学术会议在哪里。 -操作办法 1:在 ACM(国际计算机协会)中找到所有兴趣组,网址: 如计算机算法与原理兴趣组叫,AMC SIGACT,进入具体领域后,找到该领域的顶级学术会议。 -操作办法 2:在 CCF(中国计算机协会)中同理寻找相关顶级会议。 - -2. 其实,寻找各大顶级会议中,论文是否带开源软件。 -条件:需要能上谷歌学术,百度学术好像很多找不到。 - -## 如何解构计算机科学,从计算机原理出发找到最新科研发展方向及寻找到可用开源可用技术 -1. 首先寻找到综述论文 -2. 通过综述论文,找到该领域的论文里最新可用开源技术 - -## 往前再走一步,如何跟进数学理论突破获得最牛逼开源算法 -1. 上述过程之外,到 siam.org (工业数学)里寻找最新数学成果 - -## 截至目前(2020-11-15),全球十大开源软件参考 - -### 1. [LibreOffice](https://github.com/LibreOffice) -Microsoft Office 的真正开源替代品 - -操作系统:Windows,macOS,Linux - -- 全套办公 -- 应用支持微软文件 -- 很多模板 -- 不是基于云的 - -通过支持文档,电子表格,数据库,演示文稿,图表和数学公式,LibreOffice 本质上是世界上最受欢迎的办公生产力套件 Microsoft Office 365 的免费版本。 - -实际上,有人会说 LibreOffice 是两者中功能更全的,这要归功于其专门的开发人员社区,该社区一直在添加新的工具和技巧。例如,在最新更新中,LibreOffice 添加了 QR 码生成器工具,因此您可以快速创建适合移动设备的链接。 - -另一种著名的开源办公工具是 Open Office,它提供了许多与 LibreOffice 类似的功能。LibreOffice 之所以成为当今头把交椅,是因为它在保留 Microsoft 文件格式方面要好得多。换句话说,如果您需要修改最初用 Microsoft Word 编写的文档,则格式不会搞砸。 - -这款出色的免费办公软件的唯一缺点是,在线协作编辑文档有些棘手。最近,添加了一个在线编辑选项,但仍需要一些技术知识来实施。 - -### 2. [VLC Media Player](https://github.com/videolan/vlc) -开源媒体播放器几乎可以播放任何内容 - -操作系统:Windows,macOS,Linux,Android,iOS - -- 在旧硬件上运行良好 -- 播放几乎所有媒体文件 -- 优化播放 -- 复杂的菜单系统 - -VLC 媒体播放器是一个轻量级应用程序,由称为 VideoLAN 项目的开源开发小组创建。这款视频和媒体播放器在人气方面已经领先业界多年,不难看出为什么。您可以使用 VLC 媒体播放器以几乎任何格式打开音频和视频文件,而不必寻找额外的编解码器。 - -VLC 还适用于流媒体,例如播客和在线广播电台。但是也许最大的 VLC 媒体播放器功能是播放控制。您几乎可以更改有关媒体显示方式的所有内容,从硬件优化到添加第三方来源的字幕文件。 - -像这里提到的其他一些令人惊讶的开源产品一样,VLC 也在不断升级,以探索新的优点和功能。免费视频播放器的最新更新包括流式传输到其他设备(例如 Chromecasts)的功能以及对 VR 耳机的 360 度视频支持。 - -### 3. [GIMP](https://github.com/GNOME/gimp) -强大的开源照片和图像编辑工具 - -操作系统:Windows,macOS,Linux - -- 完全可定制的界面 -- 图层滤镜和遮罩 -- 进阶编辑工具 -- 可能会使初次使用的用户感到困惑 - -自从 1996 年首次发布以来,Linux 用户就深爱它,GIMP 是那里最著名和维护最完善的开源软件工具之一。该软件与免费提供的 Adobe -PhotoShop 平台几乎具有图像编辑功能和灵活性。 - -GIMP 具有对图层,滤镜和自动照片增强的内置支持。它还使创建新的图形设计元素变得容易,并且您可以通过下载由更广泛的 GIMP 开源社区创建的插件,将事情真正提升到一个新的水平。 - -就像 PhotoShop 一样,GIMP 具有相当陡峭的学习曲线,但是任何花时间的人都一定会喜欢它的可自定义界面和 GPU 硬件加速。但是,如果您正在寻找一个简单的免费照片编辑器,请改用 Paint.NET。它不那么强大,但是更容易掌握。 - -### 4. [Shotcut](https://github.com/mltframework/shotcut) -一个光滑的开源程序,用于高级视频编辑 - -作业系统:Windows - -- HDMI 预览和捕获 -- 支持数百种编解码器 -- 进阶效果 -- 陡峭的学习曲线 - -Shotcut 是开源的免费视频编辑软件。它是这些开源程序之一,确实表明了一个专业的开发社区可以在一定时间内改善平台的能力。在较早的版本中,Shotcut 界面有点裸露,但后来的发行版中增加了额外的可停靠面板,直观的时间轴以及其他功能,使 Shotcut 与 Adobe Premiere Pro 等高级视频编辑器处于同一联盟。 - -该视频工具支持非破坏性的音频和视频编辑,这意味着您可以编译效果而不会造成任何质量损失。您还可以使用此平台进行颜色键控和分级操作,以及更基本的剪辑拼接和修剪。 - -也许 Shotcut 的最酷的地方是它能够或多或少地处理任何格式的视频,音频或照片媒体。这很大程度上要归功于 FFmpeg,这是 Shotcut 程序的幕后开源视频框架。 - -### 5. [Brave](https://github.com/brave/browser-laptop) -享受私人开源浏览体验 - -操作系统:Windows,macOS,Linux,Android,iOS - -- 自动禁用跟踪器 -- 支持 Chrome 扩展程序 -- 内置广告拦截器 -- 展示自己的广告 - -Brave 建立在 Google 的开源 Chromium 项目之上,是一种网络浏览器,旨在通过自动禁用网站跟踪器和阻止讨厌的广告来使您的浏览活动保持私密性。为了更加安全地浏览,它具有内置的 Tor 功能。 - -使用 Brave 的最大优势在于,您可以访问许多 Google Chrome 商店的数以千计的扩展程序,但与普通的 Chrome 浏览器相比,享受更快的浏览体验。这是因为与 Google 的常规 Chrome 程序包相比,Brave 占用的资源更少,从而在加载页面时提高了性能。 - -关于 Brave 浏览器的另一件有趣的事情是所谓的 Brave Rewards。此功能背后的想法是,您可以选择查看某些广告并获得一个小的基本注意令牌加密货币作为回报。最终,Brave 背后的开发人员希望这将改变互联网上广告的工作方式。 - -### 6. [Audacity](https://github.com/audacity/audacity) -强大的音频编辑器,非常适合音乐和播客 - -操作系统:Windows,macOS,Linux - -- 支持直接流 -- 适用于几乎所有音频文件 -- 可通过插件扩展 -- 没有移动应用 - -即使在最初发布日期的二十年后,Audacity 仍然是使用最广泛的开源应用程序之一。这是一个免费的音频编辑器,可在 Windows,Mac 和 Linux 系统上使用。 - -安装这个漂亮的小程序包后,您将找到录制,编辑和增强声音文件所需的一切。而且,由于庞大的开发人员社区支持该程序,您可以使用 Audacity 的第三方扩展库来添加默认情况下未包含的任何功能。这些操作使您可以执行从添加声音效果到自动调整音轨的所有操作。 - -首先,Audacity 界面可能看起来有些复杂,但是由于该程序提供了专业级工具,因此很容易看出为什么它是音乐家和播客创作者的首选应用程序。 - -### 7. [KeePass](https://github.com/keepassxreboot/keepassxc) -方便的密码生成器和凭证存储工具 - -操作系统:Windows(其他非官方端口可用) - -特点: -- 两因素验证 -- 随身携带 -- 基本特征 -- 没有云支持 - -那里有很多很棒的密码管理器,但是 KeePassPassword -Safe 的简单设置和全面的功能设置使其在人群中脱颖而出。它使用行业标准(几乎牢不可破)的AES加密和两因素身份验证来确保帐户详细信息的安全。 - -由于其可移植性,KeePass 还应在最佳开源平台的失败中得到一提。尽管此开源程序可以安装在 Windows,Mac,Linux 和移动设备上,但您也可以将数据库和程序存储在 USB 记忆棒上以进行安全保存。 - -似乎还不够,因此 KeePass 可以使用多种插件。您可以使用它们将 KeePass 凭据数据自动与您选择的云存储服务或浏览器同步。 - -### 8. [Thunderbird](https://www.thunderbird.net/en-US/get-involved/) -开源电子邮件管理的绝佳选择 - -操作系统:Windows,macOS,Linux - -- 您的所有邮件都在一个收件箱中 -- 连接日历事件 -- 光滑的界面 -- 没有云连接 - -如果您以前使用过 Microsoft -Outlook,那么您将了解能够在一个位置检查多个电子邮件收件箱的所有好处。这正是 Mozilla -Thunderbird 允许您执行的操作,但是带有开放源代码。Thunderbird 是由 Mozilla 开发的电子邮件客户端,由于其另一个著名的项目 Firefox,您可能听说过它。 - -Thunderbird 提供了许多很酷的技巧,可以帮助您更有效地处理电子邮件。例如,您可以使用内置日历链接通过电子邮件发送的事件更新, -或使用 RSS 阅读器查看新闻。如果您需要向联系人发送一个巨大的文件,Thunderbird 甚至可以通过将其上传到单独的服务器并在您的消息中放置链接来让您完成。 - -### 9. [FileZilla](https://svn.filezilla-project.org/svn/FileZilla3/trunk) -令人耳目一新的开源FTP客户端 - -操作系统:Windows,macOS,Linux - -- 恢复掉线的连接 -- 直观的界面 -- 远程文件编辑 -- 看起来有点过时 - -FileZilla 是一个免费的文件传输协议(FTP)客户端,使您可以远程管理服务器文件系统。如果您拥有自己的网站, -您将已经知道通过 Web 客户端进行 FTP 操作可能会令人沮丧,并且 FileZilla 提供的一致性和令人愉悦的 FTP 体验比大多数 Web 主机所使用的默认 FTP 应用程序所提供的更为一致提供。 - -这个开源的 FTP 工具带有各种高级功能,例如支持大文件传输,同步目录浏览和文件名过滤器。如果您在访问网站服务器时遇到任何麻烦,还包括一个网络配置向导。 - -FileZilla 界面对于初次使用的用户可能会有些困惑,但是实际上非常易于使用。在左侧面板中,您将找到一个显示本地文件系统的窗口。同时,在右侧,您将看到服务器的文件系统。要将文件从一个移到另一个,只需将其拖放即可。 - -### 10. [Linux](https://opensource.com/tags/linux) -开源操作系统 - -操作系统:不适用 - -- 越来越容易获得 -- 好的功能 -- 强大的安全性 -- 发行版的压倒性选择 - -显然,如果不提及周围最具标志性的开源软件 Linux,就无法完成这份清单。Linux 于 1991 年首次发布,此后演变为一系列不同的 OS 发行版, -其中包括 Chrome OS(可在 Chromebook 上找到)和 Ubuntu 等台式机变体,以及 LAMP 等服务器堆栈解决方案。 - -过去,由于安装困难以及运行所需的 Linux 系统调整量,Linux 仅由少数编码人员运行。但是,近年来, -最著名的 Linux 发行版背后的开发人员做出了有意识的努力,将其转变为更加用户友好的软件包。现在,运行虚拟 Linux 机器或重新分区硬盘以将 Linux 添加为额外的 OS 变得比以往任何时候都容易。 - -几家知名的计算机制造商甚至已经开始直接向公众出售 Linux 笔记本电脑。可能部分原因是因为 Linux 使用了与更流行的 Windows 和 Os X 系统完全不同的基本代码, -从而使它不再是黑客和恶意行为者的目标。 - -过去,由于很少有软件制造商为该系统开发软件,因此用户通常会推迟使用 Linux。幸运的是,云应用程序不在乎您运行的是哪种本地系统, -而且随着这些应用程序越来越流行,没有理由比以往任何时候都少。 +这里指的最强,不是看 Star 数/不看口碑,纯粹从学术视角出发,找到最新科研成果的开源项目。 + +## 如何找到最新顶级学术会议的开源代码 +1. 首先找到顶级学术会议在哪里。 +操作办法 1:在 ACM(国际计算机协会)中找到所有兴趣组,网址: 如计算机算法与原理兴趣组叫,AMC SIGACT,进入具体领域后,找到该领域的顶级学术会议。 +操作办法 2:在 CCF(中国计算机协会)中同理寻找相关顶级会议。 + +2. 其实,寻找各大顶级会议中,论文是否带开源软件。 +条件:需要能上谷歌学术,百度学术好像很多找不到。 + +## 如何解构计算机科学,从计算机原理出发找到最新科研发展方向及寻找到可用开源可用技术 +1. 首先寻找到综述论文 +2. 通过综述论文,找到该领域的论文里最新可用开源技术 + +## 往前再走一步,如何跟进数学理论突破获得最牛逼开源算法 +1. 上述过程之外,到 siam.org (工业数学)里寻找最新数学成果 + +## 截至目前(2020-11-15),全球十大开源软件参考 + +### 1. [LibreOffice](https://github.com/LibreOffice) +Microsoft Office 的真正开源替代品 + +操作系统:Windows,macOS,Linux + +- 全套办公 +- 应用支持微软文件 +- 很多模板 +- 不是基于云的 + +通过支持文档,电子表格,数据库,演示文稿,图表和数学公式,LibreOffice 本质上是世界上最受欢迎的办公生产力套件 Microsoft Office 365 的免费版本。 + +实际上,有人会说 LibreOffice 是两者中功能更全的,这要归功于其专门的开发人员社区,该社区一直在添加新的工具和技巧。例如,在最新更新中,LibreOffice 添加了 QR 码生成器工具,因此您可以快速创建适合移动设备的链接。 + +另一种著名的开源办公工具是 Open Office,它提供了许多与 LibreOffice 类似的功能。LibreOffice 之所以成为当今头把交椅,是因为它在保留 Microsoft 文件格式方面要好得多。换句话说,如果您需要修改最初用 Microsoft Word 编写的文档,则格式不会搞砸。 + +这款出色的免费办公软件的唯一缺点是,在线协作编辑文档有些棘手。最近,添加了一个在线编辑选项,但仍需要一些技术知识来实施。 + +### 2. [VLC Media Player](https://github.com/videolan/vlc) +开源媒体播放器几乎可以播放任何内容 + +操作系统:Windows,macOS,Linux,Android,iOS + +- 在旧硬件上运行良好 +- 播放几乎所有媒体文件 +- 优化播放 +- 复杂的菜单系统 + +VLC 媒体播放器是一个轻量级应用程序,由称为 VideoLAN 项目的开源开发小组创建。这款视频和媒体播放器在人气方面已经领先业界多年,不难看出为什么。您可以使用 VLC 媒体播放器以几乎任何格式打开音频和视频文件,而不必寻找额外的编解码器。 + +VLC 还适用于流媒体,例如播客和在线广播电台。但是也许最大的 VLC 媒体播放器功能是播放控制。您几乎可以更改有关媒体显示方式的所有内容,从硬件优化到添加第三方来源的字幕文件。 + +像这里提到的其他一些令人惊讶的开源产品一样,VLC 也在不断升级,以探索新的优点和功能。免费视频播放器的最新更新包括流式传输到其他设备(例如 Chromecasts)的功能以及对 VR 耳机的 360 度视频支持。 + +### 3. [GIMP](https://github.com/GNOME/gimp) +强大的开源照片和图像编辑工具 + +操作系统:Windows,macOS,Linux + +- 完全可定制的界面 +- 图层滤镜和遮罩 +- 进阶编辑工具 +- 可能会使初次使用的用户感到困惑 + +自从 1996 年首次发布以来,Linux 用户就深爱它,GIMP 是那里最著名和维护最完善的开源软件工具之一。该软件与免费提供的 Adobe +PhotoShop 平台几乎具有图像编辑功能和灵活性。 + +GIMP 具有对图层,滤镜和自动照片增强的内置支持。它还使创建新的图形设计元素变得容易,并且您可以通过下载由更广泛的 GIMP 开源社区创建的插件,将事情真正提升到一个新的水平。 + +就像 PhotoShop 一样,GIMP 具有相当陡峭的学习曲线,但是任何花时间的人都一定会喜欢它的可自定义界面和 GPU 硬件加速。但是,如果您正在寻找一个简单的免费照片编辑器,请改用 Paint.NET。它不那么强大,但是更容易掌握。 + +### 4. [Shotcut](https://github.com/mltframework/shotcut) +一个光滑的开源程序,用于高级视频编辑 + +作业系统:Windows + +- HDMI 预览和捕获 +- 支持数百种编解码器 +- 进阶效果 +- 陡峭的学习曲线 + +Shotcut 是开源的免费视频编辑软件。它是这些开源程序之一,确实表明了一个专业的开发社区可以在一定时间内改善平台的能力。在较早的版本中,Shotcut 界面有点裸露,但后来的发行版中增加了额外的可停靠面板,直观的时间轴以及其他功能,使 Shotcut 与 Adobe Premiere Pro 等高级视频编辑器处于同一联盟。 + +该视频工具支持非破坏性的音频和视频编辑,这意味着您可以编译效果而不会造成任何质量损失。您还可以使用此平台进行颜色键控和分级操作,以及更基本的剪辑拼接和修剪。 + +也许 Shotcut 的最酷的地方是它能够或多或少地处理任何格式的视频,音频或照片媒体。这很大程度上要归功于 FFmpeg,这是 Shotcut 程序的幕后开源视频框架。 + +### 5. [Brave](https://github.com/brave/browser-laptop) +享受私人开源浏览体验 + +操作系统:Windows,macOS,Linux,Android,iOS + +- 自动禁用跟踪器 +- 支持 Chrome 扩展程序 +- 内置广告拦截器 +- 展示自己的广告 + +Brave 建立在 Google 的开源 Chromium 项目之上,是一种网络浏览器,旨在通过自动禁用网站跟踪器和阻止讨厌的广告来使您的浏览活动保持私密性。为了更加安全地浏览,它具有内置的 Tor 功能。 + +使用 Brave 的最大优势在于,您可以访问许多 Google Chrome 商店的数以千计的扩展程序,但与普通的 Chrome 浏览器相比,享受更快的浏览体验。这是因为与 Google 的常规 Chrome 程序包相比,Brave 占用的资源更少,从而在加载页面时提高了性能。 + +关于 Brave 浏览器的另一件有趣的事情是所谓的 Brave Rewards。此功能背后的想法是,您可以选择查看某些广告并获得一个小的基本注意令牌加密货币作为回报。最终,Brave 背后的开发人员希望这将改变互联网上广告的工作方式。 + +### 6. [Audacity](https://github.com/audacity/audacity) +强大的音频编辑器,非常适合音乐和播客 + +操作系统:Windows,macOS,Linux + +- 支持直接流 +- 适用于几乎所有音频文件 +- 可通过插件扩展 +- 没有移动应用 + +即使在最初发布日期的二十年后,Audacity 仍然是使用最广泛的开源应用程序之一。这是一个免费的音频编辑器,可在 Windows,Mac 和 Linux 系统上使用。 + +安装这个漂亮的小程序包后,您将找到录制,编辑和增强声音文件所需的一切。而且,由于庞大的开发人员社区支持该程序,您可以使用 Audacity 的第三方扩展库来添加默认情况下未包含的任何功能。这些操作使您可以执行从添加声音效果到自动调整音轨的所有操作。 + +首先,Audacity 界面可能看起来有些复杂,但是由于该程序提供了专业级工具,因此很容易看出为什么它是音乐家和播客创作者的首选应用程序。 + +### 7. [KeePass](https://github.com/keepassxreboot/keepassxc) +方便的密码生成器和凭证存储工具 + +操作系统:Windows(其他非官方端口可用) + +特点: +- 两因素验证 +- 随身携带 +- 基本特征 +- 没有云支持 + +那里有很多很棒的密码管理器,但是 KeePassPassword +Safe 的简单设置和全面的功能设置使其在人群中脱颖而出。它使用行业标准(几乎牢不可破)的AES加密和两因素身份验证来确保帐户详细信息的安全。 + +由于其可移植性,KeePass 还应在最佳开源平台的失败中得到一提。尽管此开源程序可以安装在 Windows,Mac,Linux 和移动设备上,但您也可以将数据库和程序存储在 USB 记忆棒上以进行安全保存。 + +似乎还不够,因此 KeePass 可以使用多种插件。您可以使用它们将 KeePass 凭据数据自动与您选择的云存储服务或浏览器同步。 + +### 8. [Thunderbird](https://www.thunderbird.net/en-US/get-involved/) +开源电子邮件管理的绝佳选择 + +操作系统:Windows,macOS,Linux + +- 您的所有邮件都在一个收件箱中 +- 连接日历事件 +- 光滑的界面 +- 没有云连接 + +如果您以前使用过 Microsoft +Outlook,那么您将了解能够在一个位置检查多个电子邮件收件箱的所有好处。这正是 Mozilla +Thunderbird 允许您执行的操作,但是带有开放源代码。Thunderbird 是由 Mozilla 开发的电子邮件客户端,由于其另一个著名的项目 Firefox,您可能听说过它。 + +Thunderbird 提供了许多很酷的技巧,可以帮助您更有效地处理电子邮件。例如,您可以使用内置日历链接通过电子邮件发送的事件更新, +或使用 RSS 阅读器查看新闻。如果您需要向联系人发送一个巨大的文件,Thunderbird 甚至可以通过将其上传到单独的服务器并在您的消息中放置链接来让您完成。 + +### 9. [FileZilla](https://svn.filezilla-project.org/svn/FileZilla3/trunk) +令人耳目一新的开源FTP客户端 + +操作系统:Windows,macOS,Linux + +- 恢复掉线的连接 +- 直观的界面 +- 远程文件编辑 +- 看起来有点过时 + +FileZilla 是一个免费的文件传输协议(FTP)客户端,使您可以远程管理服务器文件系统。如果您拥有自己的网站, +您将已经知道通过 Web 客户端进行 FTP 操作可能会令人沮丧,并且 FileZilla 提供的一致性和令人愉悦的 FTP 体验比大多数 Web 主机所使用的默认 FTP 应用程序所提供的更为一致提供。 + +这个开源的 FTP 工具带有各种高级功能,例如支持大文件传输,同步目录浏览和文件名过滤器。如果您在访问网站服务器时遇到任何麻烦,还包括一个网络配置向导。 + +FileZilla 界面对于初次使用的用户可能会有些困惑,但是实际上非常易于使用。在左侧面板中,您将找到一个显示本地文件系统的窗口。同时,在右侧,您将看到服务器的文件系统。要将文件从一个移到另一个,只需将其拖放即可。 + +### 10. [Linux](https://opensource.com/tags/linux) +开源操作系统 + +操作系统:不适用 + +- 越来越容易获得 +- 好的功能 +- 强大的安全性 +- 发行版的压倒性选择 + +显然,如果不提及周围最具标志性的开源软件 Linux,就无法完成这份清单。Linux 于 1991 年首次发布,此后演变为一系列不同的 OS 发行版, +其中包括 Chrome OS(可在 Chromebook 上找到)和 Ubuntu 等台式机变体,以及 LAMP 等服务器堆栈解决方案。 + +过去,由于安装困难以及运行所需的 Linux 系统调整量,Linux 仅由少数编码人员运行。但是,近年来, +最著名的 Linux 发行版背后的开发人员做出了有意识的努力,将其转变为更加用户友好的软件包。现在,运行虚拟 Linux 机器或重新分区硬盘以将 Linux 添加为额外的 OS 变得比以往任何时候都容易。 + +几家知名的计算机制造商甚至已经开始直接向公众出售 Linux 笔记本电脑。可能部分原因是因为 Linux 使用了与更流行的 Windows 和 Os X 系统完全不同的基本代码, +从而使它不再是黑客和恶意行为者的目标。 + +过去,由于很少有软件制造商为该系统开发软件,因此用户通常会推迟使用 Linux。幸运的是,云应用程序不在乎您运行的是哪种本地系统, +而且随着这些应用程序越来越流行,没有理由比以往任何时候都少。 diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" similarity index 100% rename from "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" rename to "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\350\207\252\345\267\261\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256.md" diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" similarity index 100% rename from "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" rename to "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\344\270\255\347\232\204\350\265\236\350\265\217\346\226\207\345\214\226.md" diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" similarity index 100% rename from "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" rename to "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\346\272\220\344\273\243\347\240\201\350\257\245\346\200\216\344\271\210\350\257\273.md" diff --git "a/\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" "b/\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" similarity index 100% rename from "\347\254\254\344\272\214\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" rename to "\347\254\2542\351\203\250\345\210\206\342\200\224\342\200\224\345\255\246\344\271\240\345\222\214\344\275\277\347\224\250\345\274\200\346\272\220\351\241\271\347\233\256/\350\256\244\350\257\206\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\270\252\344\272\272\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220\350\264\241\347\214\256.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" similarity index 99% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" index d728a86..eb9dacc 100644 --- "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" +++ "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\344\274\201\344\270\232\344\270\272\344\273\200\344\271\210\350\246\201\345\217\202\344\270\216\345\274\200\346\272\220.md" @@ -1,19 +1,19 @@ - - -``` -需补充企业参与开源获得的回报,比如技术影响力提升,项目质量提升,收取咨询和服务费用、推行工程师文化等。 -``` - -## 企业参与开源并不是为了公益 -企业都以追逐利益为目标 -当代码是企业的核心资产时,企业必须想清楚为什么要回馈大众,降低自己产品竞争力,才有可能投入资源到开源社区活跃。这类逻辑以靠销售软件或硬件的产品制造商为主。 -当代码不是企业核心资产时,企业多多以最求影响力、构建开放氛围提升人才获取效率。这类逻辑以互联网公司为主。 - -## 企业选择回馈其实是理性选择 -不考虑公益的情况,纯粹从利益角度算一笔账: -最初并不认为使用开源软件有什么成本,但经过两三个版本的迭代以后,成本会急剧上升。一般公司经历了多次实践后才认可这种模型,这是付出了惨痛代价以后才意识到的。如果从一开始就选择与社区合作,就可以与社区一起讨论产品的特性,然后再进行修改。最初的维护成本并不高,研发的成本会很高,但由于所要求的团队能力并不一样,维护成本会逐渐降低。 -基于开源软件修改,社区下一步准备做什么、怎么做,然后就都清楚,与社区有很好的互动沟通。虽然在前期投入了很大的成本,但最终取得了相应的成果。 - - -## 企业参与开源的概念 -目前,包括阿里巴巴、腾讯、华为在内的一大批巨型企业都在为争夺这片市场而努力。那么,怎么才能在这场争夺中迅速获得优势呢?一个最简单的思路,就是让本企业的标准成为整个行业的标准。而要达到这一点,企业就首先要让自己的标准有足够的使用者。显然,为了达到这一目的,开放自己的底层技术,吸引更多的研发者在此基础上进行建设,就是一个非常好的市场争夺策略——这一方面可以争取直接的用户,另一方面还可以通过产品的丰富来吸引更多的间接用户。最终,借助网络外部性的力量,它们就可以迅速夺取市场。 + + +``` +需补充企业参与开源获得的回报,比如技术影响力提升,项目质量提升,收取咨询和服务费用、推行工程师文化等。 +``` + +## 企业参与开源并不是为了公益 +企业都以追逐利益为目标 +当代码是企业的核心资产时,企业必须想清楚为什么要回馈大众,降低自己产品竞争力,才有可能投入资源到开源社区活跃。这类逻辑以靠销售软件或硬件的产品制造商为主。 +当代码不是企业核心资产时,企业多多以最求影响力、构建开放氛围提升人才获取效率。这类逻辑以互联网公司为主。 + +## 企业选择回馈其实是理性选择 +不考虑公益的情况,纯粹从利益角度算一笔账: +最初并不认为使用开源软件有什么成本,但经过两三个版本的迭代以后,成本会急剧上升。一般公司经历了多次实践后才认可这种模型,这是付出了惨痛代价以后才意识到的。如果从一开始就选择与社区合作,就可以与社区一起讨论产品的特性,然后再进行修改。最初的维护成本并不高,研发的成本会很高,但由于所要求的团队能力并不一样,维护成本会逐渐降低。 +基于开源软件修改,社区下一步准备做什么、怎么做,然后就都清楚,与社区有很好的互动沟通。虽然在前期投入了很大的成本,但最终取得了相应的成果。 + + +## 企业参与开源的概念 +目前,包括阿里巴巴、腾讯、华为在内的一大批巨型企业都在为争夺这片市场而努力。那么,怎么才能在这场争夺中迅速获得优势呢?一个最简单的思路,就是让本企业的标准成为整个行业的标准。而要达到这一点,企业就首先要让自己的标准有足够的使用者。显然,为了达到这一目的,开放自己的底层技术,吸引更多的研发者在此基础上进行建设,就是一个非常好的市场争夺策略——这一方面可以争取直接的用户,另一方面还可以通过产品的丰富来吸引更多的间接用户。最终,借助网络外部性的力量,它们就可以迅速夺取市场。 diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\217\257\344\273\245\347\224\250\345\223\252\344\272\233\346\226\271\345\274\217\345\217\202\344\270\216\345\274\200\346\272\220.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\210\220\344\270\272\344\270\200\344\270\252\351\241\271\347\233\256\347\232\204\346\240\270\345\277\203\350\264\241\347\214\256\350\200\205.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\246\202\344\275\225\346\211\276\345\210\260\351\200\202\345\220\210\347\232\204\351\241\271\347\233\256\350\277\233\350\241\214\350\264\241\347\214\256.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\344\270\255\347\232\204\344\270\215\345\220\214\350\247\222\350\211\262.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\350\264\241\347\214\256\345\207\206\345\210\231\345\222\214\350\264\241\347\214\256\350\200\205\345\205\254\347\272\246.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Issue.md" diff --git "a/\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" "b/\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" similarity index 100% rename from "\347\254\254\344\270\211\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" rename to "\347\254\2543\351\203\250\345\210\206\342\200\224\342\200\224\345\260\235\350\257\225\345\217\202\344\270\216\345\274\200\346\272\220/\346\217\220\344\272\244\347\254\254\344\270\200\344\270\252 Pull Request.md" diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" similarity index 97% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" index 5ac95ad..a286b60 100644 --- "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" +++ "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/CONTRIBUTING \347\274\226\345\206\231.md" @@ -1,61 +1,61 @@ -# CONTRIBUTING 编写 - -## CONTRIBUTING 是什么 - -> ​ CONTRIBUTING 文件用来告诉人们如何对项目做出贡献. - - - -## CONTRIBUTING 如何编写 - -在**CONTRIBUTING**文件中会含有下面这些主题的内容(可能不完整, 请各位读者进行补充) - -1. 如何提交错误报告 - 1. 当出现bug的时候需要如何提交, 对于安全性的漏洞需要通过项目内部的人员邮箱通知, 不应该将安全性bug公开 - 2. 通过 Issues 仅提交 -2. 解决现有问题 -3. 如何提出新功能 -4. 如何设置开发环境并运行测试 -5. 提交变更的日志信息(git commit message) -6. 编码约定 -7. 分支处理的约定 -8. 合并PR的形式 - - - -### 例子 - -```md -## 提交错误报告 -如果您在XXX中发现了一个不存在安全问题的漏洞, 请在XXX仓库中的Issues中搜索, 以防该漏洞已被提交, 如果找不到漏洞可以创建一个新的Issues. 如果发现了一个安全问题请不要将其公开. 请参阅安全问题处理方式. 替吉奥错误报告时应该详尽 - -## 安全问题处理 -本项目中对安全问题处理的形式. 项目核心人员确认编辑. 该部分内容可以根据项目情况添加 - -## 解决现有问题 -通过查看仓库的Issues列表何以发现需要处理的问题信息, 可以尝试解决其中的某个问题 - -## 如何提出新功能 -提出新功能有些项目使用Issues的Feature标签进行管理, 有些则通过邮件的形式统一收集. 在收集后项目内人员会进行确认开发, 一般的将确认开发的功能会放入下一个版本的任务列表 - -## 如何设置开发环境并运行测试 -如果是通过Git管理可以从 `git clone xxx` 开始编写, 将开发环境的配置信息, IDE的设置等信息配置文档编写. - -## 变更日志填写规则 -1. 使用现在时态 -1. 第一行字数限制 -1. 提交内容的约束 - -## 编码约定 -- 项目内编码约定文件, .editorconfig - -## 分支处理约定 -- 分支处理形式, 如 gitFlow - -## 合并PR的形式 -在什么情况下可以合并到master/main. - 1. 通过CI - 2. 两个及以上的维护者通过. - 3. 最新版本 -``` - +# CONTRIBUTING 编写 + +## CONTRIBUTING 是什么 + +> ​ CONTRIBUTING 文件用来告诉人们如何对项目做出贡献. + + + +## CONTRIBUTING 如何编写 + +在**CONTRIBUTING**文件中会含有下面这些主题的内容(可能不完整, 请各位读者进行补充) + +1. 如何提交错误报告 + 1. 当出现bug的时候需要如何提交, 对于安全性的漏洞需要通过项目内部的人员邮箱通知, 不应该将安全性bug公开 + 2. 通过 Issues 仅提交 +2. 解决现有问题 +3. 如何提出新功能 +4. 如何设置开发环境并运行测试 +5. 提交变更的日志信息(git commit message) +6. 编码约定 +7. 分支处理的约定 +8. 合并PR的形式 + + + +### 例子 + +```md +## 提交错误报告 +如果您在XXX中发现了一个不存在安全问题的漏洞, 请在XXX仓库中的Issues中搜索, 以防该漏洞已被提交, 如果找不到漏洞可以创建一个新的Issues. 如果发现了一个安全问题请不要将其公开. 请参阅安全问题处理方式. 替吉奥错误报告时应该详尽 + +## 安全问题处理 +本项目中对安全问题处理的形式. 项目核心人员确认编辑. 该部分内容可以根据项目情况添加 + +## 解决现有问题 +通过查看仓库的Issues列表何以发现需要处理的问题信息, 可以尝试解决其中的某个问题 + +## 如何提出新功能 +提出新功能有些项目使用Issues的Feature标签进行管理, 有些则通过邮件的形式统一收集. 在收集后项目内人员会进行确认开发, 一般的将确认开发的功能会放入下一个版本的任务列表 + +## 如何设置开发环境并运行测试 +如果是通过Git管理可以从 `git clone xxx` 开始编写, 将开发环境的配置信息, IDE的设置等信息配置文档编写. + +## 变更日志填写规则 +1. 使用现在时态 +1. 第一行字数限制 +1. 提交内容的约束 + +## 编码约定 +- 项目内编码约定文件, .editorconfig + +## 分支处理约定 +- 分支处理形式, 如 gitFlow + +## 合并PR的形式 +在什么情况下可以合并到master/main. + 1. 通过CI + 2. 两个及以上的维护者通过. + 3. 最新版本 +``` + diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" similarity index 100% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\211\257\345\245\275\347\232\204\345\237\272\347\241\200.md" diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" similarity index 100% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\344\270\272\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256\345\273\272\347\253\213\350\264\241\347\214\256\345\207\206\345\210\231.md" diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" similarity index 100% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\350\256\270\345\217\257\350\257\201\347\232\204\345\272\224\347\224\250.md" diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" similarity index 100% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\347\273\264\346\212\244\345\222\214\347\256\241\347\220\206.md" diff --git "a/\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" "b/\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" similarity index 100% rename from "\347\254\254\345\233\233\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" rename to "\347\254\2544\351\203\250\345\210\206\342\200\224\342\200\224\345\220\257\345\212\250\350\207\252\345\267\261\347\232\204\345\274\200\346\272\220\351\241\271\347\233\256/\346\234\211\344\272\206\345\274\200\346\272\220\347\232\204\346\203\263\346\263\225\345\220\216\344\273\216\344\275\225\345\274\200\345\247\213.md" diff --git "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" similarity index 98% rename from "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" rename to "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" index d2e84cc..942d4cd 100644 --- "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" +++ "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\344\270\252\344\272\272\347\273\264\346\212\244\345\222\214\345\273\272\347\253\213\347\244\276\345\214\272\357\274\214\344\270\244\350\200\205\345\246\202\344\275\225\351\200\211\346\213\251.md" @@ -1,52 +1,52 @@ -## 个人维护开源项目 - -选择个人维护一个开源项目是进入开源世界的不错选择。 - -开始的方法也非常简单 - 以个人的特长、经验和兴趣来创建一个项目并在开源平台(比如 Gitee)与大家分享。 - -通过开源平台提供的工具就可以很有效的与用户进行沟通。包括创建 issue,review Pull Request (PR),简单的任务管理,发布版本,创建 wiki 等。 - -在与用户的交流过程中可以不断积累经验,改进项目,进而回馈用户。 - -选择自己维护有很多有利的地方,例如: - -- 项目的路线图可以按照自己的想法演进 -- 更好的根据自己时间和精力控制项目的时间表和进度 -- 在方案决策上,自己有绝对的决定权 - -但是往往限制于自身的精力、经验、工作生活的变动等因素影响到项目的进度和质量。 - -## 建设开源项目社区 - -开源社区所涉及的范畴要比个人维护要广的多。发起者一般是由一个组织 (organization)、一个公司或者公司与组织的联盟等(当然也可以以个人的名义发起)。 - -若干志同道合的个人可以成立开源组织,以协作的方式建立项目社区。开源组织成熟后,可以吸纳其他开源组织或者公司加入,从而扩大项目的影响力。 - -社区围绕着一个共同的目标,借用组织或公司的人力财力,将一个或者若干个项目向前推进。 - -社区针对项目的投入不光体现在对项目功能的开发和 bug 修正,更是从更高的层面来提升项目的影响力、路线图、沟通协作和质量保证等。具体来说: - -项目的影响力主要体现在使用者的质量和数量。社区可以通过吸收战略同盟会员等手段吸引在该领域有影响力的公司加入社区,并将该开源项目应用到公司的产品中,从而大大提升项目的实用性,扩展应用实例。继而提升项目的成熟度,吸引更多的会员加入,不断滚雪球,将优势扩大。 - -借助与业内厂商或者产业联盟沟通协作的优势,社区项目的路线图会更加贴近市场,有着非常强的针对性,符合市场愿景。 - -社区的沟通协作会更加规范。用户的参与贡献方式会被更加正式的说明和要求,甚至签订 CLA (Contributor License Agreement),从而帮助项目使用者很好的规避一些风险 (如许可证、著作权、专利等)。用户提出的 issue 由团队在规定的时间内按照优先级予以处理。定期组织会议,培训或者线下活动等。 - -因为社区项目一般都是将实际产品应用作为目标,所以质量保证上有着更加高的要求。CI 或 CD 成为社区项目的必选项。针对测试投入大量的人力物力(比如租用测试服务器或者云服务器)。 - -除此之外,社区运行的主要项目一般会有更多的配套项目进行支持,比如上 test suite、 API 兼容性测试工具、脚本工具等。 - -在与业内其他相关系统的集成方面,社区也会更加积极的推进,将集成方案和 demo 推到对方仓库或者维护在本项目仓库。 - -综上所述,开源社区是以开源为基础,协作为框架,应用为目的(之一)的高效运作团体。所以社区内部的管理上也会更加规范。 - -尽管社区的组织形式不尽相同,但是一般都会有核心决策团体或者管理委员会来从技术和项目管理的角度履行管理者的权力。甚至有些社区组织结构非常接近于公司的产品开发,从而保证其协同效率。 - - -## 个人维护 vs 建设社区 - -从上面的描述中可以看出,个人维护更加适合初期学习开源项目维护的朋友,积累沟通协作的经验,深入理解开源文化和开源世界。 - -对于小的项目而言,个人维护可以快速决策,减少沟通成本,进而提升效率。但是在项目推广上无法借助社区的优势,影响力提升较慢。 - +## 个人维护开源项目 + +选择个人维护一个开源项目是进入开源世界的不错选择。 + +开始的方法也非常简单 - 以个人的特长、经验和兴趣来创建一个项目并在开源平台(比如 Gitee)与大家分享。 + +通过开源平台提供的工具就可以很有效的与用户进行沟通。包括创建 issue,review Pull Request (PR),简单的任务管理,发布版本,创建 wiki 等。 + +在与用户的交流过程中可以不断积累经验,改进项目,进而回馈用户。 + +选择自己维护有很多有利的地方,例如: + +- 项目的路线图可以按照自己的想法演进 +- 更好的根据自己时间和精力控制项目的时间表和进度 +- 在方案决策上,自己有绝对的决定权 + +但是往往限制于自身的精力、经验、工作生活的变动等因素影响到项目的进度和质量。 + +## 建设开源项目社区 + +开源社区所涉及的范畴要比个人维护要广的多。发起者一般是由一个组织 (organization)、一个公司或者公司与组织的联盟等(当然也可以以个人的名义发起)。 + +若干志同道合的个人可以成立开源组织,以协作的方式建立项目社区。开源组织成熟后,可以吸纳其他开源组织或者公司加入,从而扩大项目的影响力。 + +社区围绕着一个共同的目标,借用组织或公司的人力财力,将一个或者若干个项目向前推进。 + +社区针对项目的投入不光体现在对项目功能的开发和 bug 修正,更是从更高的层面来提升项目的影响力、路线图、沟通协作和质量保证等。具体来说: + +项目的影响力主要体现在使用者的质量和数量。社区可以通过吸收战略同盟会员等手段吸引在该领域有影响力的公司加入社区,并将该开源项目应用到公司的产品中,从而大大提升项目的实用性,扩展应用实例。继而提升项目的成熟度,吸引更多的会员加入,不断滚雪球,将优势扩大。 + +借助与业内厂商或者产业联盟沟通协作的优势,社区项目的路线图会更加贴近市场,有着非常强的针对性,符合市场愿景。 + +社区的沟通协作会更加规范。用户的参与贡献方式会被更加正式的说明和要求,甚至签订 CLA (Contributor License Agreement),从而帮助项目使用者很好的规避一些风险 (如许可证、著作权、专利等)。用户提出的 issue 由团队在规定的时间内按照优先级予以处理。定期组织会议,培训或者线下活动等。 + +因为社区项目一般都是将实际产品应用作为目标,所以质量保证上有着更加高的要求。CI 或 CD 成为社区项目的必选项。针对测试投入大量的人力物力(比如租用测试服务器或者云服务器)。 + +除此之外,社区运行的主要项目一般会有更多的配套项目进行支持,比如上 test suite、 API 兼容性测试工具、脚本工具等。 + +在与业内其他相关系统的集成方面,社区也会更加积极的推进,将集成方案和 demo 推到对方仓库或者维护在本项目仓库。 + +综上所述,开源社区是以开源为基础,协作为框架,应用为目的(之一)的高效运作团体。所以社区内部的管理上也会更加规范。 + +尽管社区的组织形式不尽相同,但是一般都会有核心决策团体或者管理委员会来从技术和项目管理的角度履行管理者的权力。甚至有些社区组织结构非常接近于公司的产品开发,从而保证其协同效率。 + + +## 个人维护 vs 建设社区 + +从上面的描述中可以看出,个人维护更加适合初期学习开源项目维护的朋友,积累沟通协作的经验,深入理解开源文化和开源世界。 + +对于小的项目而言,个人维护可以快速决策,减少沟通成本,进而提升效率。但是在项目推广上无法借助社区的优势,影响力提升较慢。 + 作为个人开发者,可以从个人维护项目开始,借助开源平台认识结交一群志同道合的朋友,形成一个强有力的团队,进而建设社区。同时也可以选择加入一个开源社区一边贡献一边学习和了解开源,很多社区都是从小到大,逐渐演变成一个成熟的团队的。 \ No newline at end of file diff --git "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" similarity index 100% rename from "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" rename to "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\270\270\350\247\201\346\262\273\347\220\206\346\236\266\346\236\204.md" diff --git "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" similarity index 100% rename from "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" rename to "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\346\211\223\351\200\240\345\274\200\346\272\220\347\244\276\345\214\272.md" diff --git "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" similarity index 98% rename from "\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" rename to "\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" index f9b1af4..44067a8 100644 --- "a/\347\254\254\344\272\224\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" +++ "b/\347\254\2545\351\203\250\345\210\206\342\200\224\342\200\224\345\274\200\346\272\220\346\262\273\347\220\206/\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" @@ -1,47 +1,47 @@ -> 本篇内容将会引导大家思考一些治理开源项目中,代码质量的问题 - -## 引子 - -2014 年 4 月,OpenSSL 向外界公布 OpenSSL 的实现上,存在 Heartbleed 漏洞隐患,截止 2014 年 5 月 20 日,在 80 万最热门的启用 TLS 的网站中,仍有 1.5% 易受心脏出血漏洞的攻击。如果说 Heartbleed 带来了什么好处,那就是它让人们更加关注软件测试的重要性。它影响了 50 多万个网站。因此,专家们现在正在梳理 OpenSSL 的代码,以及许多其他开源项目的代码,以确保提高公开源代码的质量和安全性 - -基于贡献代码构建的事实是,没有任何一个开源项目是完全不可破解的。然而,有四个关键的要点,开发社区可以采取行动,以确保项目是最新的,并检测出潜在的缺陷。 - - -``` -本篇需要重点补充软件质量管理的内容,从技术和工具角度来给与建议 -``` - - - -## 人才 - -首先,重要的是要知道谁在操作代码。随着开源社区变得如此多样化,有许多不同的工作风格。因此,需要有人拥有每个项目并提供架构审查。 - -通常,会有一个项目维护者(个人、团体或组织)支持一个开源项目,也会有一些贡献者在此基础上构建项目。在很大程度上,开源项目也是建立在逐渐信任的基础上。因此,在项目中寻找并维持人才是关键。 - -虽然在开源社区中有可能存在不良行为者,但确实很少有项目维护者能够审查贡献者编写的每一行代码。这就是像 GitHub 和 CodePlex 这样的网站更容易审查贡献者和审查他们的项目工作的地方。 - -同样,像 Linux 基金会和 Apache 软件基金会这样的组织已经联系了来自不同公司的专家开发人员,以帮助培养高质量的开源代码。 - -## 时间 - -有了合适的人才,开源社区还必须找到时间定期检查代码,并进一步分配时间来更新它。未能及时更新是部署中存在易受攻击软件的主要原因。 - -## 预算 - -除了时间,开放源码项目,开源基金会的支持,如 Linux 基金会的作用与 Linux 和 ApacheHadoop 的角色,往往会有更大的能力和策略来确保代码质量,特别是有一个分配的预算项目,在某些情况下,开发人员为他们的贡献得到报酬,像 RedHatLinux 或 Cloudera Apache Hadoop。 - -如果一个开源项目没有商业支持,这并不一定意味着它不可能成功。像 Red Hat 和 Apache 这样的商业实体可以帮助解决服务器、事件和技术开发方面的预算问题,独立的开源开发人员可能无法轻松获得这些资源。 - -## 工具 - -但是,即使有经验丰富的贡献者,我们也必须承认,人类还是容易犯错的。这包括可以在代码中编写无意缺陷的开发人员,如果漏洞未被发现,那么基于该漏洞构建的站点和软件就会变得脆弱。 - -对于开放源代码项目来说,好消息是有许多免费工具可以确保代码的完整性,并且可以在开放源代码中找到许多漏洞和缺陷。 -对于代码开发,GitHub 平台是非常有用的。对于功能测试,Selenium 等工具也是如此。 -在静态分析中,FindBugs 是一个在 Java 中查找错误的开放源码工具。 -类似地,Clang 静态分析器是一个源代码分析工具,它可以发现 C、C++ 和 Objective-C 程序中的错误。 - -项目维护者和组织可以知道是否已修复缺陷的另一种方法是注册观察已注册 Coverage Scan 服务的大约 2500 个开源项目中的一个,该项目最初是与美国国土部合作创建的现在可以为开源开发人员提供免费代码分析的安全性。 - +> 本篇内容将会引导大家思考一些治理开源项目中,代码质量的问题 + +## 引子 + +2014 年 4 月,OpenSSL 向外界公布 OpenSSL 的实现上,存在 Heartbleed 漏洞隐患,截止 2014 年 5 月 20 日,在 80 万最热门的启用 TLS 的网站中,仍有 1.5% 易受心脏出血漏洞的攻击。如果说 Heartbleed 带来了什么好处,那就是它让人们更加关注软件测试的重要性。它影响了 50 多万个网站。因此,专家们现在正在梳理 OpenSSL 的代码,以及许多其他开源项目的代码,以确保提高公开源代码的质量和安全性 + +基于贡献代码构建的事实是,没有任何一个开源项目是完全不可破解的。然而,有四个关键的要点,开发社区可以采取行动,以确保项目是最新的,并检测出潜在的缺陷。 + + +``` +本篇需要重点补充软件质量管理的内容,从技术和工具角度来给与建议 +``` + + + +## 人才 + +首先,重要的是要知道谁在操作代码。随着开源社区变得如此多样化,有许多不同的工作风格。因此,需要有人拥有每个项目并提供架构审查。 + +通常,会有一个项目维护者(个人、团体或组织)支持一个开源项目,也会有一些贡献者在此基础上构建项目。在很大程度上,开源项目也是建立在逐渐信任的基础上。因此,在项目中寻找并维持人才是关键。 + +虽然在开源社区中有可能存在不良行为者,但确实很少有项目维护者能够审查贡献者编写的每一行代码。这就是像 GitHub 和 CodePlex 这样的网站更容易审查贡献者和审查他们的项目工作的地方。 + +同样,像 Linux 基金会和 Apache 软件基金会这样的组织已经联系了来自不同公司的专家开发人员,以帮助培养高质量的开源代码。 + +## 时间 + +有了合适的人才,开源社区还必须找到时间定期检查代码,并进一步分配时间来更新它。未能及时更新是部署中存在易受攻击软件的主要原因。 + +## 预算 + +除了时间,开放源码项目,开源基金会的支持,如 Linux 基金会的作用与 Linux 和 ApacheHadoop 的角色,往往会有更大的能力和策略来确保代码质量,特别是有一个分配的预算项目,在某些情况下,开发人员为他们的贡献得到报酬,像 RedHatLinux 或 Cloudera Apache Hadoop。 + +如果一个开源项目没有商业支持,这并不一定意味着它不可能成功。像 Red Hat 和 Apache 这样的商业实体可以帮助解决服务器、事件和技术开发方面的预算问题,独立的开源开发人员可能无法轻松获得这些资源。 + +## 工具 + +但是,即使有经验丰富的贡献者,我们也必须承认,人类还是容易犯错的。这包括可以在代码中编写无意缺陷的开发人员,如果漏洞未被发现,那么基于该漏洞构建的站点和软件就会变得脆弱。 + +对于开放源代码项目来说,好消息是有许多免费工具可以确保代码的完整性,并且可以在开放源代码中找到许多漏洞和缺陷。 +对于代码开发,GitHub 平台是非常有用的。对于功能测试,Selenium 等工具也是如此。 +在静态分析中,FindBugs 是一个在 Java 中查找错误的开放源码工具。 +类似地,Clang 静态分析器是一个源代码分析工具,它可以发现 C、C++ 和 Objective-C 程序中的错误。 + +项目维护者和组织可以知道是否已修复缺陷的另一种方法是注册观察已注册 Coverage Scan 服务的大约 2500 个开源项目中的一个,该项目最初是与美国国土部合作创建的现在可以为开源开发人员提供免费代码分析的安全性。 + 项目观察员可以查看关于项目质量的高级统计数据,包括固定缺陷的数量、突出缺陷和缺陷密度率——所有这些都支持开源社区在他们的软件开发过程中构建质量和安全性。 \ No newline at end of file diff --git "a/\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" "b/\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" similarity index 100% rename from "\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" rename to "\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\345\205\263\344\272\216\345\274\200\346\272\220\351\241\271\347\233\256\347\232\204\345\225\206\344\270\232\345\214\226.md" diff --git "a/\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" "b/\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" similarity index 97% rename from "\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" rename to "\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" index 7a1ca95..41c8e99 100644 --- "a/\347\254\254\345\205\255\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" +++ "b/\347\254\2546\351\203\250\345\210\206\342\200\224\342\200\224\345\205\266\344\273\226\351\227\256\351\242\230/\346\200\216\346\240\267\345\234\250\346\234\254\350\201\214\345\267\245\344\275\234\345\222\214\345\274\200\346\272\220\351\241\271\347\233\256\351\227\264\345\201\232\345\245\275\345\271\263\350\241\241.md" @@ -20,7 +20,7 @@ ## 开源能带给我们什么? -关于这部分内容,请参考[开源与个人技术成长](../第一部分——初识开源/开源与个人技术成长.md)、[为什么要参与开源贡献](../第三部分——尝试参与开源/为什么要参与开源贡献.md) +关于这部分内容,请参考[开源与个人技术成长](../第1部分——初识开源/开源与个人技术成长.md)、[为什么要参与开源贡献](../第3部分——尝试参与开源/为什么要参与开源贡献.md) ``` -- Gitee From 67e5a7a9c7541dfd90fefd6ba29d7fa73a60aa3b Mon Sep 17 00:00:00 2001 From: tonels Date: Fri, 11 Dec 2020 18:40:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\347\233\256\345\275\225.md" | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git "a/\347\233\256\345\275\225.md" "b/\347\233\256\345\275\225.md" index 5b7e400..2d87cc6 100644 --- "a/\347\233\256\345\275\225.md" +++ "b/\347\233\256\345\275\225.md" @@ -1,4 +1,4 @@ -### 初识开源 +### 第1部分--初识开源 * [什么是开源?](第1部分——初识开源/什么是开源.md) * [开源与个人技术成长](第1部分——初识开源/开源与个人技术成长.md) * [如何判断一个项目是否是开源的?](第1部分——初识开源/如何判断一个项目是否是开源的?.md) @@ -7,14 +7,14 @@ * [常见开源文件](第1部分——初识开源/常见文件认识.md) * [企业视角看待开源](第1部分——初识开源/企业视角看待开源.md) -### 学习和使用开源项目 +### 第2部分--学习和使用开源项目 * [如何找到适合自己学习和使用的开源项目](第2部分——学习和使用开源项目/如何找到适合自己学习和使用的开源项目.md) * [开源项目的源代码该怎么读](第2部分——学习和使用开源项目//开源项目的源代码该怎么读.md) * [认识开源许可证](第2部分——学习和使用开源项目/认识开源许可证.md) * [开源中的赞赏文化](第2部分——学习和使用开源项目/开源中的赞赏文化.md) * [如何找到最强开源项目](第2部分——学习和使用开源项目/%20如何找到最强开源项目.md) -### 尝试参与开源 +### 第3部分--尝试参与开源 * [开源项目中的不同角色](第3部分——尝试参与开源/开源项目中的不同角色.md) * [个人为什么要参与开源贡献](第3部分——尝试参与开源/个人为什么要参与开源贡献.md) * [企业为什么要参与开源](第3部分——尝试参与开源/企业为什么要参与开源.md) @@ -25,7 +25,7 @@ * [如何成为一个项目的核心贡献者](第3部分——尝试参与开源/如何成为一个项目的核心贡献者.md) * [开源项目的贡献准则和贡献者公约](第3部分——尝试参与开源/开源项目的贡献准则和贡献者公约.md) -### 启动自己的开源项目 +### 第4部分--启动自己的开源项目 * [有了开源的想法后从何开始](第4部分——启动自己的开源项目/有了开源的想法后从何开始.md) * [为开源项目建立良好的基础](第4部分——启动自己的开源项目/为开源项目建立良好的基础.md) * [开源许可证的应用](第4部分——启动自己的开源项目/开源许可证的应用.md) @@ -33,13 +33,13 @@ * [开源项目的维护和管理](第4部分——启动自己的开源项目/开源项目的维护和管理.md) * [CONTRIBUTING 编写](./第四部分——启动自己的开源项目/CONTRIBUTING 编写.md) -### 开源治理 +### 第5部分--开源治理 * [个人维护和建立社区,两者如何选择?](第5部分——开源治理/个人维护和建立社区,两者如何选择.md) * [打造开源社区](第5部分——开源治理/打造开源社区.md) * [开源项目的常见治理架构](第5部分——开源治理/开源项目的常见治理架构.md) * [确保开源代码质量的几个要点](第5部分——开源治理/确保开源代码质量的几个要点.md) -### 其他问题 +### 第6部分--其他问题 * [怎样在本职工作和开源项目间做好平衡](第6部分——其他问题/怎样在本职工作和开源项目间做好平衡.md) * [关于开源项目的商业化](第6部分——其他问题/关于开源项目的商业化.md) -- Gitee