users. Why are you missing users? You have to find them. Look at that, you don't have my notes anymore. That's more exciting for me. And more surprise for you. And you need who else said something. Over here. You need time. I cannot help you with that, sir. I believe there is a talk later this afternoon about how to build a TARDIS. Perhaps you would be interested in that, but you are in the wrong place. There are some possibilities here. Maybe you are technically superior like the Betamax, but you actually decided to charge something for your time and effort and it's a whole lot more than what the VHS player was costing. Or your Betamax only holds one hour instead of two, and so while you might make really good video displays, you're going to lose. Just because you're the best doesn't mean that you win users. You might be a lovely Dvorak keyboard, which is arguably faster, and the guy with no users is like, yeah, that sounds like a great idea. All of these things, and yet how many of you are using one? That guy. Not to be. These many things that perhaps were really good ideas and yet did not work out. And this is like just the handful of things that came to the top of mind when I made this slide. And you can see just because you've done something awesome before doesn't mean that your next project is going to be super awesome. A lot of these companies have done really successful things. Juiced was created by the founders of Skype and Kaza. So sometimes things work out. Sometimes things don't. Not how not to be the thing that you've never even heard of at all because they didn't even have enough success for you to know that they failed. That's an entire set of goals. Have you defined what success means for your project? If you don't know that, it's going to be hard to figure out what direction to go and where to lead your community or even where to find a community because if you can't tell them what you want to do, they actually might tell you what you're going to do. And that's an entire other talk for another day. Your goal might be the very basic open source goal. Fix up. You don't need the rest of this talk until that's something bigger. It might be to get an A in your class. Again, noble goal. You probably don't need a whole lot of the rest of this. But maybe your goal is more users than developers. Maybe it's to gather contributors. Maybe it's world domination in which case you're going to need a whole lot more. Maybe it's to build a TARDIS so that you can get more time to build your next project. Along the way here though, you should also be considering why you're choosing open source because that's going to mean something else for your goals and something else for what success that are highly successful for. That's what we're all about here in open source landia is community. Large projects often have designated community managers which if you ask 10 people, you will probably get 10 different definitions of exactly what a community manager is supposed to do with their day. But in many cases, it's that person or that group. It could be a group of people's job to help guide a lot of the rest of the stuff I'm going to talk about in addition to the direction of the actual project and the code roadmap. But before you can just work on community, you have to know who that is. And in a lot of cases, you actually have two communities. You have your user community and your contributor community. So when you're working out the plan for the rest of what you're going to do, you need to know who you're talking to. And sometimes, or sometimes it could be almost double the work if the Venn diagram of your users and developers has a very narrow overlap. And that might be part of your definition of success. Open source, I think a lot of the people who are working on these projects are the people who are also using them. But sometimes they are simply people who have an interest in making success for the people who do need the project. One good example is mailing lists. You probably need at least two, a user list and a contributor list. And if you think of the projects that are not yours that you are a part of in open source, they probably have even more, lots and lots of mailing lists for specific groups and so forth. I have done the majority of my work in the Fedora project which I don't actually know how many mailing lists we have. I don't think I want to know. I don't want to count. That might be an entire separate problem. You might have two blogs, one for your users and one for your contributors because the content is not necessarily of interest to both of them. What you would post on one is not going to be exciting for the other. We're actually dealing with this right now in Fedora. We launched Fedora Magazine a year or so ago and it's this constant debate about what is the right content for that. Is Fedora Magazine for the users? Is it for the contributors? Is it for both? And how you communicate matters. You have to communicate with your communities. That is pretty paramount to this whole process. Defaulting to open is hard for a lot of people. It doesn't really come naturally since about kindergarten after they stopped telling you that you had to share everything then somewhere after that you're like, no, we don't talk to each other anymore. And it gets a lot harder to collaborate.  That doesn't mean that it's the right way to go. It's not really the open source way to go. As many smarter people have said before me, surprise is the opposite of engagement. If you are surprising your community, they are not an engaged community. When you are open with people, you avoid surprising them. You keep them in the loop. Because nothing is going to kill your new contributor's desire to participate faster than surprise. It's going to make them feel excluded. Like the opposite of community. Like they're the guys standing over in the corner of the basketball game, not actually getting the ball. Building community means talking to your community, being a part of your community, having those conversations in public, and as few as possible privately. So make it easy for them. There are all sorts of tools out there. There's IRC, obviously. They're Hyperkitty, which is a project to give you both the joys of a mailing list and the joys of a forum all at once. So if you have people who like one, it shows up in the other. And Beauty of Crossing, there are a couple of tools that do that sort of thing. So now that you've got all your community people caring, make it easy for them to continue caring. Figure out the best tools for your community. They're not the same ones for everyone. And there are endless tools. When you have contributors who are enjoying themselves, that means that they are engaged in your project. They are interested in your goals. They share your mission. That means that they're active. They're making contributions. And that's how we get back to success. That's how we get to meet your goals that you set back in the beginning. So now how do we do all that? The dirty word. We don't like to say that word around here, do we? You have to type great code and shows up to use your project. It is never, ever going to happen, which is why the title of this talk was, If You Build It, They Won't Come. Your users are not the psychic friends network.  So we're going to call it cupcakes so that you don't feel uncomfortable on Sunday morning talking about marketing. We're going to talk about cupcakes because everybody likes cupcakes. There are many ingredients to your cupcake plan. It's always better to build a cupcake plan on numbers because one cup of flour and two cups of flour, not the same thing. You need to know what you're dealing with. So user information, statistics, data, know who your users are, what they need, and how you can meet those needs for them. A little bit of marketing 101. This is just, this is not an exhaustive list of your marketing tasks, but it's the basic entry level. Here's where we're going to start so that we can go find ourselves some users, some more contributors, meet your goals. You need to figure out the implementation of your plan. Which of these tasks is most important based on that data? That's where you start. And there are a lot of bad ones. But I think that inks a good job of it. First of all, it tells me what it does. I tried to find a piece of software and somebody says, oh, I think X works. And so I go to X's website and then I look at it and I'm like, I don't, I don't know if this meets my needs because there is nothing on this page that tells me what your software does. Not a single sentence. No idea. If I'm lucky, it tells me how I can go install it. And so now I'm faced with the choice of do I trust the friend who recommended X, who thinks that it probably works, or did they just want me to stop talking about my problems? Collins, under the big banner, you know where you go want to go if you are coming to be a part of the Inkscape project. It has obvious links for common tasks. I want to download it. Oh, look, there's the download link. This has pretty much everything that I want all software websites to be. Which makes sense because Inkscape is Design's software, so I would hope that the designers had kind of gotten this right. Talk about social media, which is a little more comfortable than the dirty M word, and we don't have to talk about cupcakes anymore. I really recommend that your project social media is not your social media, because at some point, ideally, you have a highly successful project, and you would like to be talking about your project, and if you would like to tweet about what your cute puppy did over the weekend, your users really don't care. And so you might as well start from the beginning and have those as separate channels. I think a lot of people make the mistake of simply talking about their project on their personal social media, which is a good thing. You know, talk about what you're working on, but your project social media and its goals and what's new in your project should be a separate channel. I think on a much larger scale, a really good recent example of this is Chris Hardwick had the Nerdist handle everywhere, and then Nerdist Industries has grown into this empire, and so finally they were like, hey, Chris, we're gonna need to go get your own handle. And so now he has, I think, at Chris Hardwick, both places, and Nerdist is for the media empire. So as a side note to that whole separation of self and project, the sentence, my opinions are my own, is kind of meaningless.  The most important thing that you can do with your social media is to be responsible that it is there and ignore everyone who says anything about your project. There are tools to help you do this. I like Hootsuite. One of the handy things about Hootsuite is you can say, if my project is Gluster, tell me every time someone mentions Gluster. And so then every time someone rants about Gluster, you can get on there and say, oh, I see you're having a problem. I think I can help you. Here's what you should do. This just helped us. There's a fun new book. If you go over to the Expo hall, go by the no-start booth. If you have kids who are interested in Minecraft, they have a new book called Learn to Program with Minecraft, which is pretty much all the words my six-year-old wants in the world, all in one title. But the Linux instructions are specific. And I'm like, but, I mean, I could go get one and get some cables and probably get it. But the Linux box is right here. Surely we can just make this, it's just Linux. We can make this work, right? We couldn't make this work. And so we tweeted. And the guy, we found the author. There he was. He was like, yeah, working on that. There was an exchange of information.  They don't care whether you're eating their sandwiches or what you're doing with them. I could just go down the list of Delta. Delta will help you. If you complain about Delta, they will solve your problems on Twitter faster than calling Delta. So there's your recommendation for if you're flying back to the East Coast and you don't know how you're going to get home tonight. You just, you tweet at Delta Assist. Sorry, I could ramble about the Twitter gathering metrics. Find out what's happening. It's not going, I think we had a hundred followers last year. Now we have a hundred and two. That's like growth, right? Like one is engaging with you. Numbers are there to help you. And again, there are tools like Hootsuite that do this for you. Facebook has insights built in. There are free ways to start out before you can start paying. You can also pay Hootsuite exorbitant amounts of money to tell you more information. And finally, the social media that most of us are probably hitting on a regular basis. But there could be cases where you might need to be serving your users, your future contributors, and some other social media. For example, there are a number of countries, China in particular, that have their own social media networks. If you are creating software that primarily serves a geography that has its own social media, you should get on to that one. Or it seems like a weird place to go. Unless your ink, there might be some other social media where your people are. So be a little creative. Figure out where your people are. Go meet them there. Make it easy for them to be a part of your life out of Hootsuite. This is not any actual data. This is just what you can easily get for free out of Hootsuite. These are some of my favorite collateral pieces for the sake of having a slide that we've done for Fedora. But what I really loved about this was that this was aimed at engaging new users, which is a significant Fedora challenge at this point. We can come to scale and other Linux tests and everybody already knows what Fedora is. And either you already have used it or you're not going to use it. Like, there's only so much more engagement that we're going to reach these to South by Southwest Interactive Festival where there were a lot of photographers and musicians and designers and other people working on different things. I think there are actually a couple more in this series. And so what this did was it was not all about Fedora. It actually gave them a list of the tools that were relevant to their interest to get them interested in free software. Like, paper. Paper in 2016? Why are we doing this? But think about how long this weekend has been. And are you going to go home tomorrow and remember everybody that you saw on the exo floor and every talk and everything that you wanted to remember? Nope. Nope. You're not going to. I do a lot of confidence you want to remember later. I pick up the postcard in their booth or their brochure or at least their business card so that later I can go, oh, I wanted to know more about that. I wanted to talk to that guy. Paper still has its place in a lot of our lives even here in the future in 2016. See of open source? That we often call these successful projects now that don't have stickers. Somebody's going to ask you for them. Everybody's going to ask you for them. In fact, now I started to see in the last couple of years of conferences there are increasingly people carrying around binders like Pokemon trading cards of stickers. And they're like, oh, so I have this one that they only made for Oskon in 2013. I will trade you for your EFF sticker from last, yeah, totally. I'm at 14x hashtag. I'm at 21 shirts. Can anyone beat that? And as a step further beyond that, these are pictures from Fridays, have people post pictures of themselves wearing their Sentos t-shirts, of which there are clearly many. This is a small selection of them on conferences and booths. And you're going to have to talk to people, which sometimes is even scarier than the cupcakes, interact with people, because it doesn't help to give them a sticker with a cute character on it, and then tomorrow they don't know what that character is, which is good fairy. You could stand up here and give a talk, which is super helpful for finding new people. Tell them in your talk description, I am solving this problem. Here's how I'm doing it. Come to the talk. And I do recommend if you're not accustomed to the talk giving, to reading an assertive blog post out there about how to write your talk proposals, because I have also sat on the proposal review committees and the number of talk proposals that I have read that are, my project is good, literally. You get this. No. Think of places that are not necessarily FOSS conferences, if that is relevant to your goals. Like I mentioned, we took Fedora South by Southwest. We've gone to MakerFair and education events to reach those separate audiences that are not simply the open-source crowd that we see every day. We've gone to music events. Perhaps it's most relevant to you to hold a series of hackathons or get on meetup.com, hold meetups, talk to people. But what you're doing, show them how to do it. Do not make hour-long videos. Make short videos. Nobody wants to watch an hour of your software on YouTube. So again, all of that, not an exhaustive list. And every time I try to say marketing, it's going to come out as cupcake. People are going to be like, I don't know what you're talking about. Cake baking type of person to contribute to your project. All of these people exist. Value them. It turns out your roommate's English degree is useful as well. And you do need both of these, because in the same way that most programmers are not good designers and most designers are not necessarily good writers and like people have strengths for reason. Nobody is good at all of the things. And I doubt any of you are massive corporations, but I would like to show you we take the most shot in Florida and watching fail. So this is what happens when you don't have a good writer reviewing your work. Tell me when you spot what's wrong with this picture. It should be describing. Tell me why your project is good, why your software is good, and never mention the other ones. Because there's a tendency to like inkscape, but it does this differently. Well, now all you've done is tell me that everybody knows what inkscape is. Nobody knows what yours is. And so maybe I should just go check out inkscape. I'll hold on whether to show this, but I haven't watched this video in a lot of years and it's one of my favorites. This every time Larry Ellison said red hats and his key notes up on YouTube, Larry Ellison red hat. You are competing with or the things that you would like to be better than it's not helping your case. The slide went and that's a little distressing. Making diagrams. What's interesting is none of these tools have good websites, which I think is kind of hilarious. They're super handy. There are countless tools out there to help you do all of these things, but you are likely not a UX or UI expert. And so you should also find one of those in addition to your new writer friend, a designer friend. Your designer friend may be an expert in these things. And if anybody would like to know what that list of tools was, you can email me and I will find what the heck happened to this slide because much like all of those websites that won't tell me simply what the heck their project does, there are plenty of them that won't tell me how to use it once I have installed it to figure out what it does. One to me to this day was a piece of software that I knew did exactly what I wanted to do. I just didn't know how to make it happen. And so I went to their website and I clicked documentation and it took me to about six paragraphs about the history of why they decided to make this piece of software, which is not documentation in any way, shape or form. Again, you might have two different types of documentation. Contributor documentation. How do I help you? And user documentation. How do I use this thing that you made? Good documentation is a set and I'm not at all biased because I started out in technical documentation. Recruit people who are good at it because you know you've read bad documentation. You have tried to figure out how to do something and gone and that is really why you should not be the one writing the documentation. If you are the one closest to your project, closest to your code, closest to what you think that it's supposed to be doing, you are the last person who should be telling anybody else how to do it. You need to find somebody else to learn how to use what you have created so that they can explain to someone else how to do it because it's obvious to you. Because it's in your head. You made it. You are not your user. Find someone else to help you with that. In particular, focus on what is the first, is it terrible? You should probably fix that. One of my favorite ones, I seem to have lost several slides and I apologize, is if you go look at PHP's documentation, they do something really cool. And so you can go, you can be using the PHP documentation and go, oh, I can do that better and then you can leave a comment as to how it works better. Now, the downfall of this is there are 400 bajillion comments and nobody is going to sift through all that. So there may be a model in which some curation of the comments is useful, but I think that is super helpful on most of the pages. One way to remember is to respect your writer and your designer and your documentation person.  Those people are just as important to your project as the people writing the code because everybody always thinks of their piece of the project or their piece of the company that their role and whatever they're working on is the most important. The coders say there's no software if I don't write it and the marketing people say nobody is going to know about it if I don't tell them about it and the documentation person says nobody can use it if I don't tell them how. And in a company you've got the lawyers and the HR people and all these people and everybody thinks that they're critical of the process. The reality is all of them are and all of them working together is what's going to lead you to your eventual success. And that is the thought that I would like to leave you with. So thank you for getting up on your Sunday morning and coming to hang out. Are there any questions? Any particular piece anybody wants to talk about more? Delete it. I don't know what have it. So this is the first time I've tried to use slides.com. So what I'm saying here is perhaps they could use better documentation or better code or better a whole lot of things. I thought I'd try something new so that works out well. There is a website actually specifically dedicated to showcasing good open source project website in an awesome world I would have it in my notes. My email address is Ruth at redhat.com I am really easy to find and so if I cannot pick R-U-T-H Ruth at redhat.com because my last name is spelled S-U-E-H-L-E and nobody should have to spell that. I got that address. If you email me I will find that website again and let you know what it is. And I recommend neverusingslides.com. We'd have been here about 10 more minutes if it hadn't eaten all my slides. Any other you had a question? Going to come work on the big projects you know the the Linux distributions and whatnot and even those big projects have trouble finding the good designers who are using open source tools. Red Hat has trouble hiring designers who use open source tools. But I think so one thing you could do is find go to those projects because I think that the people using those tools are also likely to be flocking to those places. Go to places like this website that hopefully I will find again someday for open source website. I talk to people on Twitter talk to people on Facebook go to I am sure I don't know but I am assuming because there's a Facebook group for everything that there's a Facebook group for open source designers. Go say hey I'm looking for help go hang out Deliberated Pixel Project I believe is the full name of people who are making free and open source art assets for games. And there are a couple of other websites that are places for people post free and open source Creative Commons license assets for whatever you need art for. Go find where the people are and say hey I got this thing going on I would love to have contributors. I saved the file as a PDF. Let's see where it went. High five to the husband if he's right. Any other questions? Write down enough for you if you care enough you will figure it out. It was since it was not Libre Office or Open Office. That makes it a short short list. But they did help me on Twitter so I don't want to I don't want to make them super angry because they did try to help me. It never did work out so it would change lines in my document like I would close it and then when I open it again things would have changed and like that is not helping especially in a spreadsheet. Does anybody have like are there things that you think that your project or a project is doing really well that you want to tell other people about? Does everybody really just want to go to In and Out for lunch? If you are going to try something oh hey look I found the rest of my slides. Babe sorry I will answer your question. Can you can you rephrase your question? I got a little excited about finding my slides. Learn how to write documentation is what you're saying. So if any projects they're going for attempting to write documentation so a good place to start is writing some and then getting feedback. Find an established project that has good documentation people available who can give you guidelines. There are plenty of style guides out there there's plenty if that's the thing that you want to learn to do is to write technical documentation while there are all sorts of books and websites about that and there are lots of communities that would be willing to help you build that skill just in the same way that if I'm a new developer I could go to OpenHatch and contribute some small you know bite-sized bugs and somebody's going to help me and works, right? So this about the success of Open Source Software and what's cool about this slide is even though I don't usually put a lot of words on slides I did this time and so you can actually just read the words that I was going to tell you about what all of these Open Source projects. So this is based on slightly older data because the book came out and I think 2012 and they studied Sourceforge up to I think it's like 2009 data but I suspect that in general the information is still good. 37% of projects were abandoned after the first release. 46% were abandoned before they even got to release. That is not a supreme rate of resounding success. That didn't go as well as I hoped. I totally know how to use software guys. And this was a list of characteristics that they found that were reflected in successful Open Source projects across the board that like I said in the beginning they had clearly defined goals. They knew what they wanted to do what problems they wanted to solve what success would look like for them. They knew what their users look like. We didn't really talk about this but a lot of companies in particular and so successful software projects in the same way create user profiles. A sample person will name her Jesse and she is probably about 25 years old and she lives in a major metropolitan area and if you're making cupcakes you go down into the details of like sometimes you get super detailed. Jesse has three cats and she likes to read books and goes mountain biking on the weekends whatever. But you can read all sorts of things about writing user profiles for trying to meet the needs of the people that you are interested in meeting. Goals, good project communication, modular architecture but when all of this came down good leader who was good at communicating the project's vision. That was the supreme single item they found that led to project success. And that means that somewhere in here we're going to have your URL. This is mortgage statistics all those is the expensive way this is results from Vitergia that we use for a lot of the Red Hat projects and it tells you things like your mailing list contributions are down 47% this week what the heck happened or you have 40 billion new Twitter followers what happened but what happened is up to you they just give you the numbers. Y'all if you see an exciting slide it wasn't there before. Be mine for creating site maps and mind maps free browser and platform combination you could want. And so just for fun here's what redhat.com looks like in links 2.8 on windows 7 user profiles likely scenario. There's the php user contributed notes. I think I might have lost that website forever which is sad because it was really good and now I'm going to spend the entire time in the airport today googling to try to find it again. Bomber. I will I will hunt it down. You email me and I will find that website because it is really cool. And what was even further interesting about it was not only was it a lot of really well web design websites it was a lot of open source projects that I'd never heard of and I was like oh oh what's that do oh that one looks good too. So again just because you made a pretty website doesn't mean anybody showing up to use it. You got to do all the rest of it too. Directions to in and out. Anyone bring cupcakes?  I had the chocolate and vanilla. Yummy like I have pretty high cupcake standards and so it's not like the best cupcake I've ever had but it was it was yummy. We went because now you guys are just watching me ramble. Ascon Booth said to me you know what I really want I want a root beer cupcake. How come nobody makes a root beer cupcake? I'm like surely that's got to be a thing. Somebody somewhere makes a root beer cupcake. And so I googled root beer cupcakes Pasadena and I said it's two blocks away. You can go. Sadly they're not making root beer cupcakes right now but that is a thing. Give that man a cupcake. So I'm just going to start telling you features that I want. If you remember Amazon used to have this thing called listables or something where people would be like top 10 books where children are crying on page three or whatever. Like there was just a list of all the things and then you could go put that in yours though and then we'll go make weird list of all the things on yours of what I did not say about that which is if it's a sentence all right let's see if I can make one up off the top of my head. Enterprise grade tools like if you can get as many buzzwords as possible in one sentence I don't know what it does. You have told me nothing. Get rid of all of those words and write a sentence that makes sense. Have a 10 year old read it? Find out if it still makes sense. You've told me it's easy. So here's the problem of telling me it's easy.  Actually one of the like fundamental rules of documentation guys who want to write documentation is don't call things simple. Don't call them easy. Don't say this is so easy.  I don't like being dumb. I did those things. It didn't work now. What do I do? I left your website. I've gone on somewhere else. I'm putting emeralds on train tracks. I have quit software altogether and gone to open a base. I'm making cupcakes. Some emails to the Fedora Webmaster to set up Apache web server and Apache gets all these emails too and they're like, why did you hacks on my website? Because you know, you get that set up Apache. They get the emails and they're like, why did you hacks on my website? We didn't. You didn't. I would go back to web development for it in the back of my head. Raise you in something dumb. So then, but I hate when I like, I think we're so there's nothing at the bottom. I think that my browser has barfed which actually might be the case here. Like maybe it's just scrolled. Is there anything at the bottom of your website? Do you guys know what I mean? Like simple idea to keep software provenance data close to the code. A command line based utility written in Python, released under Apache 2 and is available on GitHub. So I like that you've declared a license because we didn't talk about that but declare a license. I care a little bit which one it is but I don't care a lot as long as you pick one instead of not picking one. I see a download link at the top. Super handy. Oh, we didn't talk about case studies. This is also a super awesome thing that you can do once you have enough users. Especially if so one just happened. Yeah, community manager. And so it's entirely possible that she knew this was going to happen but Facebook showed up here and gave a massive talk about how they use Gluster and with all sorts of data and it was super awesome. That's a great success story for size things or full of success stories. That's what they do. There's a lot of negotiation involved. But even for your smaller project you can, you know, if you're inkscape actually here's a really good example, Blender. Blender can say the other movies that I have long since forgotten the names of that win that competition every year. This is what people do with it. That event that does impress my 10 year old. I showed her Big Buck Bunny and I'm like, oh, look, the software used to make this is right here. You can use this right now and then maybe you can make the next Big Buck Bunny. If you guys don't know what that is, that probably sounds completely bananas, doesn't it? Have you guys seen Big Buck Bunny? Okay, good. I'm speaking at open source conferences and I work at an open source company and most of my friends are sort of nerdy vaguely in some way and then once in a while I'm like, those words made sense all of the rest of the time and now people are looking at me like, Big Butt what? We have diagrams. Does everyone think his diagrams are useful? Because I'm kind of looking at the side ways. I'm trying to read the weekly questions. Like your documentation link doesn't go to about us. Support. I can get help. You have the social media links. I can find you. When your stuff goes wrong, I know where to find you. This actually looks easier and so I'm not the best person to rate that as someone who is not you. Someone who is not the beginning of the project but someone who is successfully using it. How do you use it? Why do you use it? What are you doing with it? Not like I use Fedora to run my server that plays Minecraft for 47 children in lower California. Not that level of detail but yeah exactly what you're saying is what does it do? And I also really like features pages with screenshots because that's where I go when I'm trying to figure out like but I'm not sure if you do the one little thing that I really really wanted to do. I really like features and screenshots and not teeny tiny screenshots that only make sense if you've already installed and seen the software. It's going to make teeny tiny screenshots. At least let me click it so I can see a bigger one which is why the this slide about the UX and UI when I finally found it has that itty bitty picture of how the wireframe software works is because that's what's on their terrible website screenshots page is this itty bitty screenshot that I haven't used the software but clearly that's what it would look like at a Raspberry Pi screen size if you were making wireframes on a two and a half inch TFT. I'm full of bad ideas. You need more bad ideas.  All right anybody else for coming you can go have in and out and cupcakes.


