├── .gitignore ├── LICENSE ├── cover ├── cover.png └── cover.xcf ├── manuscript ├── Book.txt ├── appendix-2.md ├── appendix-3.md ├── appendix.md ├── chapter1-bio.md ├── chapter2-philosophy.md ├── chapter3-contributor-mode.md ├── chapter4-gotta-catch-em-all.md ├── chapter5-what-you-can-do.md ├── chapter6-find-time.md ├── chapter7-documenting.md ├── conclusion.md ├── images │ ├── 1 │ │ ├── 25.jpg │ │ ├── cakefactory.png │ │ ├── camera.jpg │ │ ├── duccit.jpg │ │ ├── ffos-libro.jpg │ │ ├── italia.jpg │ │ ├── libro-xhtml.jpg │ │ ├── monumento.jpg │ │ ├── sbarbatello.jpg │ │ ├── talk.jpg │ │ ├── ts.jpg │ │ └── wceu.jpg │ ├── 2 │ │ ├── adorable.jpg │ │ ├── feedback.jpg │ │ ├── meme.png │ │ ├── open-philosophy.png │ │ ├── open-source-developers.jpg │ │ ├── survey.jpg │ │ ├── ticket.png │ │ └── who.png │ ├── 3 │ │ ├── body-language.jpg │ │ ├── bugzilla.png │ │ ├── opensourcemodel.jpg │ │ ├── pyramid.jpg │ │ ├── turn-off-on.jpg │ │ ├── wisdom_of_the_ancients.png │ │ └── xkcd-pyramid.jpg │ ├── 4 │ │ ├── ask.png │ │ └── principles.jpg │ ├── 5 │ │ └── logo.png │ ├── 6 │ │ └── contribute.jpg │ └── extra │ │ ├── family.jpg │ │ ├── fosdem-2017.jpg │ │ ├── italy.jpg │ │ ├── no-used-computer.jpg │ │ └── tweet-kde.png └── preface.md ├── readme.md └── tools ├── build.sh └── count-todo.sh /.gitignore: -------------------------------------------------------------------------------- 1 | *.pdf 2 | -------------------------------------------------------------------------------- /cover/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/cover/cover.png -------------------------------------------------------------------------------- /cover/cover.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/cover/cover.xcf -------------------------------------------------------------------------------- /manuscript/Book.txt: -------------------------------------------------------------------------------- 1 | preface.md 2 | chapter1-bio.md 3 | chapter2-philosophy.md 4 | chapter3-contributor-mode.md 5 | chapter4-gotta-catch-em-all.md 6 | chapter5-what-you-can-do.md 7 | chapter6-find-time.md 8 | chapter7-documenting.md 9 | conclusion.md 10 | appendix.md 11 | appendix-2.md 12 | appendix-3.md 13 | -------------------------------------------------------------------------------- /manuscript/appendix-2.md: -------------------------------------------------------------------------------- 1 | -# Appendix 2 for Tech Speakers 2 | 3 | This appendix is not just for developers or people that speak fluently Jargon. It is open to everybody that needs to talk about tech or needs to improve communication skills. 4 | 5 | ## Schema to expose at the best your thoughts 6 | 7 | * Explain a choice: 8 | * Using the time as your ally to convince more and more people to use the rule "Blame is for past, values for present, choice for future". Writing your proposal in this way helps you to define in your mind what was before and what you are proposing using the real situation as base. It can be something easy to understand but often during discussions we confuse the verb tense, in this way you are processing and writing the information in the most clear way. 9 | * Write in 3 steps: describe benefits, show that is easy, show how to defeat the other options. Before to show the conclusion you can leave also few options or alternatives. 10 | * Understand the target: 11 | * If you want to sell a washing machine you need to know if the customer is someone who clean plates on their own or prefer to trash them. As you are proposing something, you need to define the target or the audience, in this way you can change the language or terms and also explain differently. 12 | * Where is the value: 13 | * People will listen to you more clearly if you are talking using your experience or anecdotes. As humans we love stories, also if we can identify ourself, this way to expose things is the way used in [TED talks](https://www.ted.com/). 14 | 15 | ## Ways to get inspiration (especially for funny facts) 16 | 17 | The idea is that every talk should contain part of our personal life to better explain the topic and why we care. 18 | It is also better if we can add funny facts to add more reality but also a different tone to the speech given to the audience. 19 | 20 | * New users with the technology 21 | * Compensation 22 | * Social media gaffes 23 | * Experience-based learning 24 | * Differences with languages 25 | * Proper planning 26 | * Budgeting 27 | * Confidence 28 | * Comfort zone 29 | * Statistics 30 | * Habits 31 | * Asking the right questions 32 | * Innovation 33 | * Expectations 34 | * Marketing 35 | * Mistakes 36 | * Embarrassment 37 | * Productivity hacks that didn't worked 38 | * Talking to customers 39 | 40 | ## How to talk to the audience 41 | 42 | If you have never given a speech to an audience, the first issues are: 43 | 44 | * I have no idea where to start 45 | * I am not a good speaker 46 | * I am afraid of the public 47 | * I have nothing interesting to say 48 | 49 | How to fight these thoughts? 50 | 51 | * Take inspiration from others! 52 | * Pretty simple, look how others talk even of different topics. Consider interviews of famous actors to understand that is not so difficult too. Watch Ted Talks for example or search on YouTube for talks. 53 | * Start with a simple and tiny goal, step by step! 54 | * For example draft a presentation and try it in your room 55 | * Be positive about your talk! Without this, everything you will do in your life will be a mess. 56 | * Don’t start with apologies because people don’t like them. They are here to listen to your topic! 57 | * Practice is the way, also taking the time to record 58 | * On the long run your recordings are the best way to see where you have to improve 59 | * Fear of the public is helpful to do better 60 | * Fear is a way to empower us to fight it, to do what we want 61 | * Don’t memorize but practice; it's better for your "show" 62 | * Memory is for poetry, you need to speak with your feelings on the sleeve 63 | * Take your time before starting to reorder your thoughts and be more fluid 64 | * Usually prepare a schema of your points for the slide that will be your talk path 65 | * Take confidence with the topic of course! I don’t want to listen to someone who talks about something they don't know, because I am losing my time. 66 | * People come to the event to listen to you, give them something that deserves their time 67 | * The topics are better when coming from your personal background 68 | * As per the previous point, every topic that is personal is better to give more trustability about what you are saying 69 | * Put examples in your talk because everyone can follow them and are very attractive and easy to explain 70 | * It is demonstrated that stories, jokes, graphs and images can be helpful examples to let people easily remember your points 71 | * If you have no idea where to start: 72 | * Use a question or a quote 73 | * With an image 74 | * With stats 75 | * Details improve the quality of your talk 76 | * With the personal experience 77 | * With strange situations that can be hilarious or easy to explain and get to the point 78 | * Statistics are objective and very easy to understand 79 | * Why you are here, you are a human and people want to know why are you here 80 | * Again, personal experience does the difference 81 | * First issues about the topic and how to resolve them 82 | * People go to events to learn how to do better or discover new things 83 | * Be part of the public 84 | * Say what the people want to listen and understand your audience 85 | * Keep your tone of voice in check, don’t speak at a monotone rate or you’ll be boring for the audience 86 | * Eye contact is important, there are different ways 87 | * Look for a far away point in the middle of the audience 88 | * Look specific people that are interested 89 | * Don’t ever give your back to the audience 90 | * Your posture needs to be relaxed and confident 91 | * When you want to do a comparison about stereotypes or experiences, never generalize to avoid issues with people that fit in that only for a part and avoid conflicts 92 | 93 | Don’t forget that every discussion has 4 points: 94 | 95 | * Persuade 96 | * Inform 97 | * Convince 98 | * Entertain 99 | 100 | If your talk or discussion has all the points, it will be probably an amazing experience for the audience! 101 | 102 | These points are not mandatory, but are helpful to get ready and draft your talk. 103 | 104 | Your backup sentences in case of issues: 105 | 106 | * If your joke falls, say "Pretend it was serious" 107 | * If you lose your train of thought: "Sometimes silence says a lot, but not this time" or ask the audience "What I was saying?" when someone reminds you "Oh cool, someone was listening" 108 | * If the room is too hot say a joke about the thermostats melted and you can't change it or if it's cold you can say that you saw few penguins around that want to follow the presentation 109 | * A big noise outside the room "That’s what we do to people who try to escape my talk" 110 | 111 | ## How to write a talk 112 | 113 | * Don’t forget to talk about yourself, you are the guru for that topic for the attendees 114 | * Usually the first 5 minutes are very important because the audience is going to decide if your talk is interesting or not 115 | * So an introduction of the topic can be very important 116 | * Show a concrete example/way to fix a statement 117 | * Be specific when you can and generic to be more serious on what you are saying 118 | * Identify the problems of your proposal 119 | * Start every slide with the important part of the content (it will be easier to remember) 120 | * Think about the audience skills 121 | * Identify as a person with that problem, what do you want to listen to? 122 | * What you are trying to promote 123 | * The topic points focused simply 124 | * Understand the mindset of the technology you are talking about 125 | * Flames are not very good during a live talk 126 | * Create in your mind a boilerplate version that follows the slides and an advanced version, to be used for an audience with more skills where you can use the slides as reference to explain more in depth 127 | * You are not a teacher, you are a person with experience in that topic and you want to show your experience 128 | * Simplify, it’s important but don’t forget that sometimes it’s not the best way, but you can divide the topic into different slides 129 | * The people can forget the focus so act like a showman to gather the attention from them 130 | * Funny images (I am addicted of GIF animated or meme) 131 | * Quotes are difficult to remember or to understand for an audience that doesn’t know that quote 132 | * When you write a new talk, try to understand if the slide order is right or you are missing something 133 | * The practice is very important 134 | * The title talk needs to be interesting and curious 135 | * Use a title generator to gather inspiration 136 | * Empathizing few words helps to conveying a message 137 | * The slides need to be useful also without attending the talk itself or remembering it 138 | * Many slides with only images in that case are not very useful 139 | * Last slide for question with your data like email and a link to see the slides again 140 | * I also have a page with the list of all my talks, in that way they can find also other things 141 | 142 | ### Improve the talk 143 | 144 | * A talk without improvements is not a good talk 145 | * The world evolves with new technologies and things so it’s important to update it 146 | * If you get often the same questions in your talk, add that information in the talk itself 147 | * The slides can't change but the way you explain the things can change based on the audience 148 | * Improve the examples, often they need to be updated because for example after a year it’s not working anymore 149 | 150 | T> Tips 151 | T> 152 | T> * The talk needs to be done in standing up 153 | T> * No stop words, like ehm uhm, but in that case stay silent 154 | T> * Exercise talking about something for 30 seconds, register it and listen to it. Repeat until you will stop to say them. Do it for different subjects for weeks every day, this can help you to speed up on building sentences in your mind. 155 | T> * You need to hear on recordings when you are saying them, in that way you can prevent them, it's difficult but on the long run you will see the effects 156 | T> * Try to practice the talk before the talk 157 | T> * Check all the slides and the content before the talk 158 | T> * Arrive in the room 30 minutes before your talk to check if everything is fine 159 | T> * Train yourself on improvisation, try the Battledeck (or Powerpoint Karaoke) with friends. It is a slide deck with random images where the participant have a specific amount of time to talk about the same topic. 160 | 161 | ## How to write a tech article 162 | 163 | Every tech speaker sooner or later will write a tech article or manage the personal blog. 164 | 165 | Let’s see which are the best rules for this task (helpful also on preparing a talk). 166 | 167 | * The title needs to be intriguing 168 | * If you have no idea for a title, use a title generator like [http://www.title-generator.com/index.php/best-online-title-generator.html](http://www.title-generator.com/index.php/best-online-title-generator.html) 169 | * Start with a question, an image or with stats 170 | * Start the paragraph with the important topic and later on explain it 171 | * Divide the content into paragraphs to avoid the "text wall effect" 172 | * Break the line when a specific point was completed 173 | * It is helpful to avoid repetition 174 | * On the same block the same concept 175 | * Conclude with a strong image to enforce your point (memes usually are the best option) 176 | * What is the purpose of the article? 177 | * Order the information using this schema: 178 | * 1st point: 179 | * Start with the same knowledge ground of the reader, for example, if your topic is about a new javascript library, the reader probably now has no idea about what to do, so it is better to start by explaining what was required to do before the introduction of this library 180 | * Put at the top the important things to explain later 181 | * Start with a simple example or point to be comfortable to the audience 182 | * 2nd point 183 | * Talk about news, details or with advanced view 184 | * 5th W order 185 | * 1st point 186 | * What, When, Where 187 | * 2nd point 188 | * Why, How 189 | 190 | * When you want to do a reference about something already written few lines above, do a little excerpt of that to avoid to the reader to lose the reading point 191 | * Every item of a list needs to start with a different word 192 | * Avoid text blocks with a lot of text, better to split them 193 | * Metaphors or analogies are more easily remembered by the reader, especially at the top 194 | * When you are using a technical term, explain it on the first use 195 | * Be original with your content! 196 | * An example can be to start from the conclusion and explain with the content. In that way the reader already knows what will be the focus and can be more interested 197 | * Every text needs to explain at maximum only 3 ideas and develop the surrounding content 198 | * 3 ideas are enough because the reader will more easily remember them 199 | * Remove the excessive things that are not important for your content 200 | * Put "Sources" or external links improves the quality of the content (and a bit the SEO) 201 | * Don’t forget to ask feedback on the content 202 | * Don’t forget that you are writing to inform the reader, so what is missing to them to understand the content? 203 | * The use of paragraphs lets you do a brainstorming based on these blocks, and every block is helpful to reach the conclusion 204 | * Don’t forget that example case are very easy to remember to the reader 205 | 206 | ## Be ready for a CFP 207 | 208 | * [http://scottberkun.com/2013/how-to-write-a-good-bio/](http://scottberkun.com/2013/how-to-write-a-good-bio/) 209 | * [http://lucybain.com/blog/2016/conference-proposal-ideas/](http://lucybain.com/blog/2016/conference-proposal-ideas/) 210 | * [http://scottberkun.com/2011/speakers-checklist/](http://scottberkun.com/2011/speakers-checklist/) 211 | * [http://www.inc.com/sims-wyeth/how-to-capture-and-hold-audience-attention.html](http://www.inc.com/sims-wyeth/how-to-capture-and-hold-audience-attention.html) 212 | 213 | PS: Keep a copy of your bio for the future, it’s boring to write your life every time. 214 | Three versions as one sentence, medium version and long version. 215 | 216 | Also, refresh them every year to update about your actual interests. Don't forget to check [Developer Advocacy](https://developer-advocacy.com/)! 217 | -------------------------------------------------------------------------------- /manuscript/appendix-3.md: -------------------------------------------------------------------------------- 1 | -# Appendix 3 for Mentors 2 | 3 | ## Open source is not for everyone 4 | 5 | There is a this huge misconception that, because it’s free, it’s for everyone. Excluding the fact that open source doesn’t mean that it’s free, this is basically wrong. 6 | People are interested in different things, who in dressing, who on sports, who on improving the awareness about the quality of the technologies around us. 7 | Who is contributing to open source often is part of the last group, maybe is someone curious because it’s a user or because they found something that involves also their other interest areas. 8 | 9 | I> For example, I started coding my first website at 16 years old about... Dragon Ball, so pursuing my focus moved to develop games about it... 10 | 11 | All this kind of people need to be always motivated to do more or better to move on the focus of the project. 12 | Also, you sometimes need a break or to be engaged again, it’s a continuous work to stimulate them that someone should do in the right way. 13 | People need to be gratified for what they do, in different ways and this is on you. 14 | The coaching way of doing things is very helpful on motivating but also on optimizing a lot of common issues or tasks on project/people management. Coaching means that people around you succeed and it is something that you want in an OSS project. 15 | 16 | ## What it means to be a mentor 17 | 18 | The mentor is a person that follows you during your volunteers journey and needs to be ready for this task. 19 | Also, their personal experience in the project or skills are very important. You are the first mentee of yourself because you approached probably the same issues, and you probably resolved them so you can give help quickly and easily. 20 | It happens that people don’t want to be involved as mentors because is time consuming, requires a lot of patience and a good mindset in communication and skills too. 21 | This doesn’t mean that you need all them, but for sure being skilled in communication is important, because people will ask you a lot of things and on the way you reply, they will define how much they can trust in you and what they can ask you. 22 | Who wants to talk to a rude person (and probably who likes pineapple pizza)? You will find someone that is more friendly, but this doesn’t mean that you need to be a friend, only someone that you can talk to and that don’t bites you. 23 | 24 | A pragmatic analysis I get from the role mentor came from the article [Why we stopped making Einsteins](https://erikhoel.substack.com/p/why-we-stopped-making-einsteins?s=r), where the reason basically is the fact that they had a tutor, or they got a personal teacher at home. This lets them grow from the experience of skilled people that was shared to them when they were very young people. 25 | A mentor is sharing own experience to others to let them grow with that like this book, just because we want to improve the world itself. 26 | 27 | The Mentor's path: 28 | 29 | * Analyze what kind of activities require a mentor and why 30 | * Verify the priority 31 | * Be a friend/supporter of the mentee 32 | * Understand the skills of the mentee 33 | * Help in case of missing skills 34 | * Help people in doing activities that generate experience 35 | * Be frank, constructive and work together for the value of the mentee itself 36 | * Define your expectations 37 | * Lead by example 38 | 39 | There are two approaches for a mentor that are Formal or Informal and this depends on the type of activity. 40 | The best way to be a mentor is not Authoritative or Democratic but in a Coaching way that is the best for educational and quality of the friendship in this task. 41 | The coaching way is very simple and requires skills for specific activities as already explained in the document. 42 | 43 | I> Don’t forget that the relationship with a mentor is a long journey and requires a full view of the activities and goals. 44 | 45 | You will fight between two aspects that are Convention vs Consistency, and they are both important. So you need to balance that in your routine! 46 | 47 | Conventions are your workflow or the community convention on tasks, that you need to put in the plan but as mentor you need also to be elastic on managing the Consistency. Because you are helping a new volunteer that doesn’t understand them probably, so initially you need to see which rules you can ignore and later “migrate” everything with the mentee. 48 | 49 | ## Motivate your mentees 50 | 51 | The volunteers need to be motivated in their activities so don’t forget to ask feedback on the activity itself about: 52 | 53 | * What works? What doesn’t? 54 | * What would you like to do? 55 | * Do you think these activities helped you to learn something? What? 56 | * Do you think the workflow can be improved? 57 | 58 | Remember, feedback are important to gather information but also to give trust to the volunteer to be a part of a community and not a single and alone piece of a puzzle. 59 | 60 | The rules are: 61 | 62 | * Don’t be defensive or against feedback but document all them, because they can help in the future in a manner that you don’t imagine now. 63 | * Reach out often to the mentee or you will lose the volunteer, so get in touch twice a month is the best timing initially (to not become annoying). 64 | 65 | Remember that feedback are not useful to improve only the activity/project but also yourself, to learn how to ask the right question in the right moment. 66 | Every feedback needs to be explained to understand what is going on, yes or no are not enough. 67 | Basically without context everything can be misconfused from everyone. 68 | 69 | Also, you have to ask feedback to the volunteer to understand what’s going on: 70 | 71 | * Do you like to work on this project? 72 | * Do you like to work in this team? 73 | * What you want to do next? 74 | * What was the main or bigger problem in the last months during activities? 75 | * What are your activities like when you are proud of yourself? 76 | * Did you learn something new? 77 | * Did you need it a mentoring in the last months? 78 | * Did you help someone as mentor? 79 | 80 | The mentoring period depends on your needs, but the ideal is one month because the people can remember better what they have done. 81 | Also, trust the feedback from people with experience but also the feedback from new people because they have a different point of view. 82 | 83 | T> When a new product is in alpha/beta status, it's not a good thing to send to review to all the influencers or investors. Instead it should be sent to a group of testers to validate the assumptions, and this can be done also inside the community. This can help to draft a better activity or roadmap that later can be disclosed or discussed with all the community. This helps on avoiding forgetting something and checking that the testers are aligned and can understand everything. What will happen when you disclose something that wasn’t analyzed in the right way? Noise, discussions, ranting, rumors and so on. Open source doesn’t need them so often, even if everyone loves *flame wars*. 84 | 85 | ### How to fight demotivation 86 | 87 | Demotivation happens usually for 3 reasons: 88 | 89 | * Lacking confidence on the project/activity 90 | * You need to understand the reason and create confidence 91 | * Poor results 92 | * Define new objects and understand what was the reason 93 | * Hints not enough 94 | * Ask yourself what it's missing and do it 95 | 96 | The conflicts also happen for the same reasons but also for: 97 | 98 | * Missing information 99 | * Goals not defined 100 | 101 | To improve and avoid these problems, usually you can start to improve the communications because often the misunderstanding is there. 102 | -------------------------------------------------------------------------------- /manuscript/appendix.md: -------------------------------------------------------------------------------- 1 | -# Appendix 1 for Community Managers 2 | 3 | ## What is a community manager? A Project Maintainer? 4 | 5 | There are a lot of resources about this topic but this is my book, so this is my version of that definition. 6 | First of all a Community Manager is a leader, and this role requires you need to delegate and find new areas of business ehm of activity. 7 | A nice example of community management in a TV series is [”Chuck”](https://en.wikipedia.org/wiki/Chuck_(TV_series)), BestBuy is a tech supermarket with a lot of different people, background and their various lives. The main character is the de facto leader of the supermarket so others follow him even if he isn't their boss. He listens to the various people, knows them, knows how to move and to be the middle man with the authorities but keep also different lives. 8 | In our case is not a spy but maybe a father, a worker, a comics collector or a pirate. 9 | Another TV series is [”Scrubs”](https://en.wikipedia.org/wiki/Scrubs_(TV_series)) with different characters, various roles, different lives but common interests or workplace that have to coexist for a purpose. Everyone with their needs and different behaviors but despite that they move on. 10 | I like the pop culture and the reference to cinema/books/comics world because it's easy to use the learning transfer (we saw already it in the book) to them and [learn how to do not do things](https://blog.tdwright.co.uk/2020/05/07/9-things-westworld-can-teach-us-about-software-engineering/) or how to manage a company (check Silicon Valley TV series as example). 11 | 12 | Another point is a phrase by [Italo Vignoli](https://twitter.com/italovignoli), one of the founders of The Document Foundation and one of the OSI council members, that said to me about the role term Community Manager *"A community cannot be managed because everyone does what they want"*. For me this is true, you aren't a community manager but more a community leader that creates a path where others converge because they trust you, not because someone placed you for that role. 13 | 14 | Basically a community manager is like a boss at your same level, that is more skilled on other areas like communication, relationship and has a wider knowledge in areas that you don't know. 15 | Often this role is confused with the Project Maintainer or Maintainer, very common in OSS (compared to community manager). A maintainer is a technical role, someone that works to keep a software to get fixes, new features, code reviews, define roadmap, that says no, but this doesn't involve at all that should care also the community. 16 | About be a project maintainer there are a lot of resources (also in this book) but there are also other guides like [opensource.guide][https://opensource.guide/best-practices/] or [from Linux Foundation](https://www.linuxfoundation.org/resources/open-source-guides/winding-down-an-open-source-project/). 17 | 18 | A community is a group of people interested in a specific topic that is pursuing with passion, but needs some directions, some management and leading. There are tons of people that are community managers but they don't feel that this role is for them, and probably they are right. Honestly I don't think of myself as a community manager but someone that wants the project living and taking this responsibility so others can do what they want (and me too). A good manager is someone that is honest because isn't afraid of discuss about everything with the others, also their ignorance. 19 | 20 | ## Divide your community members to various levels 21 | 22 | As we saw in this book a project can have different areas of involvements or activities and this based on the volunteers availability. 23 | It is important to organize at the best what you want to do as community managers divide (just for you) the volunteers in various levels, so based on your needs you know what kind of people to reach. 24 | We can define as example in this way: 25 | 26 | * Author/Owner - The creator of a project or the leader 27 | * Maintainer - A different role than the previous that is doing the hard work of keeping everything working and also checking for issues or new opportunities 28 | * Contributors - People that can work based on their time on specific activities 29 | * Community members - the whole group of people that is moving on the project 30 | 31 | This groups of people can have as example different communications or different knowledge of what is the project is doing. Keeping an eye on those will help you to find people "to promote" on different tasks that can require more accountability as example. 32 | It is important also to understand the kind of users you have in the community and their interests, in the Conclusion chapter in the Other Resources section there are some interesting readings about the various types of people that can exist in a community. This study can help you on decide what is better to do and engage more the people that you have and new ones. 33 | 34 | To know better about the various jargon or meanings from the various kind of users, I suggest to you to check this talk by [Italo at Fosdsem 2020](https://fosdem.org/2020/schedule/event/user_standing/). 35 | 36 | Another view can be to look at your member like an employee, you want them happy and that they can be productive. At the same time you want to lead them but also [give freedom to experiment and express their creativity](https://blog.pragmaticengineer.com/what-silicon-valley-gets-right-on-software-engineers/). Or you can learn from [The Office](https://www.quill.com/blog/workplace-culture/company-culture-tips-from-the-office.html) tv series some tips. 37 | 38 | ## How to do productive discussions 39 | 40 | One of the problem in a community is that is easy to change the focus or the point of the discussion, in other words to go off-topic. This isn't a specific problem of the meetings but with any discussion from emails to chat. 41 | My experience taught me that in a chat, if you sent 2 messages (not 2 questions in the same message), people will reply to just one. 42 | 43 | There are 2 kind of discussions, productive or useless, as A maintainer or community manager is important to get the maximum to save your time, because communication is a time-consuming task. 44 | How you can recognize useless discussions? Check this list: 45 | 46 | * When are used a lot of hyperboles 47 | * There is a lot of repetition 48 | * There are tons of new ideas without any clear proposal 49 | * Noise detection 50 | * Comments from inactive people can be very dangerous: 51 | * They are not aligned with the project status 52 | * They are just lurking so don't have any experience of the community life of the project 53 | * Can act as troll because you [just changed their workflow](https://xkcd.com/1172/) 54 | * Doers are usually silent and is important to reach them 55 | 56 | These are basic rules but you need to give a different weight to your evaluation based also on the previous section. Every volunteer is important but some can have more relevance on the decisions just because they are alive and participating in what you are doing. 57 | 58 | ## How to manage a meeting 59 | 60 | Meetings can be boring so it’s important to have an agenda with strict times to be sure not to forget something and to keep at pace with the plan itself. 61 | During the meeting take few minutes to talk about the purpose of the meeting (also on the invitation email/communication) and the workflow of the meeting. 62 | Preparing the attendees is important to improve the quality of the meeting itself and to be proud of what was done during this time, so it is not going to be a boring meeting. 63 | The agenda of the meeting is important, and also the titles of the various moments that help to remember the topics (a nice tip can be to add a prefix on your communication like "Website localization - First steps" or "Event organization 2020 - Venue"). 64 | The order too, put on top the topics with more priority, avoid jargon during the meeting and don’t forget to leave time to reply to questions and also the last words to the attendees. 65 | Don’t forget that someone needs to take notes of the meetings for the people that missed it and to write a report, also define a specific amount of time to avoid off topic discussions and be on track. 66 | At the same time it can be important to have a moment during the meeting for open floor questions, but just define it on your agenda so everyone can plan what to ask in that slot. 67 | 68 | ### When 69 | 70 | The new volunteers need to participate to feel a part of a big team, so is useful to do one monthly, biweekly or weekly meeting about the status. 71 | When you are working on a specific project you can organize other meetings with their plan and specific people. 72 | It’s important the timing of meeting is chosen gathering team’s availability, and remains almost unchanged during the iterations to avoid issues. 73 | There are 3 types of meeting: 74 | 75 | * Live meeting: meeting people in real life is important but you always need an agenda with very strict timings 76 | * Online Text meeting: these meetings have a little agenda of 2 or 3 points and someone directs them. They are helpful to vote because they are very quick and can gather many people and are easy to follow for new people that don’t need to join to express their opinions. At the same time they can be made public to allow many people to follow them. 77 | * Online Video meeting: Like live meetings but online. In that meeting people can be easily distracted or bored, so look on the agenda. 78 | 79 | These are rules for all the volunteers, but they are important for a new volunteer! 80 | Because they show you are very well organized and motivate them to join the next; also don’t forget to say hi to the new volunteers and ask them for a little introduction of themselves. 81 | 82 | ## How to approach a problem/improvement or how to organize a new project/team 83 | 84 | In every team there are discussions about new ideas or problems/blockers that need to be solved and there are different tricks to speed up and define a roadmap. 85 | 86 | * Try explaining only with words what are the goal of that, ex: 87 | * Get fun 88 | * Accountability 89 | * Involve 90 | * Recruiting 91 | 92 | This points will be your compass on the discussion (also will invite others on helping you because the goal is the same), also a reference or the reason of the plan itself! 93 | Gather ideas with these words to speed up the process (it's the first step) and you can do it in one of the many ways already explained. 94 | Also, you need a person who will be the lead of every step, not multiple but one or two. 95 | 96 | Start also with few people but clear goals and a clear purpose. Create a group with similar skills in that way they can focus better and follow a usual way to do things for their type of skills. 97 | 98 | Also, don't forget to classify the various tasks for skills, so is simpler for you to assign it (and get a result), but also find the good first task for newcomers. You always need simple things for new people because this is the part that shows how much is easy to join the project or contribute to it (consider busy people, they want to contribute too). 99 | 100 | Don’t forget to organize periodic meetings! 101 | 102 | ### Analyze a problem or improvement 103 | 104 | After the organization of the meeting, the workflow after that will be to organize the priorities and: 105 | 106 | * You are in a team, even if you are the leader, so ask for feedback or a solution 107 | * Create a user story or a persona 108 | * Select a precise number of people for feedback 109 | * Ask questions even if the solution is already known 110 | * Nothing is foregone 111 | * Leave of the info about this situation 112 | * Pick few goals and make a comparison between today and ahead 113 | * Don’t forget that coaching is different to feedback 114 | * Don’t forget that the attendees are not you 115 | * Lead by example 116 | * Say thank you at the end of the meetings and on feedback 117 | * 5 why 118 | * This approach came from the agile method, it consists in asking for 5 times why in a cascade way about the problem to go deeper in a simple way to analyze later and know the environment when the problem showed up 119 | 120 | With this approach you will improve the relation with people and also the organization and become more able to analyze the problems. No more boring meetings! 121 | 122 | ## How to communicate 123 | 124 | Communication is the core business of a community where the feedback is the fundamental rule (check also the next appendix about this topic). 125 | Also, don’t forget to avoid Jargon or explain it when you use it. 126 | In every communication it’s better to follow the rule of 7 communications. 127 | 128 | * **Completeness** 129 | * Be complete in everything in your communication to avoid losing time and to allow you to be more productive, as example define goals. 130 | * **Conciseness** 131 | * Complete of course but also concise to simplify the reading. More text means more mistakes. As for developers, more code means more bugs somewhere. TED talks seem to have the rule to expose the plan in 12 seconds. 132 | * **Consideration** 133 | * Don’t forget that your audience needs to follow you so it’s important the text is understandable from everyone of your audience. 134 | * **Concreteness** 135 | * The object of the communication needs to be complete and clear to everyone (maybe evaluate the use of future tense). Dividing the communications into different points is very helpful. Basically don't go off topic. 136 | * **Courtesy** 137 | * No negativity, not be the victim and be open. It can help with all of your messages and don't forget to send it at the right time during the day. 138 | * **Clearness** 139 | * The message needs to be understood not for the amount of words or the quality of the language, but for the context. Putting the proof before the conclusion is the TED way or inductive reasoning. 140 | * **Correctness** 141 | * Be sure of everything that you are saying to avoid conflicts or misunderstanding. 142 | 143 | I> "Inductive reasoning is distinct from deductive reasoning. While the conclusion of a deductive argument is certain, the truth of the conclusion of an inductive argument may be probable, based upon the evidence given." [Wikipedia](https://en.wikipedia.org/wiki/Inductive_reasoning) 144 | 145 | When you have no idea where to start with a communication, the simple way is writing a list with every point, prioritize and only then writing your message. 146 | Because you are part of an open project, you need to do open questions to the people too. These open questions are not for better clarification but let the others explain what they mean, because a lot of things are not specifically communicated with words for example. 147 | 148 | There are different tasks about communication and for a community manager is important to keep a public communication on high quality standards, to save time but also to be more transparent, create an history, create a workflow and improve the reputation of your project. There are 2 ways for that: gather the common questions of newcomers of the community and create some sort of documentation or keep a period report of what is happening/ed in a project. Those are simple ways to improve the quality of communication in your project that on long term can have a lot of benefits. 149 | 150 | ## How to talk with people 151 | 152 | * Don’t criticize, condemn, nor recriminate 153 | * In this way your position as leader is friendly and you can create a different atmosphere where people, even when doing wrong things, can continue to work and experiment 154 | * Compliments, even for little things, are important for the people involved because they see that you care about what they are doing. You need be honest of course! 155 | * You are a leader so you need to be an example for them to motivate the others to do the same 156 | * As a leader you need to know about “your people” so keep updated about their life 157 | * Smile because no one wants to see sad people 158 | * Let other people talk about themselves and their ideas/suggestions 159 | * Talk about the stuff that interests the audience 160 | * As we have already seen in this doc it’s very important to get attention from the audience that because that is what you want 161 | * How to persuade others 162 | * Avoid discussions to be the winner again. You are a person like the others so be human! 163 | * Respect the others ideas/thoughts 164 | * If you are wrong, admit that as fast as you can before the situation goes worse 165 | * Start a discussion about a comparison with your experience that was worse and see if the audience is doing better. In that way you are more friendly and human. 166 | * At the same time in a discussion is helpful to start from a point where both the parties agree, so it is possible to prepare a ground to move further the discussion 167 | * Be always friendly 168 | * Make questions because only the people humbling in front of others are human and friendly because even if you are the boss they need help from you. No orders to you people! 169 | * The reputation: even if people are wrong is important so let them “save” themselves so they will perceive you as a good leader 170 | * Motivate of course, because it's difficult to accomplish something with the wrong mood 171 | * The audience needs to be happy to do what are you saying 172 | * Convince people to agree with you from the start of the conversation 173 | * This way is very powerful to convince people, usually start from a common topic letting you introduce more topics which initially the others are not interested in. Ex: Chrome spies you a lot about what you do while surfing the net, while Firefox does not and at the same time it’s very customizable with other things 174 | * Let others talk 175 | * Again, let the people share their thoughts so you can find more points of discussions 176 | * Let others have the idea 177 | * For example you want a new feature, discuss with a developer about the issue, probably they can improve it and fix it for you 178 | * Think as one of the audience 179 | * Challenge with them 180 | * Competition often can create a good mood and spirit inside the community 181 | 182 | ## How to write reports 183 | 184 | Every community to be transparent needs to write report about everything from an event, meeting or a roadmap. 185 | 186 | All the points about communications can be used for that but there are more things not to be forgotten to help you write a report that is helpful after a year or to people wanting to join you with no background because often reports are public. 187 | 188 | * Divide the discussion into different points 189 | * These points are the important stuff that needs to be separated from the rest for better readability 190 | * For every point write a tiny sentence 191 | * When finished review all the points and start improving on the sentences 192 | * Probably you will see that you need to add more points 193 | * Add photos or external resources to improve the quality of the report 194 | * Don’t forget to indicate at the beginning the names of the people that joined 195 | * Also, remember the compliments 196 | * Divide the discussion on a daily basis to show the progress 197 | * Don’t forget to do a recap about: 198 | * What you learn in the event 199 | * What are the first step to take 200 | * What are the problems identified 201 | * What you like of this event and what are the problems and where there is an improvement margin 202 | * Probably it’s too soon for a timeline but a draft can be very helpful 203 | 204 | T> Don’t forget to do yearly reports, campaign reports or other kind of reports. They are useful to show the status and how much community is healthy, they are easy to share online and improve the project brand. 205 | 206 | ## Why you need a script for your next event 207 | 208 | This is something that I learned in Mozilla, with new volunteers at their first public event or talking the first time from the booth. 209 | The big issue was every time they didn’t know what to reply to X or Y, so how can you help them to be more comfortable? 210 | Quite easy, do a list of topics with a recap about the status or description to share before the events, in this way the volunteers have a reference to study, they learn something new and you are more relaxed during the event. 211 | About the topic: it is on you, usually they are chosen from: the most famous, the most discussed on internet, the biggest new features, a common issue and also the frequently asked questions. 212 | 213 | ## Communication channels 214 | 215 | Every culture has differences but there are few rules that apply for everyone. 216 | 217 | * Facebook groups: they can be a mess because there is no moderation of the texts and can become very spammy 218 | * Facebook Messenger: it’s a chat and requires you to add every new person on your Facebook profile, that usually is private so not everyone wants to add everyone on it 219 | * Telegram: is the best choice because has bots, link previews, moderation tools, links/media recap, client desktop/mobile and is open source (there are open source addicts that don’t want to use proprietary software) 220 | * Hangouts/Hangouts Meet/Zoom/Jitsi: it’s useful online for video meetings but remember that it allows a maximum of 10 people on the free plan 221 | * IRC: it’s the classic solution on open source to chat but for the new generation and for the mobile world it’s too difficult to configure and understand 222 | * Matrix/Slack-like: it is a IRC 2.0 that may improve the organization in groups of people and usually a bridge between IRC and Telegram can improve the migration. Slack have problems on onboarding new people because the free plan is very limited to 10000 messages (also on private groups and is very easy to reach that). It is not open source and there are many alternatives without that problem. These tools, like Telegram or Matrix, have integrations such as bots. 223 | * Mailing list: like IRC it can be annoying and noisy, but some communities still uses it and it is not possible to avoid it, but you can get answers more easily as a lot of people are following it 224 | * Discourse or forum: with a modern interface they work very well with notification and other stuff 225 | * Collaborative Documents: they are important to work together on a plan. Etherpad in the open source world is the best, but they are very poor in features like: comments or suggest changes, notification and classic features of a text editor. Usually Google Docs are used, covering all those features but the URLs are very complicated and some people don’t like that because they are not open source. 226 | 227 | ## How to do a roadmap 228 | 229 | ### Briefing 230 | 231 | Objectives and Key Results, is a decision framework to improve the group working and define what is the result that you are trying to achieve. 232 | 233 | When you have an OKR (like to grow the followers in 3 months or write a new set of documentation, pages, etc...), the first thing that you have to do is what you want to achieve personally. 234 | Take an example: at the end of the quarter I will reach out to all the team leaders with a survey to introduce something new that in the meantime I will work on. 235 | The first thing is gathering the resources that you need to move to your final goal. 236 | Without it, you cannot start on prepare the plan, so an overview about documents, contacts, tools etc. is important to see if something is missing. 237 | The next step is to understand if what you have is enough or needs to be improved and based on the resource itself give them different priorities and assign tasks to other people (as example). 238 | 239 | ### Document Structure 240 | 241 | When you have an idea of what you already have, you can work on what is missing. 242 | The usual structure of the document to help you to do the various tasks and the final proposal is: 243 | 244 | * Recap the actual status in the document as reference for others (this will help you during reviews as example) 245 | * Analysis of what to change with details and explanation (add also user cases) 246 | * Do a final proposal that is a recap in a bullet list (this simplifies for feedback and for the others to remember the various tasks/differences) 247 | 248 | ### Workflow 249 | 250 | When you have your proposal but also during the writing you will have tasks to do, like gathering the resources etc. 251 | The best way is to track everything somewhere and in your plan (that is private to the leaders maybe) write all the various tasks. 252 | 253 | From a big task, it's better to create various little tasks so you can track your progress more easily and see what is happening. 254 | -------------------------------------------------------------------------------- /manuscript/chapter1-bio.md: -------------------------------------------------------------------------------- 1 | -# My (open source) story 2 | 3 | I want to start with a chapter about me to let you understand the rest of the book (or the book itself). 4 | I also hope to be inspirational and to show new ways to approach the technology and open source philosophy. 5 | 6 | ## Let's start with the flashback! 7 | I was born in 1990 in Rieti (Latium, Italy), a little city famous because it's the `Umbilicus Italiae` (this is Latin and means the belly button of Italy), basically the center of Italy. 8 | The city is near Rome, Terni and Aquila and apart from the name is famous all over the world for [The Rape of the Sabine Women](https://en.wikipedia.org/wiki/The_Rape_of_the_Sabine_Women). The legend is that when Rome was founded, there weren't sufficient women for the citizens so they kidnapped there/around. This story was famous because many artists during the Renaissance used it as theme for their arts. 9 | 10 | I think we are more famous for the Porchetta (food) and Lucio Battisti (singer who also made stuff in Spanish, English, French and German), and San Francis that moved in Rieti and built various sanctuaries and the first nativity in Greccio. 11 | 12 | On 1990, the year of "Home Alone", my grandmother said that as a kid I was similar to that child, anyway I think I have grown a little better without thiefs trying to break in my home. 13 | 14 | ![A footage that I did for my 25 years](images/1/25.jpg) 15 | 16 | I really like the Open Source world and this has created many problems because I joined many communities, I contributed to different projects, joined many events and sometimes this creates confusion about my role. 17 | In my personal life I like to collect Italian, European and American comics, I have a large library with many comics in my room. 18 | My passion about Open Source (or activism) is not clear to my friends because it doesn't revolve around sport (especially soccer that I hate a lot) and in Italy it seems that, if you aren't interested in following sports (or practicing them), you are like a loser. Anyway this create issues with my friends that don't know what I do for living or why I travel a lot. 19 | 20 | This is probably the first reason why I am so easy to get involved, because what I do in Open Source has a real effect on the world and the people, compared to this kind of interest that for me is not productive. 21 | 22 | I attended the “Liceo Scientifico Tecnologico” (in Italy the school differs from the others, we have different schools based on the topics), completed in 2009 at "ITI Celestino Rosatelli" in Rieti with 68/100 as a final score of 5 years (thanks to math that lowered my score), I did a little thesis (it's quite common in Italy for the final exam in high school) and I was only one in a class of 27 people, I even took the laptop (purchased in 2006) for a demo on Lissajouss graphs on Windows XP virtualized on Sidux (the Linux distribution based on Debian Sid, that is now dead). 23 | I started to use Linux on my personal laptop just before the end of the school, but I was distributing my dev projects online (with sources already). 24 | I started to develop in 2006, just before starting the third year of high school, where we finally should start to develop with Visual Basic 6. The school switched to more new technologies like Windows XP (we were using Windows 98) and .NET framework (was using that already). 25 | I was very thrilled from starting to develop that in the year 2006, I was already doing my first internet websites with HTML4. At the time my data source was the local public library and the IT magazines. 26 | 27 | ![My first book about web development](images/1/libro-xhtml.jpg) 28 | 29 | My very first website was about the Dragon Ball anime that I maintained until 2009 and this allowed me to learn and discover the web development after the desktop development. 30 | Meanwhile if I wanted to use internet I had to be good at school (you know get good votes). In the house we had ADSL that was hour-based for the price, so I usually got 1 or 2 hours at week. In other words I had a paper with me every day with the list of stuff to check or download that I filled every week to use internet. 31 | Something incredible compared with today! 32 | 33 | I remember when my father got frightened because I was taking part online in forums or by chat (MSN or IRC) with people that I had never met. I started in this period to use my nickname `Mte90`, created in 2002/2003 and still using it. That is why people meeting me at events think my name is Matteo. 34 | 35 | Anyway I was developing my software during the school times, based on my needs, this is the first reason I think everyone needs to start from a personal need to get motivation for everything. 36 | I am still using this approach when I need to learn something new, I don't study because someone told me, but because I need it. A different approach to school, work and life that helps you optimize but also stay motivated, because after all there is a real reason. 37 | So to explain what I am doing or what I am learning to others, because what's useful for me may be also for others. That even before discovering the open source world. 38 | 39 | ![2014 in Pordenone](images/1/sbarbatello.jpg) 40 | 41 | For me internet was the first way to meet people like me (I still love forums), to work on my projects or discuss. 42 | In 2009 after the school I had to choose what to do with my life. A question that all the young people often face, my choice was very simple: work with computers (without math). 43 | Something clearly impossible at that time, it was a like an elitarian job, because there was this idea that to be good at computer you needed to be good at math i.e. on remembering formulas or calculating algorithms. 44 | 45 | I chose to go to L'Aquila and take a university course at the Academy of Fine Arts on Web Design. After all I liked to work with websites, so I was easily getting the piece of paper (my parents were longing for). 46 | For non-italians, 2009 was the year of the big earthquake with 309 deaths and that course never started, so I took a sabbatical year working at the family's shop in the morning and doing a work stage in an IT company in the afternoon for 6 months. 47 | My tasks were to install antennas for internet, configure web servers, install or fix computers; while at the shop I was learning how to talk with customers and how does a company works, at only 19 years old. 48 | 49 | I> 2010 was the last year I developed on Windows when I did that work phase, where I valued Linux a lot more. 50 | 51 | Finished this year (later I worked only at the family's shop) in the position to gain the piece of paper, that as of today is useless. I removed the reference on Linkedin and I don't want to mention the school or the course I attended for years about web/digital stuff in Rome (basically only Adobe-boring stuff). 52 | 53 | ![My first real video game... in Flash](images/1/cakefactory.png) 54 | 55 | So in the 2012, when people started to call me "Linux", I started working as a freelance. 56 | Up to 2015 where I founded a Web Agency in Rome with two friends and as of today we are still doing open source development and web sites/application development. 57 | In our company statute it's written that we have to use 50% of our time on contributing to open source technologies (a big idea of Eugenio). 58 | After 4 years we are still doing stuff but we are only two people now. With a lot of other topics to discuss in next chapters, I hope I am not being boring (hate that) and to be able to show you the key points informing my interest in this industry. 59 | 60 | ## How I started to contribute to open source projects 61 | 62 | I was developing in PHP because when I moved to Linux this was my home, with the discovery of Python and I made my first UI projects with the Qt framework. I was experimenting with doing the same things on Linux as I was doing with Windows, even with custom software. 63 | It's basically what people do when migrating from the first to the latter, in my case I felt like Indiana Jones, without boundaries, and it was intriguing. 64 | 65 | At 18 years (2008) I bought my domain `mte90.net`, after some time I opted for using a CMS, and since databases were overrated I decided to build my site with a flat CMS. 66 | So I started using an Italian Open Source CMS and extending it creating plugins and also doing a fork to the project to add more stuff. 67 | I built a tiny community around it, a mini build system and at the time I didn't know about git or other version control systems. 68 | In 2012 I opted to use a real CMS that was following real coding standards (compared to the spaghetti code) to do more and better without starting from scratch. 69 | 70 | {width=80%} 71 | ![Me waiting for my first Debian Ubuntu Community Conference in Italy, 2015](images/1/duccit.jpg) 72 | 73 | There was a world outside that was doing many things and available but most important they were working, and they were using a database. 74 | In few words I discovered WordPress and with that I started freelancing, contributing to the projects and communities online (where I will find my colleagues), writing technical articles (in Italian mainly). 75 | I also coded my first software for someone else (my father), today we call it a `bash script`. 76 | 77 | T> Bash is a scripting language on Unix systems (OSX and Linux) that lets you automate software interaction. 78 | 79 | At the time I migrated all the computers in the family store to Linux and had a simple request to speed up the flow. Put some sheets on the scanner and automatically prepare Thunderbird and the image scanned on a new e-mail, so in 2012 I [coded](https://daniele.tech/2012/08/kde-scantoemail/) a solution for this need, and it's still in use today in the shop. 80 | I discovered that my English was a huge mess (today I speak only "Italish") so I resolved to improve it by studying it again, to be able to cooperate with the international side of open source projects. Submitting code, ticket reporting, discussion and proposals for let's say Mozilla or WordPress, this learning step was needed. 81 | Other communities I was contributing to at the time were KDE, Sidux/Aptosid/Siduction (my Linux distro) and many others. 82 | 83 | ## Why everything started with a Linux Day 84 | 85 | Hour: zulu 16:00 (to read as sixteen zero zero) in 22 October 2013 86 | 87 | {width=80%} 88 | ![My first talk, 2013](images/1/talk.jpg) 89 | 90 | Me with my 2nd laptop with "few" stickers (also wearing my flowing hairs) starting to do [my first talk (Italian report)](https://daniele.tech/2013/10/firefoxos-utenti-sviluppatori-roma2lug-linuxday-2013/) at 23 years old. 91 | I joined in the January of the same year a ["Firefox OS App Days" (Italian report)](https://daniele.tech/2013/01/firefoxosappdays-a-roma-io-cero/) that was my first hackathon, and I won the first device with Firefox OS produced. 92 | I never joined a Linux Day (in Italy is a yearly event usually organized in 80-90 cities in the last Saturday of October in the country about Open Source) but I had always wanted to go to discover and learn new things, instead of using only internet. 93 | 94 | I did my first talk with a bit of anxiety because it was in an university, with people younger than me, but with this talk I joined the Mozilla Italia community. 95 | Joining an event like this opened my eyes on the IT industry, because more people are interested in these things also attending in live, I wasn't alone. 96 | This event was the first step to improve because I could discuss things with others and compare myself by talking with people to get feedback. 97 | And, why not, have fun and network with people, that nowadays are the 2 most important parts of my role as a contributor. 98 | For people appointed to organize community activities and events it's very important to have very good networking skills to be able to involve more people and engage them through better promotion and communication. 99 | 100 | ## Mozilla, my house 101 | 102 | Since 2013 Mozilla allowed me to participate in many higher level projects. 103 | I met people and they supported me (even financially), so I had the chance to understand how large IT companies operate. I learned to host meetings, to manage tasks and proposals and in general many new ways of cooperating in Open Source among many. 104 | I had an idea of how the browser and software work, their development cycle and localization problems; I learned to work in groups, to assign tasks and to research and deal with technical issues. 105 | 106 | I also discovered what doesn't work at a higher level within IT companies, the distance they have to their users' needs (because they follow market needs instead). 107 | I strengthened my language skills in the process. 108 | Mozilla assigned funds to volunteers to organize or participate in events, when I joined I was one of the few experts of Firefox OS in Italy. 109 | In short, I traveled all around Italy, visiting new places and meeting people, having the chance to better understand the needs and questions of the users of Mozilla products and of the Open Source ecosystem as a whole in general. 110 | This traveling allowed me to build a group of friends that started to do the same, hosting demonstrations of Firefox OS, explaining how to develop for it, recruiting new people and finding new ways to engage them. Also we have improved and expanded Firefox OS Italian manual together. 111 | 112 | ![The hard work of months for the Italian version of the Firefox OS development book](images/1/ffos-libro.jpg) 113 | 114 | With the [death of Firefox OS](https://daniele.tech/2015/05/the-firefox-os-1-x2-x-problems/) I got a lot of experience in community building, mentoring, development and so on, and I kept traveling in the country also even if a little less than before. 115 | I was giving speeches about other technologies, like addons development, Firefox web tools for developers, how to join the community, privacy and why Mozilla was important. 116 | 117 | These travels created an "aura" around me, I was (and still I am) called many nicknames like Mozilla-Man, Mr. Firefox, Mozilla and so on. People aren't creative with nicknames after all... 118 | At the same time I started improving my English, and in 2015 I joined Mozilla Reps program, participating in activities and discussions online at international level. 119 | 120 | I> Mozilla Reps program is an international program free for everyone meant to empower local Mozilla communities (not only about Firefox but Mozilla per se or other projects like A-Frame as example). 121 | I> It is a program with ~250 people from a lot of countries now (when I joined it was double that number), empowering volunteers to become better community managers, better project managers, join Mozilla discussions as NDA (Non-Disclosure Agreement) group, get funding for events and swag. 122 | 123 | In the same period I attended my first international event the [FOSDEM 2015](https://daniele.tech/2015/02/fosdem-2015-the-report/), even with my messy English I was able to organize it with the help of 3 Italian friends. 124 | Participating allowed me to meet new volunteers in person (also from Mozilla) and this helped me to meet new people (or recognize them from the nickname), slowly I understood that the Reps program was a way to help the community to do more and better. 125 | 126 | It wasn't the time of Firefox OS anymore but there were other kind of activities to do, the real thing was that I understood better Mozilla issues. 127 | Mozilla Foundation/Corporation is influenced by mood a lot: they start a new project (startup style), get a lifetime span of few years and later they close to work on something else and abandon everything. Even, if the project was used, important and that following the manifesto. 128 | One of the most painful things for me was the "Web Literacy" period, when they choose to close the Firefox Student Ambassador program, to start a new one for the students and a new one called Mozilla Club. 129 | 130 | I> Web literacy comprises the skills and competencies needed for reading, writing and participating on the web. It has been described as "both content and activity" – i.e., web users should not just learn about the web but also how to make their own website. 131 | I> From [https://en.wikipedia.org/wiki/Web_literacy](https://en.wikipedia.org/wiki/Web_literacy) 132 | 133 | This program had a very important mission, fight the digital illiteracy. For a country like Italy with a lot of it, with people who don't know how to use a computer while the smartphones was spreading it was very important. 134 | Mozilla for many things works like a startup (I work/ed with them and I am still not liking that way of doing things), starts a lot of prototypes by needs or interests, that can be privacy (like the Encrypt campaign, when FBI wanted Apple to share the encryption keys And Codemoji), Mozilla Pulse, Maker Party, Mozilla WebMaker, Firefox Test Pilot, Firefox Hello and many others that I probably forgot. 135 | Also the fact that Mozilla uses a lot of metrics that often are not realistic: like remove features but not understanding that they are important for a lot of users. Removing them maybe is a wrong solution, maybe you didn't promoted very well or that features is used by everyone just once every month. The cool part is when a feature is reimplemented after years in a similar way, not just because the code was ugly and was needing a refactoring but also because the feature is useful and others are doing the same. I wrote an article about how [Firefox lost the browser war](https://daniele.tech/2020/03/firefox-lost-the-browser-war-and-what-we-can-do/). 136 | 137 | With employees that not always stay in the company more than 2-3 years, it is difficult to create a connection or partnership since if you have to start from scratch every time, find new references and talk with people that don't know the Mozilla experience/background and the open source philosophy. 138 | In any (ranting) case today is always a source of discoveries and as volunteer you learn how to manage these issues, basically like how the employees themselves do. How? 139 | Ignoring them, moving on new stuff with a bit of nostalgia. That way often volunteers hold the only memory of what Mozilla did because they are participating more than the people that worked there. 140 | 141 | An important lesson is in the working environment and human, there are reasons besides the personal human/logical/financial area, things doesn't last forever except Colosseum, Pantheon, Stonehenge, Great Wall of China and Internet Explorer, Python 2 or Perl 5. 142 | Yes, it is still around there, people are still using it and developers need to support it. 143 | 144 | I want to close this section with links from my blog about a lot of experiences in Mozilla, I had always the habit to write a report after events or topics, and know they are a very valuable resource to understand the period and what was happening years after: 145 | 146 | * [September Mozilla Marketplace Contributor of the Month: Daniele Scasciafratte](https://daniele.tech/2014/10/september-mozilla-marketplace-contributor-of-the-month-daniele-scasciafratte/) 147 | * [The Firefox OS 1.x/2.x Problems](https://daniele.tech/2015/05/the-firefox-os-1-x2-x-problems/) 148 | * [Mozilla All Hands London – I was there](https://daniele.tech/2016/06/mozilla-all-hands-london-was-there/) 149 | * [ConfSL 2016 – I was there](https://daniele.tech/2016/06/confsl-2016-was-there/) 150 | * [Mozilla Tech Speaker Meetup & European Gathering in Berlin](https://daniele.tech/2016/09/mozilla-tech-speaker-meetup-european-gathering-in-berlin/) 151 | * [CLSxItaly Roma 2016 – I was there](https://daniele.tech/2016/09/clsxitaly-roma-2016-was-there/) 152 | * [ExtStoreStats – Get stats of your browser extension](https://daniele.tech/2017/01/get-stats-of-your-browser-extension/) 153 | * [Why I am developing Browser Extensions](https://daniele.tech/2017/09/why-developing-browser-extensions/) 154 | * [Analisi del sondaggio Mozilla su IoT per l’Italia](https://daniele.tech/2017/11/analisi-del-sondaggio-mozilla-su-iot/) - Italian 155 | 156 | {width=80%} 157 | ![The monument with the names of 5000 Mozillians in front of the Mozilla's office in San Francisco](images/1/monumento.jpg) 158 | 159 | I forgot to mention the huge moment of gratification, my name is on a monument with many other volunteers. 160 | 161 | I> This is one of the example of how you can increase the value of what people are doing, a name is a lot of things, often in the projects is easy to limit the gratification to a "Thanks for the reporting" in a ticket but volunteers invest their time so you need to think always on how to engage them. 162 | 163 | ## WordPress where my job and passions meet 164 | 165 | To live you need the *"pagnotta"* (the food on your table), contributing to Mozilla is very enjoyable but is not enough for it. 166 | With many years of experience inside Mozilla and at events, I started to freelance with WordPress until opened my agency in 2015 with some friends. Let's do a step back. 167 | I always developed with PHP and WordPress, like a lot of you may already know, is easy and has a huge community and is possible to learn and make the difference more easily. 168 | Only the will to do and change things is required, often quite impossible within Mozilla, where volunteers are perhaps the last small part of the chain. Also, there was the programming part available that was opening more opportunities compared to Mozilla. 169 | 170 | I started on a Google+ Italian community, hosting webinars about different topics and as technician I had more details to offer. This way I met my future colleagues, we were all moderators of this community and I started to write articles and doing support. 171 | I was discovering this other passion after the developing, writing articles that I knew would help others from technician stuff to news. After all I had the sources, what to follow and where to find the information including what was the interesting stuff for the audience. 172 | In the meantime I was getting trust in the WordPress community, co-organizing the WP Rome meetup and slowly also contributing to WordPress core. 173 | 174 | Think about it, at 25 years old your first patch to WordPress was used by millions of websites around the world, was very exciting. Without considering the localization that opened my eyes in a lot of things I was ignoring. 175 | Localization is very important for spreading software, improving awareness and helping to promote digital in your country or region. 176 | 177 | So I did a browser extension for [for Firefox/Chrome for localizers](https://daniele.tech/2018/03/2-years-of-glotdict/), contributed to tools for localizers, became a maintainer on how to manage projects and lead projects, participate in the development of other tools and so on. 178 | 179 | ![Me talking at WordCamp Europe 2017](images/1/wceu.jpg) 180 | 181 | We cannot mention the many WordCamp in Italy, so I started traveling up and down the country and up to join 3 different meetups in 3 different regions in the same week (and in 2 as a speaker). 182 | Up to 2018/2019 when I was part of the founder committee of the first WordPress fork, ClassicPress, where I leaded the localization team and part of the core development. 183 | Compared to Mozilla, in WordPress it is easier to receive rewards for what volunteers do, mainly because you can see your action effective instead of merely promoting other things in which you have no chance of being influential. 184 | 185 | Also the WordPress project has issues on management, like Mozilla, and is something not easy to solve by the volunteers (again like Mozilla). WordPress as project is managed by the big company Automattic, because in the WordPress Foundation has many of their employees in the various teams as leaders, so it's easy to follow the roadmap they want: once again this is my opinion, but the fact is simple enough to confirm, look the keynote of the last WordCamp Europe/US with a roadmap that is not focused on the needs of users or communities but on their business needs. 186 | 187 | Another point that is missing, a clear roadmap and a governance that not start from scratch but from people that already know the open source ecosystem/world. There are a lot of open source foundation to get inspiration, why we need to start from scratch and not achieve anything? 188 | It's more simple to do that the foundation hire few people as manager of the various area that are not involved with any company and the volunteers that do what is planned and discussed all together. 189 | 190 | ## Last flashback 191 | 192 | Let's talk of [2016 when together with some friends I met online (Italian)](https://daniele.tech/2016/03/industria-italiana-del-software-libero-la-nascita/) (it is easy to see the repetition of similar facts), we founded an association "Industria Italiana del Software Libero". 193 | Our idea was to bring our great passion towards the work side, creating a group of professionals who use open source software on the professional side and contribute to the same. 194 | A great idea that today has failed to explode as we thought, also because we are professionals who have to work and it is difficult to move forward. 195 | 196 | ![Article from Italian newspaper with also my interview about the Italian Digital team](images/1/italia.jpg) 197 | 198 | I say it because in 2018 I became the president of the association and after a few years I can see the issues in a world that transforms itself too much quickly. 199 | 200 | Let's think a moment together, in 2019 the open source world is not as strange and dark as 5 or 10 years before. 201 | The world is paying more and more attention to the opportunities of these technologies (except the Italian government in the various cities) but I see the big problem: to contribute. 202 | This book was written because I see a lot of young people and newcomers that ask how to do something, how to start or how it works. Because it is more important to be able to participate and contribute than to be mere users of the product for them. 203 | 204 | ## Addendum (third edition) 205 | 206 | Writing a new edition required two years with the Covid pandemic that broke the flow of ideas generated during FOSS live events, but I didn't stop gathering resources and doing Open Source. 207 | 208 | {width=80%} 209 | ![Me with the Public Money Public Code T-Shirt at camera dei Deputati](images/1/camera.jpg) 210 | 211 | On February just few weeks before the Covid I joined an event where I was the representative about the [Open Source topics in the Italian Depute's Chamber](https://daniele.tech/2020/08/etica-open-source-riuso-e-software-libero-versione-originale/). 212 | 213 | On December 2020, I started my podcast in *Italian* about weekly updates from the Open Source world with a bit of cyber security and technology updates with my opinions. As today with more than 90 episodes it was an experiment that worked with more 220 followers (on Spreaker, Funkwhale and Youtube I can get those numbers but not on the other services). Every week I gather an average of 34 links to discuss in less of 30 minutes. I wasn't thinking about all this interest in these topics as it is very specific, but looking on the people who reach me to share feedback or links seems growing. 214 | 215 | On January 2021, I was added also on the `about:credits` page in all the Mozilla Products like Firefox, for my contributions in the past years. At same time the "Industria Italiana del Software Libero" association was closed because there was no action from the members on doing the usual things, it was a good experiment on how to manage this kind of things. 216 | 217 | On April 2021, I was elected in the [Italian Linux Society](https://www.ils.org/) Association council and I will be part of this for the next 3 years. I was happy to join it because I wanted to give back to my country after doing international stuff in various communities. As association, we help all the Italian Linux User groups and promoting Open Source in Italy and we did various things in 2021 like [9000 € in donation to FOSS projects](https://www.ils.org/2022/01/01/2021-con-ils.html) or I organized the [Merge-IT](https://merge-it.net/) conference online with over 12 Italian Open Source communities or about Digital Rights to discuss various topics. 218 | I put my experience like in these ebooks to improve various websites we offer like [Planet.Linux.it](https://planet.linux.it/eventi/) with a new calendar and ICS/RSS feeds divided as national or by regions to find the nearest events to you about open source, so not just LUGs but also from meetup and national communities. 219 | Or a whole series of tiny/easy guides to contribute to [Open Source projects from your smartphone/computer in 5 minutes](https://www.linux.it/todo/attivita/), not just using an open alternative app. 220 | 221 | In April 2022, I joined the Italian community behind [/r/place, and it was an interesting experience](https://daniele.tech/2022/04/the-r-place-story-from-the-italian-view-and-from-bots/) in something that lasts few days but purely online. 222 | 223 | # Conclusion 224 | 225 | Open source allowed me to: 226 | 227 | * Gain experience despite the fact I never joined university 228 | * Improve English (this book was written half in Italian and half in English and reviewed from other people, thanks!) 229 | * Improve my relationship skills (no one thinks I was a shy guy) 230 | * Improve the public speaking skills 231 | * Understand how to promote stuff 232 | * How to split problems 233 | * How to manage a working group 234 | * Know what is needed to organize an event 235 | * Understand which are the requirements to keep a community alive 236 | * Compare with others and see my limits/problems 237 | * How to ask to... ask and not getting troubles for it 238 | * The various aspects of a project (not only about a software) 239 | * Learn how to develop, the right way 240 | * Learn how to listen and when it is time to shut up 241 | * How to propose stuff 242 | 243 | {width=80%} 244 | ![Mozilla TechSpeakers at the 2016 Meetup in Berlin](images/1/ts.jpg) 245 | 246 | A lot of very useful things for work but also for personal life, the fact is I did everything for... fun! 247 | 248 | X> Your turn 249 | X> I want you to repeat the same flow of thoughts as I did on writing this chapter. 250 | X> Take 2 analogic tools, a pen and a paper and write on that: 251 | X> 252 | X> * The first time that you participated in an open source project 253 | X> * How many years ago 254 | X> * List all the things you learned and mark the most important lessons of your life 255 | X> 256 | X> If you never joined an open source project: 257 | X> 258 | X> * What do you want to replicate of this story 259 | X> * Where you see yourself in this story 260 | X> * What is your biggest target (also non-realistic) 261 | X> * What is the first step you want to do 262 | X> * What you want to learn 263 | 264 | There are also other FOSS story around with less photos but more clear learnings (maybe) like [this one](https://blog.burntsushi.net/foss/). 265 | -------------------------------------------------------------------------------- /manuscript/chapter2-philosophy.md: -------------------------------------------------------------------------------- 1 | -# My (or your new) philosophy 2 | 3 | If you are still reading this pages it means you found them interesting/useful, or you think first chapters do make sense.. 4 | Let's speak about the Philosophy now, I don't want to cover the four freedoms in depth here (for there are articles covering this topic already), but you will find a brief recap below. 5 | 6 | I># The 4 freedoms of Open Source software/projects 7 | I> * The freedom to run the program as you wish, for any purpose (freedom 0). 8 | I> * The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this. 9 | I> * The freedom to redistribute copies so you can help others (freedom 2). 10 | I> * The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. 11 | I> 12 | I> From: [https://www.gnu.org/philosophy/free-sw.en.html](https://www.gnu.org/philosophy/free-sw.en.html) 13 | 14 | This 4 freedoms created the philosophy and the open source model. 15 | 16 | ![Little recap about open philosophy](images/2/open-philosophy.png) 17 | 18 | I> Open source model examples: Open Hardware (Arduino or Raspberry Pi except for CPU), Open Content (Creative Commons license), Open Knowledge (Wikipedia or Project Gutenberg), Open Data (OpenStreetMap), Open Access (Open Document File formats) 19 | 20 | We need to exclude the biggest urban legend about this topic: open source doesn't mean that it is free of charge (even if everyone uses OSS, including enterprise). This point is very difficult to understand for newcomers and if you have troubles, check it out reading the rest of this chapter. 21 | Another important benefit of Open Source is that, in addition to the product, you are getting a bonus, the access to the various pieces that build it. It is like getting a pizza but also the recipe with the various information for any ingredient and so on. For a non-technical person, this can be useless but when you need to study how to work or implement based on the requirements of your customer, it's very important because it lets you do a full analysis. 22 | 23 | I> Good artists copy; great artists steal. 24 | I> From: [https://quoteinvestigator.com/2013/03/06/artists-steal/](https://quoteinvestigator.com/2013/03/06/artists-steal/) 25 | I> In the IT world there is another version: "Reinventing the wheel" but I prefer to add also "What is not understood is not possessed" of Johann Von Goethe to help you understand the philosophy. 26 | 27 | The seven stages of Grief is a way to express the various steps of a loss, anyway someone converted as [Seven stages of OpenNess](https://coiled.io/blog/stages-of-openness.html) that can be used as mnemonic to understand how the Open Source process can change your view on doing and understand FOSS (read this link before this chapter if you want to see other opinions). Another idea that surprised me is the boy-scout rule "Always leave the campground cleaner than you found it", that is part of what I do in Open Source and this book is part of. 28 | 29 | So Open Source != Free Software, this means that open source is a subset or a minimal definition of the goals of a project compared to Free Software. This happen about the *free* in Free Software because as we said open source means that the code is available but what you can do with that depends on the license, that can be Free Software, or you need to pay to access it for example. There are tons of pages that explain the difference between the various licenses and why, but often they are very complicated, so [get ready on studying them](https://blog.graphqleditor.com/software-licensing-cheat-sheet/). 30 | Another opinion is by company side when the license topic is on fire, like dual licensing, CLA, abuses or license's restrictiveness, but I don't want to talk about those stuff as it is the most common discussion in this world and there are people who explain a lot better than me, [Open source licensing for supervillains](https://offlinemark.com/2021/01/22/open-source-licensing-for-supervillains/). 31 | Yes, you need to study a bit because it easy to get a license conflict because [you like to code but you don't care of the legal part](https://arkadiuszkondas.com/dmca-php-ml-and-copyright-boundaries/). 32 | 33 | ## Do ut des 34 | 35 | *Do ut des* is a Latin expression that means *give and take* but we can openly localize as "something is given so that something may be received in return". In English often this can be understood as *giving back*, for me this is not enough to explain it the idea behind. 36 | When we need a software or a service the first step we do is to look it up on the net. Then we download/register, use/consume and then move on with our day. 37 | We are just consumers, and often we don't know the costs involved in developing such software/service. 38 | When using free web services or apps, many people don't ask "how can this service continue to move on if it's free?", but it's a question we should ask ourselves. 39 | How Google/Facebook/Whatsapp/Youtube/Gmail etc still offer their services? 40 | 41 | {width=80%} 42 | ![What they do with your data? Fosdem 2017](images/2/who.png) 43 | 44 | **You** are the currency, using it and leaving information in your account and surfing the web, with this information they can show to you perfect ads or discover interests your kind of person has to use it for something else. 45 | In the open source world this doesn't exist, a service works because some people behind it use their free time maintain it (yes, there are people paid for that sometimes). When you are using these technologies, you are accessing to solutions that for you are free but behind there are many people working to let you use them freely (classic example Wikipedia). 46 | 47 | Why everything starts in the open source ecosystem? Because a user sees a problem, something missing, text written badly or with typos, incomplete localization and so on. 48 | Basically the contribution starts when something doesn't sound so good and the issue is quite clear. 49 | When the problem is noticed, instead of doing a useless comment online or a ranting at the pub/bar, there is an action with a report and the problem is/will be gone. This is the contributor, that enforces the contributor mode (next chapter) without noticing it just because OSS requires commitment. 50 | This report is the first step to contribute to the project, because behind there are people that are not perfect and that can miss something. 51 | The society doesn't understand all of these things, maybe the 4 freedoms are more easy to accept, but the commitment on something that is from the IT world is very strange. We need to help the society to understand why this commitment is important, like the civic hacking or other realities that in the IT world act to improve the quality of life using the technology. 52 | 53 | I> Civic hacking "enhances the relationship between the people and government with software for communications, decision-making, service delivery, and political process." [Wikipedia](https://en.wikipedia.org/wiki/Civic_technology) 54 | 55 | ![The real story](images/2/open-source-developers.jpg) 56 | 57 | Another way to see this topic is to leave everything better as you found it originally. 58 | 59 | From a company view, we need to think about another thing, **production** and **consumption** are 2 different things that require different people and skills. The idea of this book is to help address the various sides of the Open Source world because a *Maintainer* cannot do everything alone. 60 | "[Users need open source projects, but open source projects do not need users](https://matt.life/writing/the-asymmetry-of-open-source)" this quote is from a story from an OSS project that has a company behind that reminds to everyone that a project doesn't mean it needs to be suitable for everyone, also if at the same time it can be transparent etc. 61 | 62 | The maintainer is a role that is a project manager, support, developer, documentation writer and so on. They are basically everything, from promotion to keeping the project alive, and if there is growth, they can share these duties to other people. It is a time consuming role that requires many skills: 63 | 64 | * Improve documentation based on your experience 65 | * Be open to activities for other users 66 | * Propose and try new approaches 67 | * Be honest with/care others 68 | * Define roadmap 69 | * Assign tasks wisely 70 | * Janitor tasks 71 | 72 | And so on, but you can do those tasks and help the projects you love and improve the value over all. 73 | 74 | In a company, this exchange of values by contributors or the future of a project is a completely different thing, for example a project can be released for [branding promotion but ignoring proposed changes](https://miles.land/posts/corporate-open-source/). It is known that companies usually hire people who contributed to specific projects that they use or are focused on areas on which they need skilled people. 75 | These company projects often have difficulties on managing the open source community if they are not structured to handle external involvement, but this doesn't mean that you can't contribute to them. When you are working in these cases, it is required to think in a different and more complex way, Open source is not just the 4 freedoms but also a world around visibility, promotion and business (that are not bad things) and not just transparency. 76 | 77 | From the Principle side, we can talk about the [Robustness Principle](https://en.wikipedia.org/wiki/Robustness_principle) in OSS. That can be translated in "be conservative in what you send, be liberal in what you accept", you are open to the world to look at what you are doing, but you don't want the involvement of everyone. This is a non-sense as per the 4 freedoms, but after all you don't want trolls, bad people and so on. To move on a project you need to think in the real world where you have to choose what is better for your project to keep going on. 78 | 79 | From a learning person or a student or someone who is looking to get experience or fill the famous curriculum, it is different. You read my biography in chapter 1 and you saw that I made myself on my own with open source, but it can be difficult to show this expertise outside this world. It requires personal branding, but also to document somewhere what you are doing as you are exchanging your time on contributions to grow your knowledge and experience. There are projects like [Google Summer of Code](https://summerofcode.withgoogle.com/) where students can get paid (if they succeed) to contribute for a project on a specific task, and they will get a mentor or [Outreachy](https://www.outreachy.org/) that "provides internships to people subject to systemic bias and impacted by underrepresentation in the technical industry where they are living". 80 | Anyway it's not something new that there are projects that are opened to university/college students as there [is more attention today on the positive things that they can learn on this](https://cacm.acm.org/magazines/2021/7/253459-why-computing-students-should-contribute-to-open-source-software-projects/fulltext) and if you are reading this book probably you have already some hints. 81 | 82 | The first interaction of an user is an opportunity to get a new contributor, so as community managers, maintainers, contributors etc is important that we offer the best experience, the best gratification we can give but also the best values both sides can get from this action. In this book we will see a lot of suggestions, ideas and processes to achieve it starting from the... reporting! 83 | 84 | ## Reporting 85 | 86 | It seems a joke, but it's not; the real culprit is that complaints have to be useful to reach a constructive goal. 87 | Usually people stop at the very first step, without acting to make it a constructive reality. This only creates a bad mood and the effect is the opposite of the desired one. 88 | Give the maximum of information to developers, in order for them to find the issue, replicate it (that is a very important step) and create automated tests for it. By only complaining you obtain nothing, you just get madder than before. 89 | The ones able to report issues in the correct way, and with much information, show a different knowledge level than others; that is a very helpful skill set to have during daily operations. 90 | 91 | {width=60%} 92 | ![How to see the problems](images/2/meme.png) 93 | 94 | Enterprises apply that way of thinking, but an open philosophy project cannot have these limits. 95 | You can do your part to change the world and, after some time, see the problem solved thanks to your intervention! At the same time, all other users will have the same benefit. 96 | A little step for a man, a huge step for humanity as a whole. 97 | 98 | When working with public domain resources, there shouldn't be any *omerta*, for it's against the philosophy of open source projects itself. Everybody can do their own part, even with little time available or doing just little things. A puzzle is made up of thousands of little pieces, and everyone can contribute to it. 99 | Nothing is more distant from civics (that in Italy is very poorly understood, even if now it's mandatory to teach it in public schools). 100 | 101 | {width=60%} 102 | ![Open Source is adorable](images/2/adorable.jpg) 103 | 104 | There is also another kind of reporting, the one that can help your community track what is happening or just gather the common questions and write some documentation. Those are more tasks for a community manager and will be defined in other chapters of the book. 105 | 106 | ### How to do a ticket 107 | 108 | Whoever manages a project often **doesn't have a lot of time**, so you need to give the most possible of useful information (and not rant). Usually, *giving some examples* or user cases helps to avoid a shallow rejection and will force to read the ticket with an analysis of the details. 109 | Basically, the own vision of the problem or of the feature request is very important to give the context or user case/story. Also, one ticket should address only a single topic to avoid confusion and loss of information. 110 | For example, they reply to your ticket after 3 months asking for more details but you remember nothing. If you wrote them easy-to-read information, then your request will be processed quickly and there is no need for further exchanges. 111 | The writing style should be friendly. No one wants to read rants, even constructive ones. Also, often issues may be caused by a wrong usage of the product or by something that went unnoticed. 112 | This is an useful approach for support centers too, behaving in a friendly way will encourage the support reps to act friendly towards you and be more helpful than usual. 113 | In doubtful cases, it is advisable to end the message with some polite expressions like the ones below: 114 | 115 | * It's my first time using the project, so I am not sure... 116 | * I am not sure to use it the right way... 117 | * Am I doing something wrong, or is my way of handling the product correct? 118 | 119 | This language tricks allow you to make requests in a friendly way (without efforts) and shows that you *desire to discover* more and make replying to you more simple to the receivers. 120 | Honestly, I saw this way of expressing wonderfully working many times: in case of misunderstanding, you may also explain that you have some issues with the language, or you may point out you are not an expert in the field. This also helps in toning down noise during discussions and engages other participants empowering them to express and explain themselves better. 121 | 122 | Don't forget, when you need to pose a lot of queries, it's easy for people to find you annoying, thus they behave unwelcomingly. Their time is precious, so for them collecting information and basic understanding of the issue in a timely manner is a culprit. That's why I advise you to select a friendly and informal writing style that allows you to achieve more at first approach. 123 | 124 | ![](images/2/ticket.png) 125 | 126 | ### How to reply to a ticket 127 | 128 | If the project is ours, how should we reply? Or when we contribute to the project validating the tickets (called triage), how should we reply? 129 | Quite simple, follow the same rules, avoiding the part of the non-experts of course! 130 | Ask for more info, verify the request or reference to the code in the project answer (this one helps others to join and ease the task for you, basically onboarding new people) to show your own professionality and availability. 131 | Anyway, it's important to document also within the closing message of the ticket. The request itself is valuable for the person investing time in redacting it and it's very awful seeing them closed with a bare "It's not our priority". 132 | 133 | A quick answer is often highly appreciated because it means that you are following what is happening in the project and are very involved/interested in what is happening and fixing the issue. 134 | Often I propose ways to accomplish my feature request or bug fix, that way I can start a discussion (and be part of it) to involve others and encourage them to do the same. 135 | 136 | Concluding, don't forget to take responsibility in case you are the culprit (by not reading the manual, due to misconfigurations, and so on) because you have to be honest; document the issue for someone else and simplify the job of the project manager. 137 | 138 | ## The virtuosity of reports 139 | 140 | Let’s think for a moment to all the rants or requests we receive every day, to how much better they would be if submitted in a **constructive way**. 141 | 142 | {width=80%} 143 | ![There are 2 kind of people: who want a feedback and who is lying](images/2/feedback.jpg) 144 | 145 | Gorgeous, isn’t it? Let’s take the first difficult step ourselves, let’s be ready to take it because we know how a ticket is powerful, and we know how to take it, so we can spread it to all the world and in our daily life, family, job and so on. 146 | 147 | On a personal level, it helps thinking in a constructive way, it helps in lifting depression and avoiding being angry with other people around us (I guess that moment before the proverbial "morning coffee" is an exception to that); it helps in making us more optimistic, it makes us grow better, when the request is well received and we wait like a child on Christmas Eve for the outcome. 148 | In life, when something is not working we need to be listened, but the only way to achieve that is to be constructive and available because this speeds the process up a lot, by improving communication. 149 | 150 | Obviously, this isn’t a fool-proof method, but makes us trustable, it transforms the environment into one where interactions are productive/pleasurable/easy (when there is a shortage of time making things hectic, too!). Communicating that way also creates an “history” that may come useful in future times ahead as a reference. 151 | 152 | Another point: if in a OSS project is not possible to ask questions, then it isn't a real OSS project. Another view can be that you can ask questions, but there are some choices that for [1-2-3-etc] reasons is not possible to ask again. 153 | 154 | ## How to evolve it to the next Pokemon 155 | 156 | To open some tickets (or participate into existing ones) is very important, it allows you to get involved at a very low level and to join the party. 157 | For a lot of people the real question is: how I can live with that? The famous "pagnotta" already mentioned. Well, RedHat is the most profitable company about Open Source (now part of IBM) and released a [report of 2019-4](https://www.linuxfoundation.org/resources/open-source-guides/winding-down-an-open-source-project/) about the enterprise world revolution with FOSS. 158 | The main points: 159 | 160 | * Modernized the companies 161 | * Improved the security of their infrastructure 162 | * Lower total costs 163 | * Integration with others platform they use 164 | * Ability to customize the software 165 | 166 | Those are just few hints from this report that show how can be powerful to embrace these philosophy and solutions. For IT companies also it open new doors for business like this [Tidelift's report explains to getting more developers](https://tidelift.com/subscription/managed-open-source-survey). 167 | 168 | Let’s consider that a way to start a relationship in the way others expect this to happen, like the fish: when we move it from its tank to a new one, we make sure the temperature of the tanks is consistent and the environment is similar, to avoid it any shock whatsoever. 169 | The next chapter approaches a bit how to improve the quality of your learnings with this new philosophy. 170 | Now that you joined, what’s next? 171 | It’s up to you, doing the triage you learned more things on how the project is organized, who does what, who works on what, where to find the right people to help you without being overwhelmed by the hugeness of the community, you learned to estimate response time and also the actions you can take from there. 172 | Next chapter is about how to maximize the Contributor Mode. 173 | I call it so because I am a nerd, and probably because eating so much candies, chocolate, liquirice, fruits and the like, I get to drink not enough coffee. 174 | 175 | ![The survey Bias](images/2/survey.jpg) 176 | 177 | For this reason, it's important to consider the bias when you are doing evaluation on FOSS, as there are tons of enthusiasts, but they are just part of your users, so they can alter your numbers and ideas very quickly. Their opinion is important but it's important to have a full view. 178 | 179 | ## How to manage a new project or a legacy one 180 | 181 | This is an hot topic today with a lot of technical debts around, old projects released [open source or to the public (two different things)](http://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/) or a project started in the company internally that now is ready to be published to the OSS world. There is also the case of an [old project release with an OSI license with some changes](https://forum.defold.com/t/we-are-finally-sharing-the-defold-source-code/65177) with discussions about the declaration of opensourceness. 182 | There are tons of articles about how to manage a legacy project/codebase but I don't want to talk about those. 183 | 184 | The real point is that if you are starting a project, it's important that the code is ready from the beginning to be released as public just because the project rules, tickets, commits, and so on will be free of badwords (I know that happens) and non-english stuff, and documentation will be ready to be released. Take as example if you are hardcoding tokens and other things that is better to avoid in your commit history, if there are issues in non-english languages mentioned in the code that people don't have access to (originally LibreOffice code had code comments in German, as example from the StarOffice origins). 185 | 186 | I> "A security token is a peripheral device used to gain access to an electronically restricted resource." [Wikipedia](https://en.wikipedia.org/wiki/Security_token). In IT there are also tokens generated by apps or websites used for authentication. 187 | 188 | The transparency of the OSS management can benefit the quality of the project itself also if internal and to new people that will work on that. 189 | 190 | For legacy project instead it is important to define the license, how to setup a dev environment (if it is possible), give all the information that are available and that can be helpful to run your tool. Don't be like [this (source code of XIII game that I like so much, also the comic)](https://github.com/Ch0wW/xiii_unrealscript) that doesn't include any readme or documentation. 191 | 192 | # Conclusion 193 | 194 | I hope that now it’s clear why philosophy is so important: not only it differentiates us from our competitors (the non-open projects) but it’s for us a path to follow. 195 | Open source, without understanding the philosophy or way it should be open or managed openly, is only another proprietary project hidden by the code availability. Again a project without a license is not an open source project. 196 | The real question could be *Why you should join a OSS project?*, let's see some points: 197 | 198 | * Improve your knowledge in different areas 199 | * Visibility on your field 200 | * You can find a job or new employees 201 | * You do something also for others 202 | * You will see some effects of what you do in other people or areas 203 | * Learn the rules to work with other people 204 | * Learn how to verify the problems/issues reported 205 | * Fight against demotivational critics 206 | * Helps others also with code 207 | * Learn when avoid Jargon language 208 | * Find people similar to you 209 | * Find mentors 210 | 211 | I want to focus again (and I will do often in the next pages) how much an Open Source project is not just the software, but without it is empty. 212 | A real example is the [Jekyll case](https://www.bridgetownrb.com/future/rip-jekyll/), where there is this list of what is required today for an Open Source project: 213 | 214 | * Engagement on Twitter (or where your community is) 215 | * Official Discord chat room (or where your community is) 216 | * Public roadmap 217 | * Predictable release cycles 218 | * Welcoming community involvement in shaping new features and tackling technical debts 219 | * Cultivating working relationships with wider ecosystems (like the techstack communities) 220 | 221 | This list shows us how much is changed when everything started in the 70s with Unix, but at same time how many skills are required to manage a project with a community. Of course, if you are looking for a first contribution, it is more simple but is important to know that is not just the GitHub's Pull Request page. 222 | 223 | Before the last words of this chapter, I want to leave this news, ['The US military wants to understand the most important software on Earth'](https://www.technologyreview.com/2022/07/14/1055894/us-military-sofware-linux-kernel-open-source/). As today cybersecurity but also awareness about digital security is day after day more important, the defense department of the USA is trying to understand what this means for the whole internet and their own infrastructure. 224 | The result of this question: 225 | 226 | * Open Source projects/communities need a higher level of care and respect 227 | * You can't have trust on the codebase just because it is OSS 228 | * Code can be written by sanctioned entities (from specific governments) 229 | * The bus factor is limitating (the whole project fall apart if this number of people get hit by a bus) 230 | * Proprietary software are built with 70% of OSS 231 | 232 | Those are some examples that can help you to find opportunities for you, but we will see better in the other chapters. 233 | I am leaving to you some examples from the internet about how other people explained their first contribution: 234 | 235 | * [First commit to KDE](https://christianchristiansen.net/log/kde-first-commit.html) 236 | * [My contributions to GNOME as a non-coder and how you can too!](https://jatan.blog/2020/04/11/my-contributions-to-gnome-and-how-you-can-too/) 237 | * [Why I help people with PHP RFCs](http://blog.basereality.com/blog/25/Why_I_help_people_with_PHP_RFCs) 238 | * [Interview with PHP Core Developers](https://thephp.foundation/blog/2022/05/06/interview-with-core-developers/) 239 | 240 | **Don't be just a OSS promoter but a OSS contributor!** 241 | -------------------------------------------------------------------------------- /manuscript/chapter4-gotta-catch-em-all.md: -------------------------------------------------------------------------------- 1 | -# Gotta catch 'em all 2 | 3 | In short, how to select **which project contributes to**. 4 | Common question, that for me has an easy answer, but rarely does for newcomers. They are thrilled and excited, but as nerds in a comic book store, they have no idea where to start. 5 | 6 | Another issue newcomers face is an Open Source project using proprietary resources to perform processes or activities. This is a common misconception that may hinder the integrity of the project in newcomers' eyes. 7 | An Open Source project releases Open Source softwares and solution, this doesn't imply contributors have to use Open Source solutions to reach the goal (an example of this is the use of GitHub or GitLab). 8 | 9 | Basically, an Open Source community may have interests/behaviors different from other Open Source communities, that aren't however conflicting with our expectations, otherwise we won't be involved or engaged at all. It's better to engage, and slowly introduce suggestions/proposals, keeping in mind that this shouldn't happen on our “first day”. Who is going to listen to such a newcomer proposing to amend an established workflow or use different tools while the ecosystem is indeed tried and true and everybody knows how things are to be managed, after all? 10 | 11 | When you choose a community you are not choosing its users or contributors, you can only lead the project and the community itself in accordance with the ideals informing them from the start and follow its code of conduct. 12 | 13 | ## Just ask yourself few questions 14 | 15 | Are you willing to take part in a project? 16 | Are you feeling motivated and ready for everything? 17 | Are you willing to challenge yourself? 18 | So you are what we are looking for! 19 | 20 | You just need to ask yourself that last question: why? 21 | Contributing to a project without having a long term or personal goal is going to stop you from discovering the project itself or from feeling a part of it. Without a goal it will feel as doing homework in a hurry. 22 | The personal motivation is important because it allows you to tackle issues, it's like a marathon after all, you may think you can do it but realizing it takes running for 60 km is another pair of shoes... 23 | I see many people contributing to enrich their resumés, as legitimate and necessary as it is, again, this isn't going to help you feel a part of the project. 24 | 25 | You weren't fond of doing your homework at school, were you? 26 | This way you can give your best contribution and mention it in your resumé, but you are losing the real experience and the learning part that is really going to help you, and also you'll lose the experience of working on a big project with other peers. 27 | 28 | Often we don't realize how much our contribution is worth – in the Open Source environment and in other niches – nor we appreciate that what we learn by contributing (sometimes also having fun!) may be used elsewhere. 29 | One of the trending topics in self-learning is the transfer learning. Famous people like Elon Musk use this technique, so why don't we too? 30 | 31 | I> Transfer learning: the power to reuse the knowledge learned in some areas or from some experiences/people (even if completely different) in other areas or situations. 32 | 33 | Joining a project helps us to improve our knowledge and skills in a different context from the one we think it's natural for us, it might be learning a new language or understanding the logic behind a decision. 34 | In short it helps in strengthening our knowledge by living real experiences instead of “gathering” facts about them. 35 | 36 | The experience makes the difference, if it is also followed by meritocracy and satisfaction (normal things in open source) this may help us reach a new point of view. 37 | In this chapter we will discuss the questions we need to ask to understand in what area or project 38 | people may be interested, these may be useful also for you when looking for something. 39 | Remember that you need to know how to sell, and that it is useless to propose stuff to an audience that is not interested, it is better to get their interest and engage them. 40 | 41 | ## Which questions you should ask yourself? 42 | 43 | With recruiting we are talking about onboarding new people in your community. 44 | There are different types of recruiting and this manual will show the 1:1 approach, but the rest of the suggestions of this document works for every type of recruiting or community life issues. 45 | 46 | What is a person's goal when volunteering? 47 | 48 | * Opportunity to learn 49 | * Grow in responsibilities 50 | * Contribute with others 51 | * Recognition for their achievements 52 | * Allocating a time slot in their free time 53 | 54 | Before moving on, a very good book about persuasion, "Pre-suasion" by Robert Cialdini, that I suggest you to read (it is localized in other languages too) and uses this recap: 55 | 56 | ![Pre-Suasion infographic by Cialdini](images/4/principles.jpg) 57 | 58 | I bought that book while at the airport waiting for the last flight to come back in Italy after a Mozilla's All Hands in US (I don't recall which one specifically) and it has been very important in shifting my approach to persuading people. 59 | 60 | Anyway I wrote the first version of the doc "How to recruit and motivate volunteers" in 11/07/2016 before reading it and it was surprising for me to discover how much I was skilled in marketing and how much I improved in this field. This explains why I was motivated to run as a candidate for the Reps Council too. 61 | Back on track, the next pages are based on this document that is still available on internet (and mentioned in Mozilla Reps resources too). 62 | 63 | Think that these points are important to understand how much a project may be easy for newcomers: 64 | 65 | * What are the tools to get familiar with the community and for what kind of requests (forum, mailing list, telegram, etc.)? Example: IRC is not easy for newcomers from the UX to access, evaluate other solution like Telegram or Matrix 66 | * What are the tools that the project uses to document itself (manuals, wiki)? 67 | * The most common 5 issues that newcomers have in the project 68 | * 3 tips to contribute to the project 69 | * Why the reader should join the project 70 | 71 | Moving to the marketing side: 72 | 73 | * Are there big companies contributing or using your project? If yes, why? 74 | * How many volunteers do you have? 75 | * How many events do you organize? 76 | * How is the project maintained (private, companies, foundation, etc) 77 | * Interesting numbers or facts that show how your project is changing people's lives 78 | 79 | ### Rules for the interviewer on recruiting 80 | 81 | As talkative Italian I defined these rules for an informal chat (1:1 or 1:many-people) or a way to easier/better identify a (future) contributor. Basically you need to find what people are interested in, the area where they live or the language they speak, the background and so on. Like a job interview but with different meanings. 82 | 83 | * Ask friendly, you are talking with a probable volunteer so you can be informal, but don't forget that you are looking for a volunteer and not for a professional 84 | * Get informed about the interests of the local people in the area of volunteering you are looking for 85 | * Share a gadget with the interviewer like a sticker to get a friendly approach 86 | * Say clearly that this chat has the purpose of: 87 | * trying to understand what are the interesting projects for him 88 | * trying to define what are the local interests 89 | * collecting information on how to improve the communication 90 | * Speak about your experience as a volunteer: people love to listen to successful stories and yours probably is 91 | * You are "selling" a community with activities and projects, so look for the most intriguing and easy ones 92 | * Tell how your community is organized, don't get afraid to say that something is not working because honesty is very valuable, especially if you are working to improve it 93 | * Tell what are the plans for their involvement 94 | * Let the interviewer talk about them(self), everyone loves to talk about themselves so you can find important information for your purpose in a friendly way: a chat (in Italy with gestures of course) 95 | 96 | ### Round of questions for the interviewed 97 | 98 | {width=80%} 99 | ![Ask the real questions - https://www.reddit.com/r/linuxmemes/comments/akft99/why_i_use_linux_instead_of_windows/](images/4/ask.png) 100 | 101 | There are many factors that may shape these questions, like the skills of the interviewer, their professional background and hobbies (student, working, hacker) and why are they attending the event, so think carefully what to ask them. 102 | 103 | The first and second rounds of the conversation can be done together in person or online. 104 | This discussion can be followed with mentoring of the potential contributor after they join the community. This round of questions/chat can be done together so feel free to reassemble it as you want, this is my way of doing that part! 105 | 106 | The order of questions is important to understand the needs of the volunteer and what is most interesting to them. 107 | 108 | #### First round of chat 109 | 110 | * Do you know what the project does for you? Even if you are not using the project itself? 111 | * Ex: What does Mozilla do for you, even if you are using Google Chrome? 112 | It is a simple way to start a conversation about your “product” and engage them into a chat about their thoughts. It is a simple way to showcase that they don't know a lot about the product and get a volunteer interested. 113 | 114 | An example is The Document Foundation from LibreOffice that fights for open standard in documents that enables the owner of the documents to be the real owner, since they will know how the file is created. This comes in comparison with Facebook, where you can publish a photo but you are not the owner anymore after publishing. 115 | 116 | * What do you like about this project? 117 | * Ex: Why do you suggest to your friend to use an android device? 118 | * Why are you using that project for the first time? 119 | * Discover the reason of the choice and find others that can have similar interests 120 | * What other volunteer projects are you involved it? 121 | * Helpful to find projects that can be interesting to the interviewee. This will also help you to understand better their background 122 | 123 | #### Second round of chat 124 | 125 | Now the interviewer can talk about the projects that can be of interest for the interviewee. 126 | 127 | **All people:** 128 | 129 | * Explain why it's cool to join a community like yours 130 | * They can improve their skills 131 | * Meet new people 132 | * Learn how to work in a group 133 | * Improve their communication skills 134 | * Become a project manager, recruiter, translator etc 135 | * Feel part of a big group 136 | * Their thoughts are important for the project 137 | * Promotion 138 | * Share news 139 | * Do promotion in local events with gadgets 140 | * Need to know the communities 141 | * Advocacy 142 | * Like the promotion section, but if you would like to advocate for a project, make sure you have a good knowledge about the project or a specific part of it 143 | * Advocating about it in their own websites in their own native language or English 144 | * Initially a mentor is recommended to review the content 145 | 146 | Add also reasons based on your personal experience about issues in your country that can help you to mobilize, like educational topics. 147 | 148 | **For developers/tech people:** 149 | 150 | * Promote new technologies and add a few examples about what are you doing as a community about it 151 | * Online/live courses 152 | * Local groups (national or urban) 153 | * Hackathons 154 | * Talk about new features of a project that can interest for them 155 | 156 | These people, like me, are interested in discovering new technologies that can improve their performance on the job or just on a volunteer basis. 157 | At the same time they can be very interested in new technologies, how they work, what they can do and why they are better compared to the other ones. 158 | 159 | **For sysadmin/high technical people:** 160 | 161 | Usually a system administrator is not a classic tech audience as we usually think, they are not developers, but they are up-to-date with new technologies especially since that is part of their daily tasks. 162 | They have no time to engage on developers' specific topics, but they love to talk about “changelogs” or news about technology. 163 | Often they are also open source philosophy lovers, or they advocate a lot about security so this kind of topics is precious to them. 164 | Sometimes they don't have social profiles or smartphones, so they are not interested in social media because, simply, they don't use them. 165 | 166 | * Talk about the last feature of a technology: 167 | * Ex: Do you know that Firefox Nightly is a lot faster and support etc. 168 | * Talk about internet freedom issues: 169 | * Ex: Do you know about the copyright issue on doing selfies etc. 170 | * Talk about a new software that can change their daily workflow 171 | * Talk about how much fun and interesting is growing skills 172 | 173 | **For students:** 174 | 175 | * Talk about the skills that they may learn 176 | * Promote the recognition they may get that can be useful for their studies 177 | * Students coming from the same city can join the forces in their schools or universities and work together 178 | * They can meet other students across the country with the same interests 179 | 180 | They love to work together, learn and have fun. So you have to be prepared with easy to find and fun activities for them. 181 | This way they can see that is cool working together across the country or globally. 182 | High school students are a complete different case, they have a lot of free time to dedicate but very poor skills/English knowledge. 183 | They are the most difficult to recruit because you need to motivate them with something playful and spend time on mentoring them. 184 | 185 | **For non-English speaker:** 186 | 187 | * Which are your preferred activities on the internet? 188 | * What is your job? 189 | * You need to find an interesting area for them, if they are promoters for example, they probably may be interested in organizing an event 190 | * What are the problems you are coming across in the projects? 191 | * Ask their suggestions, get in touch with them now and not afterwards with an email 192 | * You can improve your English skills contributing 193 | 194 | People can be less interested joining because of the language barrier, so you have to find quickly something interesting for them and get in touch to convey the feeling that their thoughts are important even though they don't speak English. 195 | DON'T FORGET to leave a reference to the interviewee to contact the interviewer! 196 | Also, they are volunteers, not coworkers, so while everyone can be fit for these roles, you need to be sure there are other opportunities for the volunteers, that you simplified during the interview. 197 | It's true that not everyone can be a volunteer since not all the skills can be used on the current projects the community is involved in, but they can be always useful for promotion or advocacy. 198 | 199 | # Conclusion 200 | 201 | There are a lot of ways to interact with newcomers or noobs (to use a synonym from the videogame world), but often a map is one of the best ways to show the community dimension and also where they can find others. 202 | For some projects in Mozilla I developed a map that you can find as [boilerplate license in GPL](https://github.com/Mte90/List-People-on-the-Map-Boilerplate) to use as you prefer or get inspiration from. 203 | -------------------------------------------------------------------------------- /manuscript/chapter5-what-you-can-do.md: -------------------------------------------------------------------------------- 1 | -# What are the most common areas of activity? 2 | 3 | The prerequisite of the activities to propose is the mentioned chat. That way the volunteer is ready to do something, not alone of course, but with your help. 4 | Remember Open Source is not just project promotion but everything that keeps the project alive, to contribute in other areas can help your overall view and open new ideas to move further what you are doing and the project itself. 5 | They get confidence with your help in the project without experiencing the huge barrier of a link with a list of things to do. 6 | It's not always possible to have that chat, but in my experience without that the volunteer will always have problems to understand something of the project – why is this so or how that works for example. 7 | 8 | So if you get familiar with someone that already started to contribute, don't forget to have a chat like this because it may help the volunteer and your approach to the communications in the project itself. 9 | Also, don't be scared by the amount of things that you can find, think small and step by step. Like when learning to swim or ride a bike. 10 | You won't do everything from the first day, but slowly and based on your needs and skills, so let's do the same also for these activities. 11 | (Perhaps) one of the reasons Unix and Linux became so popular is the KISS philosophy. 12 | 13 | I> KISS in short or Keep It Simple Stupid states that most systems work best if they are kept simple rather than made complicated 14 | 15 | If this works with systems why can't it work with your tasks? 16 | 17 | I will mark with *D* the activities that can have a direct effect on the project and *I* the ones whose impact is difficult to measure, but are part of the things people can do even if they aren't active members of the project. 18 | Also, I divided the various areas by level, the higher the level the more experience is required in the project or for the type of activity (basically some activities require skills that you might not have). 19 | 20 | Just before reading the next chapter, ask yourself these questions "To live inside this project, ...": 21 | 22 | * What do you like to do? 23 | * What are your skills? 24 | * What do you like to learn? 25 | 26 | The answers to these questions will give you a personal overview of the area or topic that you want to get involved in within all the open source projects around you. 27 | 28 | PS: The joy of contributing happens when you see your change/improvement/localization/etc being used by everyone, and they don't know you are the author. 29 | The biggest gratification of a volunteer is the activity they did is used by others! 30 | 31 | Imagine your contribution to the project and the effect of other people on what you are doing to get a boost of motivation! 32 | This is also part of understanding what others are doing inside the project and how it is moving on, where you can help and maybe new blockers. 33 | 34 | Just a little note, there aren't only common areas but also tasks that are often repeated or that happen periodically, those are areas where a new volunteer or a contributor can act to improve the amount of time used to dedicated on something more important. 35 | 36 | ## First level activities 37 | 38 | ### Reviewing *D* 39 | 40 | This is the simplest activity for a new volunteer that can help you so much (as already said)! 41 | Think about it, you created a documentation, a paper, a design etc and you need feedback before going live and why not ask the new volunteer? 42 | In this way they can make an important contribution (a fresh eye on docs and the like) for that project and be involved in something very easy. At the same time they learn something about your activity. 43 | Moreover, this task can be performed without a group, enabling you to prepare something a little more advanced and understand how that volunteer works. 44 | 45 | ### Localization *D* 46 | 47 | Start from something that hasn't specific rules to see what are the skills and the English knowledge in a group. 48 | The rules of localization can hinder their interest or they may be something they have to learn, and this may slow down their interest. 49 | A new volunteer wants to do something without having to undertake a big course/onboarding to see if it fits them. 50 | Moreover, technical glossary may create a problem because the project can use specific terms and the volunteers don't know or understand them yet. 51 | Every project usually has rules or guides about how to help on localizing and is something that everyone can do. 52 | 53 | Until you try, localization is something easy to say, you have just text to translate. The real issue is to understand the context, how will a newbie read this? A developer and so on. This opens many questions and requires skills if you want to lead or help to move on this, that is one of the most common activities of an open source community. If you are looking for ideas (about how much this is not so easy), Mozilla published their [best practices for project managers](https://mozilla-l10n.github.io/documentation/localization/globalization_best_practices.html). 54 | 55 | ### Support *D/I* 56 | 57 | This activity requires a knowledge of the project, so I don't suggest that initially, but only for people that are going to like it. 58 | Probably a combo will be to translate something about Support. 59 | 60 | ### Testing *D* 61 | 62 | This is very important, as the reviewer is, because they can learn about the project and make it something to improve it. It follows reviewer rules. 63 | The difference is that Testing consists in trying to find problems or bugs, while Reviewing on the other hand consists in writing a document including all the problems without going in depth about implementation but only to receive feedback. 64 | 65 | ### Promotion/Evangelism/Design *D/I* 66 | 67 | Promotion is very important, you can have the coolest project but if the rest of the world is not interested, it will die. 68 | This is a lesson I learned in the startup world, often the most successful company may not have the best project, but is better promoted. 69 | Remember, a community without new people or engagement is dead, because people can lose interest quickly and fairly easily. 70 | 71 | A community in this field has 3 macro areas: 72 | 73 | * Social networks 74 | * Events (that has another section) 75 | * Assets 76 | 77 | Social networks are very important today and often they are not open source, but you have to go where people you want to reach mingle, so you need to use it. 78 | It is not the purpose of this book to move people among social networks, This approach IMHO is a very huge failure. If you are selling carrots, it doesn't matter if the people will use them for a salad or a soup, you have to promote them, not to tell people what is the best way to get updated about carrots, that is a very highly forced behavior on your part. 79 | 80 | There are a lot of tools that let you to create a team to schedule posts and reply on social networks, at the same time it's important to define rules on how to use them. This because it's going to be an official communication and you need to preserve the brand and avoid conflicts with it. 81 | So you can involve volunteers on suggesting what to share or to do public chat/AMA about different topics. 82 | 83 | Instead, assets are more on the organization side, you need graphic assets to share like posters, flyers, a logo and so on. This is very useful to better promote your events, and they can still be used after years from everyone. 84 | 85 | {width=80%} 86 | ![Confusion](images/5/logo.png) 87 | 88 | Maybe this is kind of excessive but it's a viral and funny joke in the open source community. 89 | You can't promote your project without a logo and assets to build the website, also posters or other kind of material that may be used for promotion (also from outsiders). 90 | 91 | ### Advocacy *D/I* 92 | 93 | Sometimes this area gets hidden but it's very important if done in the right and useful way. 94 | How many of you are bored of hearing about the 4 laws of Open Source? And which are the benefits of OS solutions (free and that you can modify it to your needs/likings)? I think we can move on. 95 | The project needs more buzzword to get promoted and to have a chance to fight with other competitors, so let's see some examples: 96 | 97 | * Promote Open Standard for documents because there are proprietary softwares used by doctors that are not compatible with one another, so our health data are closed but can save your life 98 | * Promote Open data because it is possible to track and discover new things around you that are catalogued. Do you know what is the amount of masterpieces closed in the Italian museums' warehouses because there is no space to expose them? Without exposure, you will have no idea about how much one single information can change a lot of feelings. 99 | * Privacy is important because it's possible to identify you even if you are navigating in private mode on the internet due to the proprietary feature of your browser full of bugs. 100 | * Open source doesn't mean it is free, but that the project is under a license allowing specific things. So it's sometimes possible to get the code by paying it for example, like in WordPress plugin/theme ecosystem. 101 | 102 | Those are examples of advocacy 2.0 for open source projects. We take an important fact that involves everyone, from the newbie to the non-IT aware person, leaving a few doubts behind, so people will remember the whole point and give information about something new that they don't know. Also, giving people a choice without being a dictator but motivating them to discover more and not only by talking about your project. 103 | For me this differs from promotion/evangelism because the purpose here is to motivate people to discover more and engage, not only to get a gadget or something new to promote. 104 | 105 | ### Event *I* 106 | 107 | Often events are seen like amateur gatherings where friends meet to always discuss the same things. 108 | This is true, but it's also a way to network, find new people and approach them to promote live. If you want to talk about open source for students, you have to do it in a school and you'll have to consider what they may be interested in. 109 | Organizing events and giving talks or hosting workshops is important. It's a huge way to interact with people, understand their mood and motivate them. Humans are social animals that need interaction, and sometimes they need to meet also offline. 110 | The people you engage in events are more prone to be engaged later as volunteers, because they see other people like them or that is possible to contribute because the others are akin to them. 111 | 112 | ## Second level activities 113 | 114 | ### Documentation *D* 115 | 116 | I already talked a bit about that previously, but I want only to repeat that it is very valuable for the project brand on the long run and to improve the quality of the project. 117 | 118 | ### Community management *D* 119 | 120 | This is a very important task that requires a lot of patience and good communication skills in addition to management abilities. 121 | The community is build around calls or meetings that need to be arranged periodically and documented (there is a guide in the appendix), understanding the various roles for the volunteers, organize the project/resources and recruit and motivate, write reports and proposals. 122 | Also, this is a very important role because usually it is a bridge between new volunteers and the project itself, because people see them more often. 123 | There will be a guide on how to motivate volunteers in the appendix, because also the most active one can have their moments of doubt or other things to do, and we need to re-engage them later, or we can easily lose their help. 124 | A little suggestion, don't forget that the community likes to be involved in decisions, because the project is open, so defining ways to let them join in is very important. 125 | 126 | ### Development/Infrastructure *D/I* 127 | 128 | If the project has a software, well it's important! 129 | Without skilled developers the project will be dead in short time, because it will be abandoned and you don't want that. 130 | People with skills, like [manage the codebase or how to do the changes in the right way](https://pncnmnp.github.io/blogs/oss-guide.html), are required to lead it and plan what to do, but also to mentor new people and simplify the onboarding. The development area usually has a very high learning curve to contribute and it is important to have a balanced way to access it. 131 | 132 | Also some projects have a different team called Infra/infrastructure/Meta/SysAdmin, the purpose is to keep moving on the official websites and the various tools used by the project, from the ticket system to the git instance. They can be developers that create a new theme, specific integrations or sysadmins that keep the server safe and updated. 133 | To get the best from your users, it's important to offer the best tools, this means that they don't need to be at 100% FOSS projects. Well, it would be better but sometimes you cannot do everything in this way, maybe in the future your needs can be inspiring for something new or create new opportunities. 134 | It is important just to focus on priorities, is it more important the tool or your main project in that moment? I ask this because often focusing on new tools or develop is thrilling for contributors, but creates issues on maintaining them or keep focusing on the goals of the real project. 135 | 136 | # Conclusion 137 | 138 | The last mention of this chapter is how these activities fit in the structure of the community accountability. Basically every activity or community has various role levels: Leaders, Maintainers/Committers, Contributors. 139 | Those help on evolving the community and giving different tasks, but at the end it's always a volunteer, it is just a volunteer with more skills that got this role maybe for experience or necessity. In Open Source the **meritocracy** is always a rule (always in projects where there is no business), where the experience is knowledge/facts based and not financially. We have to consider also the [Peter principle](https://en.wikipedia.org/wiki/Peter_principle) "employees are promoted based on their success in previous jobs until they reach a level at which they are no longer competent, as skills in one job do not necessarily translate to another" that can happen in open source also if there is meritocracy as the Maintainer role can have too many duties. 140 | 141 | Open source involves a lot of areas where you can find a home for your interests and people like you. The homework that I can give to you is to think what you like most, what will be the first area and the last one that you want to do in your journey. After this, it is time to discover how it really works. 142 | -------------------------------------------------------------------------------- /manuscript/chapter6-find-time.md: -------------------------------------------------------------------------------- 1 | -# How to find the most important value that you have: Time 2 | 3 | This is the biggest question that others ask me when seeing my contributions, or when they are interested in doing something. 4 | I can't talk in your place, but there are different ways to save time and I will show you my way and few tips. 5 | Remember that giving your time is already contributing, next step is to decide what you are contributing in. 6 | 7 | Yes, not everyone has time and it may happen that the most qualified people don't have it, so they can't grow in the Open ecosystem. This is something that the project can't change, so they can help on increasing engagement of newcomers in simple tasks and because of that they will find more time for contributing. 8 | If we find time to watch a TV series, a football match, play videogames, eat and so on and so forth, it is because we have an interest in that. 9 | 10 | Don't forget to consider your job in that, it isn't something that you can do quickly but you can help on changing the mindset of your workplace to understand the power of it. From specific tools or projects that improve your products to better tools for you. Maybe your company will see it is good that you invest your time on contributing because the company gets what they need and maybe also an improvement of the brand itself (other than more skills for their employees). 11 | 12 | So without your first steps you can't think to do something, time doesn't grow on trees. It depends on motivation but also on a good workflow that improves your daily life. 13 | 14 | {width=60%} 15 | ![Give back is not a "like" on social networks](images/6/contribute.jpg) 16 | 17 | My workflow is based on: 18 | 19 | * To-do list 20 | * Optimization of tasks 21 | * Use your boredom/break times 22 | 23 | ## To-do list 24 | 25 | I contribute in a lot of projects and usually it's because I need something for my job, for my needs or because I want to help. 26 | I ordered them according to their priority and again this shows also why contributing is important because it may improve the quality of what you can do in your job. 27 | With work, I mean a patch to something that I need to use, open a ticket for an issue, translate something or also merely study something and do a new project based on others. 28 | My needs are specially to enhance the next part of my workflow but sometimes also for daily usage of my workstation, like a browser extension or a script to automate stuff. 29 | I want to help: this instead is based on my free time, but how I can merge all of them in my daily life? 30 | 31 | I have a wall of post-it, browser's bookmarks of tickets, notes about things to do and so on. I prefer to write any idea to free my mind about those thoughts and focus on something else, maybe I can re-catch them after days or weeks. 32 | I order them based on the priorities and based on performance time and the third part of the workflow. Another point is also part of the project management, check who can do that task and propose it to them. In this way you are motivating a new volunteer, becoming their mentor (maybe), using the skills of a new volunteer and saving time to do something else. 33 | 34 | Learning to delegate is very important and lets you focus on the things that you can do better, in the meantime onboarding new people that (maybe) can help you on that task later. 35 | Another suggestion in case you have tasks that you don't want to do, instead of doing them later it's better to do them as first. In this way you feel more relaxed and free to do the rest of things in queue. 36 | 37 | ## Optimization of tasks 38 | 39 | This is very personal and I suggest you to read a few books (check the appendix); anyway for this I suggest to have a look to your tasks. When you do something always in the same way many times a day/week, maybe it's time to find a solution to simplify, machines are perfect for this kind of tasks. 40 | One solution may be to get a mouse with side button to switch tabs or hotkeys to launch programs (or to learn the hotkeys themselves) and so on. 41 | For this I suggest checking the [Kaizen philosophy](https://en.wikipedia.org/wiki/Kaizen), that is basically a way to do a little change that improves something and continuing to perform a lot of tiny changes that in the big picture create a big puzzle completely different from the previous one. 42 | 43 | As example after optimizing the usage of the keyboard I moved to optimizing my daily routine, like checking the news-feed after lunch or saving things to read during “news-feed Moments” in the bookmarks during the day. Also, try to dedicate a specific amount of time to emails every hour or day based on the momentary needs and this is another way to aggregate stuff that requires your attention. 44 | Anyway, this can be stupid, any second you save is a way to do something else and make a better use of your time; with tiny steps you can see more tasks that you can optimize like improving the spam filter settings of your inbox or a new feature of your computer. The optimization doesn't need to be intended to save time for open source, but time for you to use for what you like but also to be faster. 45 | 46 | ## Use your boredom/break times 47 | 48 | In my workday in front of a computer I do a lot of things because between tasks I take short breaks, during them I check my todo list and the one that I want to do (based also of the time that I want to invest). 49 | As example, I do an important task, I deserve a long break, maybe 30 minutes or more, so I can perform a task about something I like. This kind of trophy seems like a dog's treat *that was a good boy*, a lot of coaching books suggest this technique because it improves your attitude on the job but also your mood. 50 | Getting a break is helpful because it resets your brain so you can start fresh (even for 30 minutes) and work again on the same task. That's also true if you hate it or didn't find a solution before. 51 | 52 | They suggest a piece of chocolate, I do something else. Also, doing such breaks during the work is a way to not get distracted or tired working at the computer, we easily switch to different things keeping the attention span working. Of course, I sometimes dedicate the afternoon to something specific, it may be work or an open source task but it's on me to decide based on the priorities what to do. 53 | This should happen to you also, in this way you can better value your time, your work and get more satisfaction from it. 54 | 55 | Another way can be defined as a hobby that you want to invest your time, as example for myself for an year I worked to improve my knowledge in other spoken languages. In this way you can appreciate more how you are using your time and define what kind of break you need based on your time availability. 56 | 57 | ## Leadership 58 | 59 | It is a fact that veteran volunteers become the reference and usually are getting a lot of requests for help or for their feedback on something. 60 | Those are difficult to plan but it's possible if you leave a spot in your day to check if you have this kind of requests. 61 | Leadership without involvement is impossible, for this reason usually when there is someone that wants to lead and no experience, there are no interests on what they are proposing. This is kind of normal, you need to get the respect from the community in this role, taking care of it by replying to the requests is important. 62 | 63 | ## Delegating 64 | 65 | Delegating is not an easy task, especially for founders or people that are involved a lot in any situation. Anyway this is the first skill that any leader needs to know to achieve any goals of the project. 66 | To delegate doesn't mean losing control, but instead is a way to empower others (and grow the project itself) as we say above in this chapter. 67 | As contributor or leader it is important to empower others to create better relationships but most important to do a better team job and create a better team. 68 | 69 | The benefits of the delegating can be very surprising because with empowering others there will be probably new opportunities to grow or change something that you never think of. 70 | The real benefits to you are first of all for your health (avoid burnout), understand what are the things that only you can do and what are the areas where you are acting as first person. 71 | Understanding this role, tasks and areas is important to have some numbers, see bottleneck, open new opportunities to grow and so on. An example is: you have the password for the various social accounts but they are dead because you are busy on fixing bugs or localizing, instead you can create a team or delegate to someone that you trust to follow it for you. 72 | Another one: your project doesn't have any documentation because you want that everything is perfect and the project is not yet ready for your standards, but someone that has better writing skills can do a documentation also for the actual status of your project. 73 | 74 | Another important fact about delegating is to avoid gatekeeping. Gatekeeping is one of the bigger issues (for me) in the OS world. 75 | Basically it's blocking the access to important roles or onboarding of new volunteers in the project or in specific areas. This creates a bad mood inside the community, bottleneck, feelings for a fork, bad reputation of the project, revolution or refactoring and many others. Basically it blocks innovation inside the community and your work because there are no new people that can replace the other ones that maybe are busy or left the project. 76 | In other words a community with gatekeeping is a community/project that is going to an awful ending. 77 | 78 | ## Burnout 79 | 80 | About this topics a lot of people with better knowledge than me wrote a lot of books or [websites](https://selfcare.tech/). 81 | My experience is basically to understand what are the priorities and define time slots, where after those you don't care except for very important things (it is a skill to understand what are those). 82 | 83 | Usually burnout has different symptoms: isolation, feeling undervalued, recognition, values conflict, motivation loss and lack of autonomy. 84 | There are some things that you can do easily: automatize tasks (I use the rule of 3), understand what others are doing and how, communicate better. 85 | 86 | I> Rules of 3 87 | I> I don't remember where I found it but I have my own version: if it's a task that I do with the computer like 3 times a day or for weeks always in the same way, I need to automate it. Especially if this task is based on a lot of steps that can create confusions. In case it is something where you cannot use a computer, there are other ways to automatize things in these days with Zapier or IFTTT or if you are a developer you can find some ways. 88 | 89 | # Conclusion 90 | 91 | I can't show you how to save your time. It is on you to analyze your tasks and your time and understand how you can optimize it to do whatever you want. 92 | The first step is to learn from others, for example I like a lot to read about how big companies or projects changed (or explain) their workflow like in those examples: 93 | 94 | * [How WhatsApp scaled to 1 billion users with only 50 engineers](https://blog.quastor.org/p/whatsapp-scaled-1-billion-users-50-engineers) 95 | * [Shipping a security update of Firefox in less than a day](https://hacks.mozilla.org/2018/03/shipping-a-security-update-of-firefox-in-less-than-a-day/) 96 | * [The 2022 r/place story from the Italian view (and from bots)](https://daniele.tech/2022/04/the-r-place-story-from-the-italian-view-and-from-bots/) - This is mine 97 | * [Lessons learned from my 10 year open source project](https://medium.com/@micallst/lessons-learned-from-my-10-year-open-source-project-4a4c8c2b4f64) 98 | 99 | Or reading post mortem/outage after big bugs or hardware failures: 100 | 101 | * [Mozilla Add-Ons Outage Post-Mortem Result](https://hacks.mozilla.org/2019/07/add-ons-outage-post-mortem-result/) 102 | * [GitLab.com database incident](https://about.gitlab.com/blog/2017/02/01/gitlab-dot-com-database-incident/) 103 | * [Facebook: More details about the October 4 outage](https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/) 104 | * [Retrospective and Technical Details on the recent Firefox Outage](https://hacks.mozilla.org/2022/02/retrospective-and-technical-details-on-the-recent-firefox-outage/) 105 | 106 | Why? Because in these stories you learn a lot about work organization and how to organize yourself and others with a real story, like a novel. 107 | Also in those cases it is important to save your time and do what you have to do very quickly. Don't forget that Open Source is basically learning from others and using this rule also in other context is useful after all. 108 | 109 | Just think about it because in this fast world where everything changes so easily is important to understand time's value. 110 | -------------------------------------------------------------------------------- /manuscript/chapter7-documenting.md: -------------------------------------------------------------------------------- 1 | -# Documentation! Documentation! Documentation! 2 | 3 | Maybe it's not clear, [documenting is very important](https://www.mcls.io/blog/encouraging-a-culture-of-written-communication) even if it is boring. 4 | It is so important that after Google Summer of code there is also [Season of Docs](https://developers.google.com/season-of-docs) to support project to help to build... their documentation! 5 | You have no idea how much it may be powerful to document and allow for these resources to be used from everyone. 6 | You need to leave the environment better than before, you are the veteran, the one survived to the war about the new UI or the logo changes (I am talking to you Mozilla) and because of your story you need to be the Master. 7 | You have to stop making the things worse, before the new logo change or the new motto to be ready, moving on your hobbits to the next fatigue and making everything better. 8 | 9 | Probably too much cinematic but I think you got the point, before performing better than what we have now you have to stop things from getting worse. 10 | 11 | This book is based on documents that I have written during the years and also this chapter is filled with things gathered in various resources that I have written for my communities and maybe it can be inspirational for you! 12 | 13 | Just as example how FAQ, guide, tutorial, wiki and so on can grow during the time just with a first kick to the ball (if those are open to everyone to contribute). 14 | 15 | ## How to analyze an activity 16 | 17 | This is part of a template I prepared to help in defining activities with the feedback from other volunteers, in an objective way and to be later voted from everyone. It is based on the coaching method as workflow but is quite simple: 18 | 19 | * Consider an activity such as organizing an event about privacy and social networks 20 | * What kind of resources do you need? Location, projector, internet, graphic promotional assets 21 | * Did we do something similar in the past? About privacy on traveling. What have we learned from that and what can we replicate? 22 | * Advantage of this activity: doesn't require a lot of technical knowledge 23 | * What is missing in the proposal? An update about the privacy during this year 24 | * What is missing for your audience? To gather a national audience we need local user cases 25 | * Kind of public we can involve? All the ages owning at least a smartphone 26 | 27 | This analysis is very important to define the priorities and how to promote the activity itself based on the metrics of the event itself. 28 | 29 | ## How to organize a social campaign 30 | 31 | ### Resources 32 | 33 | Every social campaign requires different digital assets to the organizers, here you can find the localization of a guide I wrote few years ago for the PrivacyMonth campaign for Mozilla Italia. 34 | 35 | * List of messages to publish on social networks available before starting (already reviewed) 36 | * If they need to be localized, do it 3 weeks prior to the campaign to allow for reviewing time 37 | * Think about some resources to give out in the language you need 38 | * Avoid paper publications and look for impartial providers like the police 39 | * Usually it's better to share something published from someone else instead of writing a new one 40 | * Resources in English are allowed if: 41 | * They are technical stuff 42 | * There aren't resources in your language 43 | * There is an explanation in your language attached 44 | * Avoid English terms as much you can 45 | * Reference things used in your country to provide a better example 46 | * Remember netiquette 47 | * On Facebook wait 30 minutes for every share 48 | * In the afternoon there is more engagement for what you share online (especially with a photo) 49 | * If you include words like News or Update you can get more engagement 50 | * Graphic assets 51 | * Provide images only when they are localized 52 | * Provide posters for offline events 53 | * Talk 54 | * Provide talks made by the community in Italian in powerpoint (to avoid file formats issues but you can use ODP with LibreOffice of course) to review all together, by using Google Documents (as now Collabora Online is not so performing and publicly available) it's possible to work together more quickly 55 | * For the event get always a PDF version to avoid issues 56 | * Evaluate topics that fit better with the local necessities to use along the main topic 57 | * Create different levels based on the various knowledge for the audience or speakers 58 | 59 | ### Roles 60 | 61 | To create a team you need to specify the various roles to work all together and avoid conflicts and issues. 62 | 63 | * Talk 64 | * A person who can do the talk and later plan a meeting to review it 65 | * Try to not put strange colors and keep the same graphic style 66 | * Graphics 67 | * A person or more that can prepare the resources in your language 68 | * Social 69 | * A person or more, than schedule the messages 70 | * Remember the url shortener 71 | * Keep track of the statistics from the start to the end 72 | * Event 73 | * A person to reference to for help on preparing the schedule for the various event organizers 74 | * This team coordinates with Graphic and Talk 75 | 76 | ### Events 77 | 78 | A social campaign can also include live events: 79 | 80 | * Posters need to be the same with consistent styles only with different information like location and timing 81 | * Talks should be already available from the community/organizers 82 | * Create a schedule based on the audience that you will have, don't get confused by the campaign 83 | 84 | ## Define the issues on onboarding 85 | 86 | * Why people contribute to the project now? 87 | * Why they joined the project? 88 | * Define what are the volunteers interests 89 | 90 | With those questions we have different "Personas" to start discussing and see which ones are missing. 91 | 92 | * Categorize the volunteer types 93 | * Define their usual workflow 94 | 95 | Next steps: 96 | 97 | * What you can do to improve this workflow? 98 | * Which new activities can be interested for them? 99 | * Which activities are missing the participation of new volunteers? 100 | * Which are the broken parts of the onboarding? (resources on the website, getting accounts to platforms and so on) 101 | 102 | # Conclusion 103 | 104 | Take this chapter as inspirational for you to start writing documentation about community management but also on other things. Write the most stupid things too but write them, the next one that is going to replace you probably won't know everything. 105 | Instead, if you are interested on discover how to write documentation from the language or the style, there is [this guide by Google](https://developers.google.com/style). 106 | -------------------------------------------------------------------------------- /manuscript/conclusion.md: -------------------------------------------------------------------------------- 1 | -# Conclusion 2 | 3 | ## What is the future of the open source world in the next years? 4 | 5 | Open source was a scary topic years ago, they used to see you as an amateur. This is fake news today, it is not always true. Only because it is free, it doesn’t imply that it’s an amateur thing but it can be a good alternative. 6 | Do you know Volvo invented the seatbelts but the patent was set up as free to be used for all to improve the security for everyone? 7 | I think we need people to discover how the open world changed everything already. For example, we could grant them the opportunities to participate during a time slot in their working hours. 8 | 9 | From the routers in every house to connect to the internet, that are cheap because open source technologies allowed internet to spread everywhere and so on. 10 | We as people need to let the rest of the world be more conscious for what there is around, as we are doing with climate change. 11 | Take as example the power of the **Open Data**, that in some countries are unknown or discouraged from the public governments (I am pointing my finger to you Italy) and how much they can change the approach to the big archives that every country has. 12 | 13 | The future is “We need more conscious people in all the topics”, with internet we have the knowledge within a tap’s reach (not only a click with the mouse) but we are not using it the right way. We need to consider the idea that they don’t know something and need to understand what they miss, in this case why they are using something and if there is something better for different reasons. 14 | 15 | {width=80%} 16 | ![Individuals who never used computer (2017)](images/extra/no-used-computer.jpg) 17 | 18 | Basically we need to move on those points (explained in the next subchapters): 19 | 20 | * From “Let’s migrate to Open Source because is free” to “Let’s migrate to Open Source because it offers more features” 21 | * Evolve the concept of the license 22 | * Be more user-friendly 23 | * Get better promotion 24 | * Open source doesn't mean to release the code 25 | 26 | ### Use Open Source software because is better not because is free 27 | 28 | Just this title has some issues because Open Source != free, take as example WordPress ecosystem or other CMSs where additional software is sold but the code is public (and not obfuscated/minified). A software can be open source but this doesn’t mean that it’s free, it needs to follow the 4 freedoms that don’t mention the money factor. 29 | 30 | We as community and users need to move on the open to this new level, it isn’t anymore a matter of money as before. Taking as example LibreOffice having to compete with Office 365 that is a cloud service sold to public governments and is cheaper than Office suite to install in the computers. 31 | So IT departments prefer Office 365 because they don’t need to take care of supporting it, installing it and so on (welcome to the cloud baby) but this opens the door to other questions. Where are the files hosted? In what country? Are theme secret/privacy information on them? If I cancel the subscription what it’s going to happen? 32 | Open source lets you run software in cloud, but we need to change the approach on promoting it because the old slogans don’t work anymore. 33 | 34 | This was the way people abandoned Internet Explorer, not because Firefox (the biggest competitor at the time) was free, but because it was better, as Media player against VLC, WinZip against WinRAR (everyone used it without buying it), WinRAR against 7zip etc. too. 35 | Now people don’t think to these tools anymore if they have better ones (biggest example Firefox Vs Chrome or Chrome Vs Chromium). 36 | 37 | This is also part of the fact that big companies and a lot of projects in the world use open source components without giving anything back, no money or other types of contribution. The biggest disadvantage of open source basically, but that it’s not the right way to work in the open source world properly. Those days there was a lot of discussions about funding an open source project or the maintainer itself, it’s not very easy but is something that the users should ask every time they use something for free. 38 | 39 | The [Open Source Contributor Index](https://opensourceindex.io/) it is a practical way to see the biggest company contributors to the ecosystem, that are leaded by Google, Microsoft and Red Hat. 40 | 41 | ### Evolve the concept of the license 42 | 43 | It is cool to get the source code but is quite useless if it is not possible to run it. It is like when I got a Blu-ray DVD as birthday gift, but I had only a DVD player that wasn’t supporting it. 44 | Today with the cloud we need to understand that the code access is enough to be open. 45 | [Frank Karlitschek](https://karlitschek.de/2019/08/open-source-if-more-than-licenses/) (the creator of Owncloud and Nextcloud) explained very well the issue. The 4 freedoms were created when the computer in the home was the unique way to access a software, now with cloud and mobiles there are different kinds of resources. Access to the code was enough to get Digital freedom, but now it isn’t anymore. Our data are not anymore our files but also our interests, our photos and so on. 46 | 47 | Also, the [Open Source Initiative is evolving](https://opensource.org/sites/default/files/public/2021-OSI-AnnualReport-final.pdf), and now the membership is not only paid, in this way they quadrupled their members (500/2000) and improved their workflow on evaluating licenses. To reach more people and improve the awareness, it is important to go out on our bubble. 48 | 49 | Open source is for me when: 50 | 51 | * The code is open source 52 | * There is a community leading the project (behind a company too, like in Docker, Kubernetes, or Arduino) 53 | * There is no Dictator (I don't mean the Benevolent Dictator for Life) 54 | * All the files to use it are provided (like Machine learning models as Mozilla’s DeepSpeech with Common Voice) 55 | * Everything is documented and follows a standard 56 | * Release management is not happening at the time of major releases only with a cadence of 3-4 months (or less) (people need to be aware of the changes and to be able to deploy without any hurry) 57 | 58 | I> Benevolent Dictator for Life 59 | I> (or the BDFL) is a person that leads the project to the future, usually is the founder/creator of the project. Also this role has the last voice on every discussion and in some projects this is important because it helps on closing discussions or getting a decision and avoid too much flame wars. In Linux as example is Linus Torvalds, in Python was Guido Van Rossum, Larry Wall for Perl and so on (they created the project). The point to say Benevolent is because as it is open source it is always possible to do a fork with new leaders if there are big issues, for these reasons is a Good Dictator that acts only when needed. 60 | 61 | ### User friendly because not all the people love the command line 62 | 63 | A common problem years ago was that open source software was very ugly or difficult to use even if powerful. 64 | Now that has changed, but not all the projects are offering user friendlyness, this is a problem that requires more people testing and also more UI designers helping with that. 65 | The [Open Source Design](https://opensourcedesign.net/) community is the first example, also KDE with their [Usability & Productivity](https://pointieststick.com/category/usability-productivity/) newsletter and Mozilla with [weekly updates from the nightly version](https://blog.nightly.mozilla.org/) or [The Document Foundation](https://blog.documentfoundation.org) that often release stats or updates about the projects. 66 | User friendly is not only a better UI or a cool logo (that changes every few months, yes Mozilla I am talking to you) but informing the people about the updates during the cycle to involve them more. 67 | Other projects involve them more because they offer more news and people can *gossip* like a TV series, well humans are simple sometimes and is something that the open community can replicate. 68 | 69 | Communicating better and being more friendly in everything (the purpose of this book indeed) are the future. 70 | 71 | ### Communicate better to fight who has the money to sponsor everywhere 72 | 73 | The legend that “if it is on all the billboards it means it is good” is not true. The high competition in the digital world changed everything. 74 | 75 | We can promote it without money, if we make that together and if the project provides the promotional materials. 76 | In this case not graphics assets or gadgets but data to share. The scandals of the last years with social networks have exposed the fact that data are the new currency that, if used in the right way, may also change an election, so let's figure out how to use it to promote the open philosophy better. 77 | Not only the machine wants data, but also people, because we are in the world where facts don’t matter and only real data, a lot of it, can change this bias. 78 | 79 | Open source needs more marketers, a sector that often isn’t involved in open source because they don’t care (maybe) but it’s a fact that we need them. 80 | 81 | ### The code is not enough anymore 82 | 83 | Today if you ask to someone that develops or is involved in IT "What will you do with your project if you have to release it open?", the answer will be "just a zip of the files put online". 84 | As we saw in this book, Open Source doesn't mean just release the code, but let people to use it and also discover it. 85 | 86 | A real example of this is the release of the source code of an indie game, VVVVV, that was announced as "VVVVV goes Open Source" but the project didn't have a good license, so it was forced to change the announcement with "source code release". There is the [original blog post announcement](https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/) with all the blog post comments but with a research is possible to find also various tweets and discussions about this misunderstanding. 87 | So the code or the core of the project publicly available is not enough because you can only read it, as the legal definition of that is a proprietary project. Without a license that explains how you are allowed to use it, it's not possible to do anything. Think about Doom or Duke Nukem open source releases and how they changed the world, also other games that released piece of that letting to create new games or new technologies. 88 | 89 | The other point is the promotion, with GitHub/GitLab a new issue awakes, someone starts a project, releases the project with a license and so on. At a certain time the owner is not online anymore or interested on working with that and the project becomes an abandonware. So a new developer takes it with the creation of a fork, the problem is that for the rest of the world maybe this new hope is unknown. All the links and information refer to the original that is abandoned so no one will find the fork. Like a Jedi needs to master the force and knows all the aspects of that, also with a release public you need to be ready about what means. 90 | 91 | {width=80%} 92 | ![Offering also the best solution to involve and contributing is important to succeed - https://twitter.com/CarlKDE/status/1387754944678215682](images/extra/tweet-kde.png) 93 | 94 | Often the best solution is the one that the maintainers or veterans think it is the best, but with new technologies there are new solutions that simplify various tasks that for new people can be very difficult to do. 95 | 96 | Personally when I find abandoned projects I ask for updates or look for a new maintainer, but often is very difficult to get an answer. Pinging on Twitter or other social media (not everyone publishes their private email address) so the joy of contributing or access to nice things crashes against a Death Star, that is the oblivion of the abandon. 97 | 98 | So we need to evangelize better this fact and explain that the code is just a piece of the brand and the meaning of the project. 99 | 100 | I don't want to forget also that FOSS is not just promotion. With fediverse and new people discovering this world I see more people that want to do promotion, but it is something that we need after all? In this book I talked a lot about communication and promotion, at the same time there is promotion that changes things and promotion that is useless or not working. 101 | The project needs it but often is more important instead to be one of the fans in the stand to be the player in the game, maybe not the player but maybe the coach or the doctor. 102 | 103 | ## The Italian case 104 | 105 | I am writing this section in English, but is focused on the Italian situation about digitization and awareness about digital matters. 106 | 107 | In Italy, the Covid period was one of the biggest reasons to upgrade or understand that digitization is something that improves the work/life quality (like in other parts of the world). The real difference (to me) is that involved a lot of the public administration that was always very slow on updating itself but also on the knowledge of the public employees that now were forced to learn a bit about how to use the computer, not just to play Solitaire. 108 | 109 | {width=90%} 110 | ![Italy is one of the most decentralized country in the world](images/extra/italy.jpg) 111 | 112 | As you can see, this is the real situation, with people that are not gathered mainly in big cities like it happens in other countries. This opens to various discussions and different situations about how to evangelize or digitalize a fragmented country. 113 | 114 | Open data are matters of various association as they are not easily public as digital rights for Italian government propriety like the Colosseum or also [The Good Lobby project](https://www.thegoodlobby.it/campagne/) for signing petitions about various topics from privacy to digital rights. Let's split in two different paragraphs. 115 | 116 | [Open data in Italy](https://dati.gov.it/) have various issues from the license and the quality of them (when they are available), in fact [DatiBeneComune compaign](https://www.datibenecomune.it/) with 58110 signers and 287 organizations works on improving this with a monthly newsletter that will keep you updated about what they are doing. The Government now opened the discussion to the [Open Data guidelines](https://www.datibenecomune.it/2022/07/18/datibenecomune-ha-scelto-di-prendere-parte-alla-consultazione-sulle-linee-guida-open-data/) that is like the first time that something like this is happening (at same time the bigger Italian association for Open Data promotion wrote a [guide about legal aspects on the topic](https://ondata.github.io/aspetti-legali-opendata/)). 117 | 118 | The [Freedom of panorama in Italy](https://en.wikipedia.org/wiki/Freedom_of_panorama#Italy) doesn't exist even though we are famous for tourism. Based on a 1941 law we are locked to a definition that says that photographic reproductions of public space are allowed if not create competition against the economic values of the object. This creates issues on Wikipedia side as it is not possible to make certain photos to the [Pisa Tower](https://en.wikipedia.org/wiki/Pisa_Tower) or [Castel Del Monte](https://en.wikipedia.org/wiki/Castel_del_Monte,_Apulia) and publish it under a Creative Commons license, if there isn't any act that allows for any of them. The recent European law about copyright didn't help on pushing changes to this law and every year for the Wiki Loves Monuments (global photographic competition) for every local public government they send a request with a list of monuments. 119 | 120 | From the software side instead, since the born of the [Italian Digital transformation team](https://teamdigitale.governo.it/en/), various things have changed. Not just the [Official Forum](https://forum.italia.it/) but also the procedure on what they are doing with [GitHub](https://github.com/italia/) (278 repositories at the time of writing). Including a webpage [Come Partecipo](https://come-partecipo.italia.it/) to find projects to contribute to, that is based on [What I can do for Mozilla](https://whatcanidoformozilla.org/). 121 | There are public projects like templates for WordPress, Guidelines (with web version on ReadTheDocs), mobile apps, SDK, design kits and others. 122 | 123 | Another innovation is the new role on INPS (the national institute that manages the italian money retirements) with Chief for innovation that writes a [yearly recap of new things](https://vincenzo.me/2022-kamehameha-inps/) on his blog also with a bit of nerdiness. I can remember that they launched their [mobile app as OSS](https://github.com/INPS-it), a new platform to [report issues](https://medium.com/developers-italia) and many other things. 124 | 125 | This was something that 5 years ago maybe for a Hard Sci-Fi author was impossible to think of. Like also the fresh news that [Inps, Inail and Istat are working together to create in 2023 a unique software house for their needs](https://www.wired.it/article/inps-inail-e-istat-stanno-fondando-una-software-house/) (INPS is the national institute for retirement, Inail the national institute for work injuries and Istat the national institute for statistics). 126 | 127 | A tiny things to remember is that with Covid in Italy was defined a new type of work, `smart working`, with the term in english that as usual for italian language doesn't have any "competitor" in other languages. The difference with remote working for the Italian law is that with Smart Working you can go to the office sometimes, instead of remote working that is something stable. An example of our technology weirdness... 128 | 129 | Two things are very interesting for the purpose of this book about what they are doing. 130 | 131 | ### PublicCode.yml standard 132 | 133 | 134 | > A metadata description standard for public software that is easy to use both for developers and people with less technical background in order to make the software developed by Public Administrations and Public Organizations easily discoverable. 135 | 136 | In few words, a file that you can put in your git repository that is like an identity card that allows to index it with references to the maintainer and dependencies. 137 | The idea is to improve the discoverability and if that project is suitable for a public administration and to use the standard also in other countries. 138 | 139 | ### Catalogo del software di Riuso 140 | 141 | That in English "Reuse Software catalog" that Italian public administration can use it. Like every big organization, not only departments don't talk to each other, but also cities or regions, but they have often the same needs, so why develop the same software multiple times? 142 | 143 | This is the idea at the end, a way for public administration where often managers have not so much knowledge on IT to find software already available and open source developed by themselves or by others like LibreOffice. 144 | 145 | This project uses the standard we saw to fetch the software list, but the website is more friendly as it includes more information, not just a description but people that you can reach to ask questions. It is something that for a bureaucratic organization is important and that in OSS is often ignored. 146 | After all, if you are maintaining a project you don't want that people reach you for questions like "if the software can do this or that?", or if you can implement something just for them, especially if it is someone that maybe will pay you... 147 | 148 | This is an example about how to improve the awareness for organizations that is not like the usual software alternative list, because it can give more information that are valuable to the people in charge of decisions. 149 | 150 | In a first world country there are limitations or issues like elsewhere, but it is important to see that internet, public awareness and young people are changing the situation. Also, if the [Italian case](https://profilo.forumpa.it/doc/?file=2021/2021_FPA_Data_Insight_Lavoro_pubblico_2021.pdf&confirm=yes) seems that in the public government the people under 30 years old are the 4%. Especially in [School institution the 58% is over 50](https://www.truenumbers.it/eta-degli-insegnanti/) but in Ocse countries is the 35%. 151 | 152 | I know people in Italian universities that still ask questions about Floppy disks to students of psychology for example, or that teach using computer with very old operative systems because the professors don't know how to use the modern ones. 153 | 154 | The open source awareness lets us spread all those ideas and change the situation, it takes a lot of time, but gathering various pieces we are getting something. To do these changes evangelism is not required, but also facts like what I am saying. Not just "Hey, that city migrated to Libreoffice" but people that do things, develop software and explain things in a way that the [listeners can understand it](https://docs.italia.it/italia/developers-italia/guida-sviluppo-gestione-software-libero/it/2022-05/index.html) (Like the Italian guide by the Digital team for managers to understand OSS and how it affects them). Maybe with a catalog with unusual information or showing the issues on various laws. 155 | 156 | ## Thanks 157 | 158 | As I already said, I decided to write this book because I wanted to gather all the things I documented over the years, my thoughts and share my experiences. 159 | My experience level couldn't be as it is now without the help of a lot of people: 160 | 161 | ![Scasciafratte's last family trip in 2015 in Milan](images/extra/family.jpg) 162 | 163 | * My family because they taught me that "A lot of people talk about how to do things and very few on doing them". Without this imprinting, and without my Catholic faith too, is very difficult to imagine my involvement in Open Source. As humans, we have the power to change the world around us, complaining is right only when people eat pineapple on pizza. 164 | * My collegue and associate, Eugenio Petullà, that allowed me to be free during work because what we do for open source is important and brings value to our web agency and our skills. I know that he uses Fedora and Gnome and I use Debian Sid and KDE, but I am trying to ignore this problem. 165 | * Edoardo Viola, leading in the past with me the Mozilla Italia community, who helped me on confronting with others and cooperating in the leadership of a community too. He is a professor now and I hope to get a good rating for this book, but please no oral interview! 166 | 167 | ![Gabriele, Eugenio, me and Edoardo at Fosdem 2017](images/extra/fosdem-2017.jpg) 168 | 169 | * Mozilla community for all the things that they taught me, for all the things that I did there, and all the opportunities that I got. Just to mention few people: Michael Kohler, Konstantina Papadea, Ruben Martin, Elio Qoshi, Andre Garzia, Michael Ellis, Anthony Maton, Yofie Setiawan, Irvin Chen, Christos Bacharakis, Tim Maks Van De Broek, Ioana Chiorean, Henrik Mitsch, Ankit Gadgil, Francisco Picolini, Brian King, Havi Hoffman, Jean-Yves Perrier, Catlin Neiman, Emma Irwin, Alex Lakatos. 170 | * Mozilla Italia community members for their involvement in the community itself and for what we achieved in the years, together: Sara, Saverio, Giovanni, Edoardo, Eugenio, Michele, Simone, Damiano, Gabriele, Stefania, Aronne, Niccolò, Francesco. 171 | * WordPress community, even with all the issues I have with the actual project management I am still involved because I trust the people more than the project itself (now). 172 | * To all the other people in other communities that it’s always a pleasure to meet and chat with: Italo Vignoli, Enio Gemmo, Giordano Alborghetti, Gabriele Ponzo, Gianfranco Buttu, Roberto Guido, Marina Latini, Saverio Giulio Malatesta, Emiliano Valvassori, Dario Cavedon, Fabio Pietrosanti, Luca Martinelli. 173 | * All the reviewers for their time and lots of patience on finding English mistakes and suggesting new things that I forgot: Rizki D Kelimutu, Marco Lombardo, Elisabetta Carrara, Konstantina Papadea, Michele Nasti, Takeshi Hamasaki, Stefano Cassone, André Jaenisch (twice), Valerio Bozzolan, Denny Tremolada. 174 | 175 | ## Books that you need to read 176 | 177 | * [https://github.com/OpenTechStrategies/open-source-archetypes](https://github.com/OpenTechStrategies/open-source-archetypes) - "A field guide to open source project archetypes" a study paid by Mozilla about the various “business models” that exist in the Open Source ecosystem. An overview about the ecosystem and maybe on something that you don’t know. 178 | * [Open Source Motivations](http://mzl.la/whyopensource) - A Mozilla study with 30~ volunteers of 2016 (I am one of them) "What motivates contributors to give their time & skills to open source projects? A qualitative study of the motivations and experiences of Mozilla communities members." 179 | * [Mozilla Reps Leadership Resources](https://wiki.mozilla.org/Reps/Leadership) - A collection of resources to read about community management and leadership. 180 | * [Open Source Guides For The Enterprise](https://www.linuxfoundation.org/resources/open-source-guides/) - by Linux Foundation - A lot of information to move your Open Source knowledge to the enterprise level. 181 | * "One Small Step Can Change Your Life: The Kaizen Way" by Robert Maurer - The Kaizen method may help on changing your workflow and being more prone to get better results. 182 | * "The lean startup" by Eric Ries - Following the Kaizen method is very helpful to understand how to structure projects and to get better results in less time. 183 | * "Pre-suasion" by Robert Cialdini - I already talked about it in the book but is important to understand how to talk to people and convince them on what we are interested in. 184 | * "The Tao of Coaching" by Max Landsberg - The first book I read about Coaching after an invite by the Mozilla community managers inside the Reps program. 185 | * "Thanks for the feedback" by Douglas Stone & Sheila Heen - Feedback are important to grow and learn but asking for them in the right way is something that we should know about. 186 | * "How to Win Friends and Influence People" by Dale Carniege and the new edition for the digital era - It is the basic about human relationships, talking and engage better with people. 187 | * "Rebel Code: Linux and the Open Source Revolution" by Glyn Moody - The story about Linux and open source with interviews. 188 | * "Hyperfocus" by Chris Bailey - How to be productive, avoid distraction and use better your time every day. 189 | * "Thank you for arguing" by Jay Heinrichs - A manual about rhetoric and communications tricks to empower your thoughts and proposal. 190 | 191 | ## Other resources 192 | 193 | * [OpenSource.guide, a GitHub official project with a lot of guides about Open source, contribute and so on](https://opensource.guide/) 194 | * [Producing Open Source software, a book by one of the core contributor of SVN](https://producingoss.com/en/) 195 | * [Mozilla Contributor Research 2017](https://mzl.la/whyopensource) 196 | * [Mozilla Open Strategy 2018](https://mzl.la/openstrategy) 197 | * [Mozilla Contributor's Communities 2019](https://report.mozilla.community/) 198 | * [Uncurled - everything I know and learned about running and maintaining Open Source projects for three decades](https://un.curl.dev/) 199 | * [Producing Open Source Software: How to Run a Successful Free Software Project (SVN)](https://producingoss.com/) 200 | -------------------------------------------------------------------------------- /manuscript/images/1/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/25.jpg -------------------------------------------------------------------------------- /manuscript/images/1/cakefactory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/cakefactory.png -------------------------------------------------------------------------------- /manuscript/images/1/camera.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/camera.jpg -------------------------------------------------------------------------------- /manuscript/images/1/duccit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/duccit.jpg -------------------------------------------------------------------------------- /manuscript/images/1/ffos-libro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/ffos-libro.jpg -------------------------------------------------------------------------------- /manuscript/images/1/italia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/italia.jpg -------------------------------------------------------------------------------- /manuscript/images/1/libro-xhtml.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/libro-xhtml.jpg -------------------------------------------------------------------------------- /manuscript/images/1/monumento.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/monumento.jpg -------------------------------------------------------------------------------- /manuscript/images/1/sbarbatello.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/sbarbatello.jpg -------------------------------------------------------------------------------- /manuscript/images/1/talk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/talk.jpg -------------------------------------------------------------------------------- /manuscript/images/1/ts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/ts.jpg -------------------------------------------------------------------------------- /manuscript/images/1/wceu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/1/wceu.jpg -------------------------------------------------------------------------------- /manuscript/images/2/adorable.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/adorable.jpg -------------------------------------------------------------------------------- /manuscript/images/2/feedback.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/feedback.jpg -------------------------------------------------------------------------------- /manuscript/images/2/meme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/meme.png -------------------------------------------------------------------------------- /manuscript/images/2/open-philosophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/open-philosophy.png -------------------------------------------------------------------------------- /manuscript/images/2/open-source-developers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/open-source-developers.jpg -------------------------------------------------------------------------------- /manuscript/images/2/survey.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/survey.jpg -------------------------------------------------------------------------------- /manuscript/images/2/ticket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/ticket.png -------------------------------------------------------------------------------- /manuscript/images/2/who.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/2/who.png -------------------------------------------------------------------------------- /manuscript/images/3/body-language.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/body-language.jpg -------------------------------------------------------------------------------- /manuscript/images/3/bugzilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/bugzilla.png -------------------------------------------------------------------------------- /manuscript/images/3/opensourcemodel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/opensourcemodel.jpg -------------------------------------------------------------------------------- /manuscript/images/3/pyramid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/pyramid.jpg -------------------------------------------------------------------------------- /manuscript/images/3/turn-off-on.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/turn-off-on.jpg -------------------------------------------------------------------------------- /manuscript/images/3/wisdom_of_the_ancients.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/wisdom_of_the_ancients.png -------------------------------------------------------------------------------- /manuscript/images/3/xkcd-pyramid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/3/xkcd-pyramid.jpg -------------------------------------------------------------------------------- /manuscript/images/4/ask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/4/ask.png -------------------------------------------------------------------------------- /manuscript/images/4/principles.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/4/principles.jpg -------------------------------------------------------------------------------- /manuscript/images/5/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/5/logo.png -------------------------------------------------------------------------------- /manuscript/images/6/contribute.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/6/contribute.jpg -------------------------------------------------------------------------------- /manuscript/images/extra/family.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/extra/family.jpg -------------------------------------------------------------------------------- /manuscript/images/extra/fosdem-2017.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/extra/fosdem-2017.jpg -------------------------------------------------------------------------------- /manuscript/images/extra/italy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/extra/italy.jpg -------------------------------------------------------------------------------- /manuscript/images/extra/no-used-computer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/extra/no-used-computer.jpg -------------------------------------------------------------------------------- /manuscript/images/extra/tweet-kde.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mte90/Contribute-to-opensource-the-right-way/42b7f63761c02447c155eabfad22fa64ca5e8a67/manuscript/images/extra/tweet-kde.png -------------------------------------------------------------------------------- /manuscript/preface.md: -------------------------------------------------------------------------------- 1 | -# How to read this book 2 | I have always wanted to write that sentence and this book allowed me to do it! 3 | This is not my first e-book. Over the years, I have written a few niche books in Italian. They are probably unknown to many, but writing them was a fun learning experience for me. 4 | During high school (2005-2009), I wrote "Principi di programmazione" (Development Principles) and I released the second edition years later, I wrote it mainly for myself, but opted for a public format for it. 5 | Later, I wrote a first and second edition of a 12 page guide on [Python and Qt](https://daniele.tech/2013/04/ebook-introduzione-a-pyqt-1-edizione/) in Italian. 6 | I have written also a guide of few pages ["WordPress per il cliente"](https://daniele.tech/2014/10/wordpress-per-cliente-rev-0-0-4/) (WordPress for the customer) in 2012. 7 | This is not my first rodeo. I have written technical books before. This time, though, the topic of this book is broad and relevant with a lot of my opinions and the explanation of my personal approach to things. 8 | 9 | ## What you will find 10 | 11 | The book follows my mindflow from why and how I started and what I learned, based on my lectures (books or online articles) but also a lot of experience, in a few words this is my view about the topic. 12 | In this way you have a (big) tutorial in the open source life to individually create your path. 13 | There will be memes (I love them) and funny images like my writing style on the blog or talks, because this book is written in an informal way. 14 | If you want to read it because *I need to learn, make money and became famous* here you will find nothing for you, check on Udemy or somewhere else. 15 | A person not engaged, not interested on the long term is already failing on contributing. 16 | 17 | One real example from the [Linux Kernel, a message by Qu Wenruo, with relative HackerNews discussion](https://news.ycombinator.com/item?id=27629366) shows us sometimes contributions are just a number. This number doesn't mean quality or can be a time-consuming task for maintainerz (we will see in the book who they are). A company sees a single change as a number, but it can be just a typo, that is good especially for newcomers as they are learning with something simple, but if you are a skilled person and you are doing it a lot with a single request for any change instead of a single one (so the changes amount that you did for the company grows), you are wasting the time for the maintainers to focus on more important things that can require their best attention. 18 | 19 | The value is not in the contribution per se but for the contribution content, if you really want success in Open Source, and not be just a number, a bit of ethic is important, as everything is public and not hidden behind a NDA/CLA (sometimes). 20 | 21 | I> I like to generalize often in my thoughts and discussions. So this book can seem like that, but is my way of thinking to simplify the issue or the discussion itself. As a developer it's important to see the real problem and the frame but they don't need to be managed together. 22 | 23 | ## What are the hints of this book 24 | 25 | Information, suggestions, procedure, workflow, best practices. 26 | It begins from the basic stuff to my (new) way of doing things and intro to do the first steps. 27 | The technical terms will be explained (the first time) to help Newbies and non-tech people at their first approach to the matter. 28 | The open world is *open* to everybody so this book will serve to explaining things. 29 | It includes also a lot of links to external resources so you can give sources but also learn more about specific topics without going off topic with the book. 30 | Also it is a way to give a bit of critical thinking about stuff and other points of view around open source, it is not so simple as you think! 31 | See you at the index! 32 | 33 | ## License 34 | 35 | This book is licensed under the GPLv3 license because I like it, maybe not the best one for a book but is like a mention to remember how much this license changed the world. 36 | It includes also memes (usually in bad quality) that are used freely following the [Article 13 of the EU Copyright Directive](https://eur-lex.europa.eu/eli/dir/2019/790/oj) that excludes them for the copyright. 37 | Just to mention it, I made a tool called [GH-License](https://github.com/Mte90/GH-License) that help you to check if your repository includes a license, if your repo on GitHub/Bitbucket/etc includes it and to download automatically. 38 | 39 | Remember **a project that you can download with all the code doesn't mean that is open source** if doesn't include a license. Without a license is a proprietary project! 40 | 41 | ### Cover 42 | 43 | Original GIMP project file (.xcf) available on [GitHub](https://github.com/Mte90/Contribute-to-opensource-the-right-way) and published to [leanpub.com](https://leanpub.com/contributetoopensource-therightway/). 44 | 45 | * Gameboy Color image by Blueamnesiac - [https://www.deviantart.com/blueamnesiac/art/Nintendo-Game-Boy-Color-Teal-438531988](https://www.deviantart.com/blueamnesiac/art/Nintendo-Game-Boy-Color-Teal-438531988) 46 | * Fipps Font by pheist - [https://www.dafont.com/fipps.font](https://www.dafont.com/fipps.font) 47 | * 8-bit pusab by Seba Perez - [https://www.dafont.com/8-bit-pusab.font](https://www.dafont.com/8-bit-pusab.font) 48 | * 8 Bit Wonder by Joiro Hatgaya - [https://www.dafont.com/8bit-wonder.font](https://www.dafont.com/8bit-wonder.font) 49 | 50 | ## Tools used 51 | 52 | This book is written in Markdown using [ReText](https://github.com/retext-project/retext), released on [GitHub](https://github.com/Mte90/Contribute-to-opensource-the-right-way) and published to [leanpub.com](https://leanpub.com/contributetoopensource-therightway/). 53 | The language was reviewed using [LanguageTool.org](https://languagetool.org/), [Grammark](https://grammark.org/dist/) and [Sed](https://www.gnu.org/software/sed/manual/html_node/index.html). 54 | 55 | An example of what means contribute to open source is part of this tools. When I wrote the first edition, I did it with just ReText that has a big problem, also it has a tab UI when you open a new file from the file manager start a new instance, so I did a [patch that now is part of ReText](https://github.com/retext-project/retext/pull/476) that enables to use an unique instance. Working on this 3rd edition (after 3 years) with this improvement on was a pleasure compared to the first edition. 56 | 57 | ## Legend 58 | 59 | With the *open source* term usually we refer to a lot of things, from software projects to others like open knowledge (as Wikipedia), so the term (*open* or *open source*) in this book has to be intended as a big view about the philosophy of the project itself and the approach of the community. 60 | 61 | ## Contacts 62 | 63 | I am looking for **feedback** about this book to improve it, so reach me to share your thoughts and ideas. 64 | 65 | * [https://daniele.tech](https://daniele.tech) 66 | * [https://twitter.com/Mte90Net](https://twitter.com/Mte90Net) 67 | * [https://www.linkedin.com/in/danielescasciafratte/](https://www.linkedin.com/in/danielescasciafratte/) 68 | * [https://www.reddit.com/user/Mte90/](https://www.reddit.com/user/Mte90/) 69 | * [https://www.instagram.com/mte90/](https://www.instagram.com/mte90/) 70 | * [https://t.me/mte90](https://t.me/mte90) 71 | * [https://mastodon.uno/@mte90](https://mastodon.uno/@mte90) 72 | 73 | ## Donation 74 | 75 | If you want to donate to the author (me) you can do it with [Patreon](https://www.patreon.com/Mte90), [Paypal](https://www.paypal.me/mte90) or [Liberapay](https://liberapay.com/Mte90/donate). 76 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Contribute to opensource: the right way 2 | 3 | An *open source* book about how to contribute to *open source*. 4 | I already said *open source*? And that's **free**? 5 | 6 | [Release article 3rd edition](https://daniele.tech/2022/09/contribute-to-open-source-the-right-way-3nd-edition) - [Release article 2nd edition](https://daniele.tech/2020/07/contribute-to-open-source-the-right-way-2nd-edition-download-the-free-open-book-now) - [Release article 1st edition](https://daniele.tech/2019/10/contribute-to-opensource-the-right-way-book/) 7 | 8 | ## Description 9 | 10 | Open Source is a trending topic today but how can you learn all or some of the skills required to create or contribute to a project opened to the world? This book is my experience in the last 12 years, what I learn and what are the best practice from someone in the field. 11 | 12 | ## Teaser 13 | 14 | Open Source is a topic that today is used also outside the IT world but nobody talks about how to be part of it, instead only to be a consumer or how can be profitable. 15 | 16 | Rome wasn't build in a day but all the streets lead to Rome, we have all the streets but we are missing capable people to keep this world growing and improving. 17 | 18 | Be a part of the open source world can be the 21 century skills that you deserve? 19 | 20 | Check the [pdf/epub/mobi version on Leanpub](https://leanpub.com/contributetoopensource-therightway/) or on [GitHub](https://github.com/Mte90/Contribute-to-opensource-the-right-way/releases/tag/2022.1). 21 | -------------------------------------------------------------------------------- /tools/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # requires https://pypi.org/project/leanpub/ (with a patch to run on newest python versions) 3 | 4 | cd manuscript 5 | leanpub book 6 | mv ./Book.pdf ../Book.pdf 7 | -------------------------------------------------------------------------------- /tools/count-todo.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Missing TODO:" 4 | grep -c "// TODO" ./manuscript/*.md 5 | --------------------------------------------------------------------------------