====== Guide for Stepping into Free Software ====== Here is a ToDo List which you could follow to make your first step to Free Software. **How to use this list?** You could just copy and paste the whole content to other place. Or download the print-ready PDF file. You can finish all these tasks just in A MONTH! ===== Pre-Start ===== **All list below are must-have and all important!** * English. English is must-have capability to join in a FOSS community, if you cannot read this page without any assistance, please improve your English first. * For Internet searching, using Google or DuckDuckGo, don't use Baidu. Google is not a perfect search engine for respecting your freedom, however it is better than Baidu. For runner-up option, Bing English version is okay for temporary use. * Learn how to jump outside GFW, you can using ANY method to do it, because most international FOSS project are outside GFW, and GFW may interrupts connection to their websites, service, and so many things... Remember that if you use someone else's server to jump outside GFW, you have to concern about your privacy, ONLY encrypted connection (HTTPS) and encrypted content are allowed ALL THE TIME, especially login or submit any privacy information. ===== Personal ===== [1 ~ 2 days] This section introduces some personal preparation. - A English Name, better for participate in a international project. - (Important) Gmail/Or any other mailbox, don't use any mailbox service that its server located in China. For runner-up option Mirco$oft's Outlook is okay. - A blog, where from out of China could read and share (DreamWidth.org, Medium.com, Noblog.org, Blogger and WordPress are recommended for newcomer) - Update your profile and resume with skills and FOSS contributions (English and Chinese) - Generate a OpenPGP (GnuPG) key, upload it to keyserver, ask friends sign your public key, Ref: https://emailselfdefense.fsf.org and https://wiki.archlinux.org/index.php/GnuPG . Note that some project require signing a contributor agreement or other file using your OpenPGP key. ===== FOSS philosophies and basic skills ===== [2 ~ 3 weeks] In this section, some required philosophies your should know before every thing start. And some basic technology your should learn.To finish this section, you should using a Internet search engine like Google or DuckDuckGo to learn following topics. * Watch video **"[[http://v.youku.com/v_show/id_XNjQ0ODk2Nzgw.html|Revolution OS]]"** * Lookup Wikipedia about Free Software and Open Source, you should tell * Read the book **"[[https://github.com/beijinglug/fsfs-zh|Free Software, Free Society]]"** * (Important) Learn **FOSS licenses**. You could tell general difference between GPLv2 / Apache / BSD. * Install a GNU/Linux distribution, any one would be okay as you like. Linux Mint, Fedora or openSUSE is better for newcomer who has no any experience in GNU/Linux. * Learn basic Linux command and shell programing * (Important) **Git and GitHub** ( Reading "Pro Git" first, [[https://git-scm.com/book/zh/v2|Chinese version available]]) * (Important) Upload your programming homework or design to GitHub, ask others to improve your code / design. * (Important) Watching some projects. * Read and learn the project's Getting Start documents or newcomer document * Join in the community, subscribe their mailing list(s) and join in IRC chat * Learn the progress of their development * Learn how to submit Bug report * Learn how to commit code to their code repository and collaborate with others. //Where to find projects? A good resource is watching communities that participate [[https://summerofcode.withgoogle.com/organizations/|Google Summer of Code]] every year. It provides a list that you can find which one you prefer and involves in.// * Learn Markdown and write a README file to your project in GitHub. * Learn a programing language, Python, C, Java and JavaScript would be good for startup. ===== Community Coordination ===== [8 ~ 18 hours] To finish this section, you should using a Internet search engine like Google or DuckDuckGo to learn following topics. * (Important) Learn **IRC Chat** * (Important) Learning **[[docs:howtomailinglist|mailing list etiquette]]** and subscribe a project's mailing list, or [[https://beijinglug.club/mailing-lists/|BLUG discussion mailing list]] for newcomer. * (Optional) Use XMPP chat for personal chat https://beijinglug.club/xmpp_irc/, if you want to join in BLUG daily chat, it is required. * Wiki writing and write a wiki article. Note that, different wiki system using their own syntax, this wiki using Dokuwiki some others may using MediaWiki or some else. There are tiny differences between these wiki system. ===== Where to start you first step? ===== [1 ~ 2 week, depends on which type contribution you choose] These suggestions listing here are for newcomers who don't know how to start their first step. //It is unnecessary from the very beginning to end, you can pick up one that fit your ability and interesting. // * Translation (Localization, L10n) is a good and easy way to start, even you did not learn computer science. * Bug report and testing (Quality Assurance) are also easy for newcomer. It will help you familiar with FOSS community's working progress and collaboration tools. * Writing Documents requires more English writing skills, but it is a good point to join in too. * Coding, let's divide it into several parts: * Solve a bug. It is recommended from //bite-sized// bug, which means you can solve it by only few lines code even only one line. * Add a new feature to a exist project. * Refactoring a exist part of a exist project. * Developing new model for a project. * Start a new project at a community * Artworks. Every community and project needs artworks, UI/UX design, Website and front-end, LOGO trademark and other VI design. * Marketing. Most FOSS are free (as in free beer), but still someone to do "marketing". That's mean publicizing the project, proclaiming releases, call out contributors, event hosting, speech at conferences, social networking...etc. * System Administrator. Most big or international FOSS project has their own website to provide varies services. It require system administrator to maintain that website(s). * Education and training . You can also educate or train others with FOSS philosophies and skills list above! ===== Other Resources ===== * Open Source Guides by GitHub https://opensource.guide/ ===== Feedback ===== Welcome you feedback and error report for this guide. You can subscribe [[https://lists.nongnu.org/mailman/listinfo/blug-discussion|BLUG discussion mailing list]] and post your feedback to blug-discussion@nongnu.org or BLUG IRC chat at #chinalug @ freenode server.