Today we're going to talk about a somewhat non-standard approach to search in your applications. Often search is done in some sort of an external service. Better. I'll just stand like this for half an hour. Starting over, because I had that extra time. We're going to talk about a somewhat non-standard approach for search in your applications. Often search is going to be done with some sort of an external service. Other than doing that, we're going to use the tool that's already responsible for storing and finding data. Welcome to multi-table full-text search in Postgres. I'm Caleb Thompson. We're not doing a Wednesday hug. You can find me at these places on the internet. Feel free to tweet to me during the talk.  But if you're not tweeting, please do close your laptops. There's going to be a lot of code here, and it's going to be hard to get anything out of this talk if you're not looking. Now that I've told you that you should close your laptops, I don't like to jump into credentials at the beginning of the talk.  We had the abstract. We had the bio. So you'll hear a little bit more about me at the end, but I do have one claim to fame, and that's that my birthday is in the Simple Delegator docs. So you know I'm an expert. I'm going to talk to you about a real-life feature. We're going to iterate, explore other options, and optimize, just like we would when we're developing a feature in our applications. We're going to talk about full-text search, what it is, how it can help us. Hopefully, you could have guessed that from the title. We're going to talk about views, and no, not the HTML views. We're going to talk about database views. Hopefully we want to explore the performance implications of whatever we're doing. So we're going to look at some of the performance implications and how we can mitigate them. We're going to talk about materialized views, of course, as one way to do that. We'll look at a couple of gems that can help us out while we're doing this fun stuff, and of course, we're going to look at all of the other options or some of the other options for what we're doing. All right, let's look at sort of the classic example. Let's search for articles in our application. The simplest thing that we could possibly do that works is to search for substrings. So here we've got articles where the body includes. How's that looking? Terrible? Can somebody hit the lights over there? Just keep going, it's fine. How's that? Better? That looks better. I can see it. We're going to look at articles where the body includes some substring. Pass in that query. You've probably seen this in your applications. This works. It works if your users know exactly what they're searching for. So if they want to find an article with, say, the word, book in it, and they know that it's going to be lower case in the middle of a sentence somewhere, then they can search like this. And you can pass that search right in. Like I said, that's doing exact substrings. That's not the most useful thing. So a tiny little step forward that we could take is to do the case and sensitive like with I like. I don't like this. But it is slightly better. All right, well, let's leave that. It sort of does what we need for now. You don't need to know where in the sentence the word that you're searching for is. That's cool. OK, well, naturally, features expand. We need to search based on the titles of our articles. We probably should have seen that coming when we were searching. We can handle this too. We'll just sort of extend what we had already done. We're going to pass in that query two times instead of once. And we'll still do that case in sensitive like. And the percent signs in here are so that it'll show up anywhere in the query. Anywhere in a word. So you could have any sort of substring in the. So now we want to search by the author's name. This is getting a little more complicated, but, you know, again, probably something we should have seen coming. We'll go ahead and join onto our user model. I apologize. We're going to use the user and author's tables interchangeably in this talk. So user's table. So this is basically that same query, but we're doing we're letting Rails, A-Rail handle the join. And then we're doing pulling out the user's name in the same two fields that we were already pulling out. That query, query, query is starting to stutter. Something that we don't really want in our code. So one way that we could refactor something like this is to do it in a query object. And this is less performant, but arguably easier to understand when you're looking at it. But when it comes down to it, we still got really poor results. We're only searching for these case in sensitive substrings. And, you know, that's not great. What if the word is going to be plural, and we have a singular query? Or what if we're searching for singular things? Google knows how to do these things, and that's what our users are going to expect from us when we're building this search feature. Enter full text search. Full text search allows us to query for rows based on natural language searching. Hey Caleb, what is natural language searching? I'm glad you asked. Natural language searching allows us to remove stop words from the query. So these are words that appear in all sorts of sentences that have not a lot of semantic meaning to us, and we want to not really include them in our search results. We don't want every article that returns the word and to show up in our search results. Again, just like with the like versus I like, we're going to eliminate casing, fairly straightforward. We want synonyms to show up. So if our user has sort of a concept in mind that they're searching for but doesn't remember exactly what it is, then both of these should return the same results. And we're going to incorporate stimming. It's another feature of natural language searching, which means that related words like try, trying, and tries, these are all different versions of the same root words, so we record them under the same concept. And when we're doing our searching under the hood, we're actually searching for that root word instead of the specific words that we're passed in. So here's an example of making that same query. We're going to sort of zoom around in this code a little bit, and we'll highlight the more important pieces. So here we're looking at the text that we want to join. We're saying title, concatenate that with an empty space, and then the body. We'll call that the text just because we need to give it a name for Postgres to be happy. And so that's what the two pipe operators are, the concatenation. And we're also going to pull in the author's name as the text. And naturally we want the ID when we're pulling out of the article and the article's ID when we're pulling out of authors. We want unique results because we don't want the same article to show up a bunch of times in our query if it shows up multiple times in the body or if it shows up both in the author's table and in the title or in the body. All right, so that's a lot of SQL. Where do we put all of this? We could throw that back into our query object that we looked at last time we had some code, basically just some inline SQL, pass that through an execute or where. Same thing with the scope. Throw it in there, just pass in that query so that it's interpolated. But to be honest, SQL doesn't belong in .rb files. We've got an extension for that. And so Postgres actually has our answer in the form of views. View is a partial query stored in the database that can be selected from and it returns a set of columns that can be searched on later on. The nature of views is that because they're basically just a query, they can have multiple source tables. So right now we've got the user's slash author's table and we've got the articles table. So this view will allow us to abstract that away and just say, this is the text that we care about. And then we can perform a where later on. We can do whatever we need to complete that query so that it's meaningful to our users when they're actually performing a search later on down the road. So if we were going to build, here's just sort of an example view, we've got this create view syntax. Just give it a name, just like you would a table. We can select distinct user IDs. So right now, obviously, we're pulling users with recent activity. So we're going to look at a couple of different tables. We want to see all of the information about the user and also the last time they were active. So we only want one instance of each user. Like I said, we want all of those rows from the user's table and we're going to create this concept of a user's last active time by pulling in the activities created at column. And we're just going to limit that to users who were active in the last seven days. So when we're looking through this view, it looks pretty similar to what searching through a table would look like. You select everything from users with recent activity, where, order, whatever you need to do. And in fact, it's so similar that ActiveRecord can use of you as a back end for a model. So what we can do is create a fairly vanilla model, looks very familiar, and we can interact with that as if it were a table in our database. So we've got this users with recent activities model. As you can see, it's an ActiveRecord subclass. We're going to give it a table name just because our naming of that table didn't match what rails would have expected when given the class name. And we're going to tell it that it's read only. This isn't strictly speaking true, but it's easiest to just assume that a view is going to be read only. If you need it not to be read only, then there are some special rules for that. That's an exercise for the audience. But what this says is it tells rails that nothing can be deleted and nothing can be written into this table. So that's read only. You can only query against it. Will this work with the full text search? Luckily, yes. We're going to talk now about our first gem, Textacular. Textacular was originally written by Aaron Patterson and lives here on GitHub. Textacular takes care of the full text search portions of the queries. And it assumes that you want to search over every text field because it's called full text search. So it's full text, full text search, I guess, on a record, on a table.  For our purposes, all we really care about is this basic search. And that's going to be what's most generally useful when you're building sort of a single field input that your users use to get results back. So that looks like this. If you're searching for a game, any sort of game that included Sonic, Sonic the Hedgehog, or Super Sonic, whatever, I don't know. And you can get a little more complicated even with the basic search and say the title needs to include Mario and the system needs to include Nintendo. But I want any Mario title on any Nintendo platform. So this is sort of the next simplest useful thing that you can do with Textacular's mixin. All right, so let's go back and take a look at that search that we wrote. This is that same SQL from before to get out articles based on either the article's name, body, or the author's name. So our search result is really simple on the rail side. We're going to create this three-line class. We're going to include Textacular. And we're going to tell it that it belongs to an article because we named that field article ID. And we want to actually use it if we want to say find an article written by Sandy or that it mentions Sandy. Then we just do this basic search for Sandy and map that onto the articles. If you wanted to get a little bit crazy, you could include enumerable into your record. Enumerable is a super important and very useful feature of Ruby built into the Standard Library. And if you don't know about it, feel free to come up and ask me afterwards. But basically, it's going to give you all of those cool each and map and everything else. So you'd be able to use this class with search result dot new, the query, and then dot each. So basically, you can treat it as if it were any sort of other collection, array-like collection. So creating this view, I'm sure I've convinced you now that views are great to use and that you want to use them, you want to know how to use them. So creating that is fairly straightforward. You've got active record-based connection and execute, so this is a migration. You could actually just shorten this to execute. And we're going to use that createViewSequel that we just had on the screen. And then to drop that, we just say dropView and then the name of the view. How resistant changes this? All right, well, let's find out. Let's look at some feature creep, as we always have in our features. Project Manager comes back and says, articles whose comments match the query should also show up in the results. If somebody has mentioned Sandy in a comment about an article, we want that article to show up in our search results. So to recap, we're now searching on an article's title and body, an author's name, and a comment's body. And any article that any of these things are related to should show up in our search results. So the updated SQL looks like this, the updated query. And the new part is this new union with a fairly straightforward select and join, where we're pulling in the body and the article ID from a comment. So let's take a look at that update view migration. What we can do is throw the new SQL into that up record, just like we had done before. And unfortunately, what we need to do for the down migration is put the old text of the view into that down migration so that when we're rolling back, Rails knows what state to put the database into. That's sort of a pain, but we can handle that. That's not too bad. And unfortunately, we can't always update. You actually can't remove any columns from the view, which we happen to be doing when we're rolling back this migration. Because we no longer have, oh, I'm sorry, no we don't. But if you had added a new column into your view so that you have more information, say that active back column from before, if you say we don't really need that active back column anymore, let's remove that from the user with recent activity, then you couldn't just do that with an update. So what you have to do is just first drop that view and then create the view again. And again, we need to dump that whole SQL into the migration.  You also can't dump a view into dvschema.rb. And so the solution to that is to tell Rails that the database format is going to be structure, and then you're going to dump into structure.sql. It's going to dump out an actual Postgres SQL version of your entire database. Sorry. Luckily, we've got our second gem, scenic, which adds view methods to migrations and allows views to be dumped into dvschema.rb, which is what you expect. And just generally makes views a little bit easier to work with. Of course, I had a little hand in this. I am one of two main containers. The other one is in this room of this gem. So creating this scenic migration is pretty straightforward. The readme goes over it, but you're going to write into a SQL file basically just the query portion of the view. So you don't need to worry about the createViewSyntax or the dropViewSyntax. It'll handle that for you. And because you're writing it into, you actually write it into a .sql file, and so you're getting whatever sort of editor support, your Vim, or Tmk, or Sublime, or whatever people are using these days, Adam, you get whatever benefits that gives you. So mine gives me indentation and some nice syntax highlighting in SQL. And then for the syntax in the migration, you actually just have this createView, which is reversible, just like createTable, and you can go back to using that change method. Then if you need to change the view, you can actually just do this updateView. You tell it what version numbers, and it knows, based on a naming convention, how to find the new and old versions of the SQL for the view. Even that's a little bit tough to remember. So we did create some generators. We actually have a model generator that gives you that read only and infers the name of the model based on the name of the view, so that that naming will match up.  And then when you're writing into that SQL file, it looks just like this. So the first version of the searches, we just write in this is that same SQL from before, pretty straightforward. And that lives in a SQL file, so that it's a lot easier to read and look at when you're in your editor. We also have a view generator for when you need to update that view, so you can just do, rather than scenic model, you can do scenic view. I don't need notes. And that will give you the next version of the next numeric version of the view. And it dumps in the old version of the SQL, which then you can update with whatever you needed to add. Now there are definitely some performance implications with this approach. As I mentioned, this query is pretty slow. It has to search across three different tables and a couple of columns to get us all of the results that we need. So what it comes down to is actually an order of magnitude slower to get these results. And unfortunately, views can't be indexed. Luckily, underlying tables can. So the recommendation here is add indices. There are several types of index. The one that you're most familiar with is Btree. Btree is great for exact matches on a column. So either text or even like the substring matches are OK with a Btree, you might get an index hit with that. And definitely for primary keys where you're just looking up an ID or a UUID, those are great. For full text search, the ones that we're interested in are Jin and Just. Jin stands for Generalized Inverted Index and Just stands for Generalized Inverted Search Tree. There's some information you'll never use again. Jin lookups are generally about three times faster than Just. They also take about three times longer to build. Jin indexes are moderately slower to update than Just indexes. And they're two to three times larger on disk. What does that mean? Who cares? This is what it means. You should use Jin if you don't have hundreds of thousands of rows in your database. You're not concerned about longer writes blocking the DB. You're adding the index late in the game. And you don't care about disk space, perhaps, because it's 2016. And you want very fast lookups. So we're optimizing for read heavy. If we were building a log manager or something like that, then we would want to optimize for write heavy. And maybe Jin isn't the right solution. So on the other hand, you should use Just if you have very large tables, millions, billions of records. There's an order of magnitude in there. If you're between those two, it's up to you to figure out. I work at a consultancy. You can pay me. You should use it if you have performance concerns right now. And when I say that, I mean that you currently have performance issues, not that you are concerned that in the future you will have performance concerns. You should use it if, for some reason, disk space is important. It's 1994. And you should use it if your table is very write heavy. Like I said, log aggregators are a great example of this. So adding those indexes as Jin is pretty straightforward. These are the four fields that we've been using. And you just say using Jin, Rails knows how to handle that. Materialized views are another way that we can improve this performance. Materialized views are a tool to pre-populate the results of the view. So it's going to run that entire search query that we had. And it's going to store all of those results into a temporary table. So we still pay, say, the 400 milliseconds whenever we're creating that table. But then we can query against the temporary table, which already has the results in it. And that's much, much faster. So we query against that result set rather than perform the full query. And it's another order of magnitude faster even than the I like was. This is without the indexes. And the downside of a materialized view is that it's not always updating because it is storing into that temporary table. You have to tell it when you want to pay that 400 milliseconds to get your update happening or however long your query takes. And you can do that as often as you like. You can do that on every write with a trigger in SQL or with an after-commit hook. Looks like this. Or you can do it maybe on a timer. If your search results don't always need to be up to date, you could have the Heroku schedule or do it every 10 minutes or hour or day or whatever. So you can do that either with a Postgres trigger exercised to the reader or with Rails after-commit hook. That looks like this. All right, well, what about some pre-built solutions? There's a lot of options out there. And I did say that we would look at them. We've got Elasticsearch with either Tire or Elasticsearch Rails with Chewy. It's including who knows how much into your models. I know it's a lot.  Sphinx with thinking Sphinx actually does use a separate file. But still, I don't know what any of this means. Why do I have to figure this out? I already know things. I know SQL. All right, so what these services are great at is faceted search.  Then full-text search is gonna be a little bit more difficult to work with. I'll admit. Or Postgres' full-text search. These other tools do full-text search for you as well. All of these things have to run in your development machine. They have to run on your production machine, which means that they have to be running. They're slowing down on your machine. You have to deal with all of these dependencies. You also have to deal with them every time you're doing an update to your system. If you ever change that version, then you need to make sure that development and production are all in the same version. If you're ever gonna roll back, you need to make sure that's handled.  They all need to be faked in tests because you don't want to be actually using these things live in tests. In fact, I had a couple of co-workers who were using Solar, I believe, and a great feature of Solar is that it synchronizes its index across the same subnet. Because they were both sitting on their work computers and had the same external IP addresses, their test indexes were being synced between each other, and that was a lot of fun. For a week. All of these have a lot of cruft in the models. I said some, but it's all, and they're removing a data concern from your database, database, yeah. They all have this arcane syntax, and ultimately they make me make this face. So, by combining materialized view, full-text search, and some Rails magic, we have a pretty cool search feature that doesn't require any new dependencies, and it makes me smile. Thank you.


Over the years, there has been a large influx of Facebook scams, and people get this over email and get this over private messaging on Facebook. And I just want to show you two examples. First of all, someone posted in the forum, and I want to show you the email that should be seen. And I want to thank Marianne for copy pasting this email for us. So it's like, hello Marianne, and it's in Danish because Marianne's Facebook language is set to Danish. We regret to inform you that recent advertisements on Facebook, this is important because when you start running ads on Facebook or Instagram, you alert the scammers who are monitoring ads to start sending you a bunch of these. And so you've been direct violation, and of course, everyone gets scared when they see somehow they're in violation of Facebook policies. And so they kind of give you all kinds of possible reasons why it might be. It's so funny. They give you such a long list that you're like, well, maybe one of these is true. And so it's like, oh, please follow the following steps. And then we look at the link, and let me hover over the link, and I want to show you, do you see at the bottom of the screen what the link says? So again, okay, look at the bottom of the screen with the link before I click on it. You see it? It says, advise-to-report-media, and then it eventually ends up in .web.app. That is a clear scam. It doesn't matter what link it is, it must end in Facebook.com. So it must be, even if it's like safety measures, .facebook.com or whatever, that's fine. But if it's safetymeasures.facebook.com slash, you know, someotherword.it or whatever like that, then it's ending in these, it's whatever domain it ends in is the actual domain that you're going to and not Facebook.com. So it's a scam. Let me show you my, what I've been getting because I run Facebook, Instagram ads. Look at my Facebook business page inbox. Dear admin, your page is about to be temporarily locked, and then you get a bunch of these different links that we can study, pagebusinesspolicy.com slash select issues, right? Business, look at, this is all within 24 hours. And then within 48 hours, this is all I get all day long. I just get Facebook scams sending it to me. So I'm so used to it, whatever. Look at this. Here's another one. Meta support center dash business restricted again. What is the link at the, what is the actual domain? Verscel.app. That's not Facebook.com. Okay. Here's another one. Meta support center.com. Never heard of it. Okay. And if you ever wonder, well, that sounds, that sounds really official, actually. Meta support center. Why wouldn't that be official, even though it's Meta support center.com, maybe that's the real thing. Okay. So let's go and Google it without the.com. Okay. I'm going to take off the.com and Google this meta support center. Look at it. It's meta.com slash help slash support meta.com. It's not meta support center.com. That's a scam. Here's another one. Communities, right? Meta.case number dot, dot, dot.com. So in this case, the.com dot whatever is not at the end. It's here in the beginning, HTTPS meta case number dot, dot.com. So again, it's not meta.com. It's not Facebook.com. I can go on and on, but you can, you're starting to see what the, what the pattern is here. Let's see. Let's see if there's any other examples. Page support center.com. Is that a thing? Is that page support center thing? Let me, let me Google this again. Don't go to the actual website, but just Google, Google the domain name itself. Center Pega, Pega is some other company. There's no, if it were a real thing, it would come up right away. It would come up at the first couple of search results. Pega Academy. This is not Facebook or meta related, right? So anyway, so now you know how this is how you spot Facebook scams and do not click, just ignore them. I was starting to click, I was starting to go through the trouble of clicking spam for each of these and it never stopped. I've been doing this for months, for more than six months. I've been like dutifully clicking spam, spam, spam, and it just doesn't stop. Facebook system is really broken in terms of filtering spam and they, you know, in terms of even their own inboxes are filled with spam and they can't do anything about it. And number two, they have not done a good job of cracking down on the people who are emailing us, you know, and they obviously they can't control email from whoever sends email to you, but they really should be doing better job and they're not. So this is the reality that we deal with. Just ignore those emails, ignore those messages and move on and run your Facebook ads and do your Facebook stuff normally. So thank you for asking.


Okay. Good evening all. Okay, so ours is the last but not the least presentation which we are going to talk about here. My name is Chandrakand Uttar Mal and I work with the CDAC Center for Development of Advanced Computing, which is a government organization in government of India. I have my friend Mr. Rajesh Ranjan, who is open source community manager with NEGD, which is also associated with the government of India for its e-governance project. I just joined there in government of India three months back as open source community manager based in Delhi. I was early in Pune with Red Hat. I worked for Red Hat ten years. And I learned a lot from Red Hat how to work with the open source. Before that I was in community, but after working with one to two years I joined in Red Hat. And this is how and I started open office translation ten years back for Hindi language. And I become after one to two years I become a marketing lead for open office in India. And after that LibreOffice started then again I am translating here for Hindi. So what we are going to talk about is how is the community, LibreOffice community in India. As you know, I mean let me tell you that Rajesh Ranjan is the one who bought me into this community stuff. So yeah, to be very honest the community in India, LibreOffice community in India is not so huge. It's a very small community and if you talk about the community is mostly from localization team. So when we analyzed the community in India we thought it's very small and we need to grow that up. So unlike other presentations what we will be talking about here is how we can grow this community so called LibreOffice community. And that is where this particular idea came up when we were discussing that this is a good time when we come together and start discussing about what is the problem, why there is no big community in India. And the first of its kind the meeting on LibreOffice community took place way back in May 14. And this is the meeting which we did in Red Hat office. Yes, actually we are discussing about LibreOffice things and I was earlier in marketing lead for India for open office. So I was thinking that but there are a lot of different type of burden with us. But we planned that better we should start with something. So we asked with a different localizer because major localization community was there. So we asked all the persons and we took a place in the Red Hat office in a conference room and we asked all the persons to come there and we arranged some pizza and whatever there for all the persons. And we did some brainstorming there and ideation there and after that some thing happened. So as Italo says what we should be targeting about is not the ones who are already using or not those people who are already on to Linux systems. What we should be targeting is those who are on other platforms like Microsoft Windows for example where people would not have heard about LibreOffice and its importance and why they should migrate to LibreOffice. So when I said it is a small community it was in that particular terms that you know you would not find many people on Windows who are using LibreOffice there. So that is what this particular idea started out. So these are all the list of persons who are localizer in unique languages. We have 22 who do not know for that for their information we have 22 official languages. Apart from that lot of languages are there but at least we should count for our sake for our easiness 22 languages and here we have and we are trying to do some more languages and for CD with CDAC. So there is a program called TDIL Technology Development for Indian Languages Program of Government of India. What it tries to do is it tries to combine all the free and open source softwares into one disk and along with that softwares they also try to pitch in some basic tools like how do you type in Indian languages because typing in Indian languages itself is a major problem unlike other languages because the other languages most of the times they use the standard keyboard which is available on the computer but in case of Indian languages for those who know it is difficult so you cannot use the same keyboard which you see or which you find it everywhere. So what we have to do is we have to have a special layout, special keyboard layout wherein all the different Indian language characters are placed. So to tell you even that the typing problem in all the Indian languages is still not available for all the people. So what government is trying to do is trying to bring all these basic and elementary stuff in one CD and then distribute to the common people so that the usage of the language is increased and more importantly as it is said we have included this library office, localized versions of the library office in that CD and that is distributed to... Last Norbo is mentioned as a reception and there was last Norbo. Oh I got afraid. So recently there was a conference in Bhopal which was a world Hindi literature conference wherein government of India had distributed approximately 25,000 such disks to common people and we will show you that. So the major component of the community in India is localization and that's how it is. Most of the localizers are seasoned here. We are having Krishnagau here. Also from Tamil we are having here persons and any Peter who given presentation for Janatas he is doing for Malayalam. So we are having 4-5 persons here in this list. This is about digital India.  So almost 250,000 villages, village panchayat we are calling it is a group of villages. Their common service centre is going to be established within 3 years and it is already in plan. And 150,000 post office is going to be multi-service centre. So everywhere will be computer and everywhere the people in the lowest strata can have reach to the computer. So this digital India is the biggest government of India plan announced this year and they have very big agenda for this thing. So they have also a plan of making at least one person from each household a digitally literate person. So we could take this advantage and try to promote and proliferate a liberal office in India. So this is all about the open source policy which government of India has recently released. So what it talks about is the government of India projects and initiatives whatever are there should try and use open source software. So this is where we can take a leverage upon and as it is in other countries also it is not yet a compulsory thing or it is a mandatory thing. But the government is trying to make that mandatory and see that you know lot of the initiatives make use of such friend open source software. Yes if you can see this document. It is so much open source friendly the second one link is 115 times if you search for open source word phrase you can find open source word 115 times. So such a positive policy towards open source is there and in this thing liberal office is placed as a standard and preferential tool for the travel documentation other purposes other related purposes. So you can find the name liberal office you can search the liberal office things there itself. Now this is something called as Bharat operating system solutions. Now this is the variant of Linux system which has been indigenously developed in India and government of India is trying to put this particular operating system in almost all the government organizations. So anyway by default this boss operating system which is an operating system in itself will have liberal office. It is already having. It is already having. So slowly this is going to penetrate inside the offices of government of India. Certainly the liberal office is going to penetrate everywhere. So why we are mentioning it here is because once this operating system is installed in major government segments or domains or offices this is going to increase the usage of liberal offices. This is about fuel project actually we tried to build a community around languages and linguistic resources. 10 years before when I joined Red Hat then I was very much frustrated with consistency and standardization in translation. When I was translating save ads or print preview so somebody were telling that why you are translated like this you should translate like this. So I thought that this is a good idea. Better I should put you all at one place and ask your solution finally release that solution and we call it fuel frequently used entries for localization. We collected some of the term from desktop application liberal office open office was at that time is 7, 8 year back 7 year back and we collected all the entries of 3, 4 level from different most popular applications of Linux applications and we called it frequently used entries for localization. So around this glossary initiative we have created a repository of not only glossary linguistic resources of open source linguistic resources. You can tell it a largest open source linguistic resources because it covers in almost 60 languages and it is having style guide, it is having translation assessment matrix, it is having glossary, evaluated glossary. It is domain based glossary like fuel for desktop, fuel for mobile, fuel for web, fuel for cloud, fuel for we are going beside IT also, fuel for agriculture, fuel for health. So for the whole translation localization domain we are creating a thing and this become a government of India standard also it is supported by Red Hat, Mozilla, Wikimedia, Government of India, SIDA, Government of Maharashtra, several state government and all language community. So we can take help of this particular community to grow the liberal office community as well. So yes that is most important you can see these are two pictures. So in year 2013 and 14 I mean last two consecutive years we have we have been arranging a conference in India wherein we call this language or localization professionals and we discuss about various aspects of how we can take it ahead or their experiences and so on and so forth. This year also this time we are going to do on 20th November. So Mozilla and in different organization is sponsoring that one. So you are invited. So what about the organizations which are already on to liberal office or who are already using liberal office at their places. So these are different organizations which are said is TDIL Technology for Development of Indian Languages. We have got CDAC, we have got Kerala State IT Mission, Government of Maharashtra, STC, Indian District of Technology, Mumbai and so many others. There are few names here, few major names. We can take support of these organization also again for our purpose, for our community purpose, community building awareness and everything. So we have put their name here. Now as far as the educational thing is concerned, now there are few initiatives which have been taken place. So one of the initiatives is from CDAC which talks about certificate course in open source software. Now earlier it was Barthi Open Office, localized Open Office. Now because the page has not been changed, it still remains in Open Office but the courses now which are being run are in liberal office and we have got around 365 franchise centers across the country which has got this one month course on liberal office. So the proliferation itself on liberal office education is good enough and we can leverage upon this network to promote this. Another initiative is from IIT, Mumbai which is called as a spoken tutorial. So what it has done is it has created video tutorials on various open source software including liberal office. So you can see this liberal office writer. Different languages also. Yeah and more importantly this is available in multiple languages. So what you hear is in multiple languages so that more audiences actually covered in that. See you can see that liberal office writer on bossliness. So that same boss Bharat operating system solution. In Marathi, see how much module is there. In Marathi 462. 462. Different modules are there. Okay so these are some of the promotional activities as I said. So we participated in 10th Vishwa Hindi Summelan. That's World Hindi Conference which was in Bhopal. And then we also participated in Marathi literature conference which was held in Port Blair, Andaman. And then there are other you know such initiatives where we went to some engineering colleges and then some text shows where there some of the other organizations like Krishi Vidhna and Kendra which is an agricultural institute. And then this some of the schools so which we wisdom world school and so many other places. So the presentation is all about is talking all about what is currently there in India and how we can try to build this community to a larger community. Some are related to liberal office. Yes. On the basis of that thing how we can build a vibrant and good supporting community who can favor liberal office especially. Yeah and now this being the first conference for us we have got to learn from a lot of people especially Italo. We are very much thankful to you all given very good insights into this and of course Kaur and you know others and this gave us you know really good motivation to work to understand the better flow of actually every community has open source community has one mindset. But every open source different open source community has different type of mindset also some different different culture also some type of difference is there. So we understand a lot here. So of course these things community building or brand awareness training and migration supporting other Indian languages and you know bringing more organization on board is all what we plan to do in coming days. So different bullet marks can come. So this is this is the communication things I mean we have a mailing list specific to India is it was created last year and then we have also have a Facebook page of course it was just created I mean yesterday it was created when we heard about you know other community pages. So going on Facebook and Google plus next year you will see number of people which are here. So that's it from our side. Thank you so much and we are happy to take any quick questions if we have maybe the basic but we'll try to answer. Yes. One question. You said you have 22 languages. Yes. Dialogues in the new localize. And did you mean any problems showing different words I mean those dialects should maybe have different text different characters. Yes. Yes. You must use different forms. Yes. So yeah I'll answer to his question. I understand what you are trying to tell because India has got so many languages and once we are trying to bring all those languages on board LibreOffice they are going to be problems especially in terms of fonts because not I mean if you see in open source community there are some languages for which you won't find you know free and open source fonts which are unicode compatible. So the problem is we are going to face that problem. We need to have such fonts which are there in open source and which supports those languages. So when you see this particular slide for the second slide we say that not all of them are here. These are the languages or 13 languages which are currently there with LibreOffice and these languages don't have any problems. The ones which we are trying to bring on board especially like Santali, Bodo, Dogri. A smaller language but not a smaller in the sense of population. It's going to be a problematic situation. With context to India is smaller language but they are also most of them are having population 10 million at least. You know that for the localization is better that you talk with Sophie and Christian. You have an instance on Poodle and create all the strings. Yes we know the process. We already started for some other languages. Some of the languages are already there but it's important that for each language we get also a contact name because we have to get better organized on that. Yes we will do that. We are trying for that one. I understand that. I mean 22 languages is enough. It's a very complex structure for us also. It's already 3 more than the maximum but 22 is crazy. Making a balance between the all community members actually unfortunately we have most of them are our friends and we work together since long because of localization but it is very much difficult to have a similar wavelength and it's a chance of conflict. A lot of things is there. You can understand the diversity of India. Let's say a reference language for everyone like India or really there are areas of the country where there are different languages and people do not understand each other. So there are some languages which are at least understood by most of the people. For example Hindi is one languages which is used or can be understood by most of them not entire population.  And English of course can be understood. It's not native. It's not coming under 22 languages but it's a dominant language. We should think about native communities you know. English is okay. We all speak English but it's not our language. So respect the native communities. And just a question if you are able to understand is just out of curiosity. In how many languages is Microsoft Office available? That is also not eight languages only. That is not much. Eight or nine languages they are available. We have far more than that. This is a winning point for LibreOffice. We will certainly make it in all 22 languages. And it can be a very much big win. You already told that it can be a big win for us that we can say proudly that it's available in 22 languages. As I said CEDAC, Government of India and the community is going to try very hard to bring all these languages on board. That's what I can say. But I think it's a winning point not only because we provide 22 against nine but because providing 22 we show respect for each community. That is very much important. It's not... So once we are writing on some mailing list I also told that open source is not just for money. If a single user is there and you want to contribute open source is ready to take the contribution and respect their contribution. So that is the most important point. If a smaller language sees just 5% is also speaking and they are coming to you. So you won't tell that I won't take your contribution for the language. So this is the most important part of open source projects. There's a lot... The word open source, the term open source was 120 times more than 120 times in a document. How about open standards? Is it also there and what is the policy regarding using open standards and particularly of course the open document format? Open document, we already... Government of India supported that. Already supported that one. That is present in the document. What does the document say about it? See unfortunately there is no such... So you are talking about what it says? Yes. Open document format, government already... Much before I think it is already... It is mentioned but it's not yet very popular. No, it's not popular but government of India supports that standard only. Not Microsoft. It was a fight. I was not at that time in government. It was a fight when I was ended up two, three years back and finally government of India was convinced that this is the format we should accept and they accepted that thing. It is there. It is written in the document and opensource.com magazine also put a big article on that one reviewing that policy. I sent that to the editor and they wrote a very good article. You can search on the opensource.com. The question is simple. Yes or no? Is the ODSK a national standard to India? I think it is. See if you talk about... Could you please search on that? I think it is because when the fight was going and a lot of articles were going it too... Can I add? See the problem is as it is with other countries also it has been mentioned but it is not mandatory yet. I mean a government still accepts other file formats. If it is not mandatory are they putting resources to help people to start using it? Is it just on paper somewhere or is it actually people being paid to promote it? We can write to you through mail and we can just research on the things because whatever I am telling I am a little bit confused that what finally concluded. But it was concluded in favor of open format but I am not sure. So better to... There is a message on our mailing list that says something similar. Of course the document is not in a language that I can understand but maybe it was Danishka that sent the message. I don't remember. About the ODF in India were you or someone... I don't remember... It's about the minutes of meeting from one of the... one of the state in India. That's the government of Maharashtra. It's in the marketing district if I am not wrong. We have to create... we have to create a repository of the different documents and laws because otherwise it's always on a memory of people and we are becoming crazy. We need a nice map which we color. Exactly. And the repository of the documents even if they are in language that we don't understand but 50 documents that say the same thing are impressive. Exactly. We will... We will work with Jyotsen and with to improve the website and provide... not the ODF to provide resources. Krishna? When the community come on board so we can see if the translation is there and the standard is given in the country so if something is missing we can focus on predicting that country. In India these guys are working hard on localization so if a particular thing is missing we can focus. We can improve that. There is a fantastic document done by the UK government that has been published recently that is really covering all the possible stuff how you should create the document and which I think we should make popular not just in that we should create a document that we can share with people. There is a strong contribution from the Netherlands. Yeah, yeah, yeah, yeah. But if the UK publishes that the Netherlands publishes that France it looks like is close to publishing something similar. Then of course we go to the fourth and say we are already doing it what about you? So this gives the answer to your question. Actually everything is I recently joined whatever I know everything is inclined towards open source open source everything we should be better recollecting these documents and sharing them. And that document is also mentioned what I referred in the slide that is mentioned that is huge document and you can see whole open source related things. This particular link ego standards.go.in We will have a look but I think it's important that we start sharing all this because of course this is part of the lobby I was saying before. If someone says something and you can send them a list of 50 documents that are 4 of the F it's going to be difficult to say that of open XML is the reference standard everywhere. Yes, even for I talked about field project it become the standard for terminology and style guide etc because it's open and it's open source available under different open source license. So there are apart from Microsoft glossies there are a whole lot of glossies there field project glossies become the style guide become the standard glossies for the government of India. Okay, so thanks everybody I think that we have a full discussion.