stream, press OK. OK, we're live. All right, awesome. Hi, everyone. Thanks for joining us for this month's Tech Talk. Wikimedia Tech Talks take place monthly, and we invite members of the community to join us and share their knowledge about topics that are relevant to the Wikimedia technical community. If you're interested in giving a talk of your own, please see the Wikimedia technical talks page for more details. Today, we are delighted to have Amir, Sarah Badani, a software engineer at Wikimedia Deutschland. Amir will be sharing information about the technology that makes Wikidata work. Amir's talk is going to be around 45 minutes long. We'll have some time at the end for questions and answers. And you can add your questions to either the YouTube stream or the Office channel on IRC. Feel free to submit questions, and we'll make sure to ask Amir at the end of the talk. Thanks. On to you, Amir. Hello, my name is Amir. And today, I'm here to present about Wikidata and how it works internally. Let me start by sharing my screen. I hope you can see my screen. Can you see my screen now? Yes, we can. Thank you. So today, I want to talk about Wikidata and its technical things behind it. Quick introduction. My name is Amir Sarabodani. I'm a software engineer at Wikimedia Deutschland in the Wikidata team. I've been a staff for two years now. So as a true Wikipedia, and I want to first of all give you a table of content before moving forward, I want to say, so in this talk, we're going to first talk about some concepts of Wikidata that are needed to understand it. Technical things behind it. And then I will talk a little bit about the code structure of Wikidata, how it's organizing inside. I won't go into details for it. And then I will talk about presentations and the APIs that Wikibase and the software dynamic data provides for users. And then I will talk about the secondary data storage of the information. And a little bit will be going to the entity usage. And then I will touch a little bit of front end stack and then I will talk about the miscellaneous parts that I couldn't squeeze into other parts. And then I will quickly tell you what's going to change about Wikidata and its technical layer. So first, let me start with concepts. Let's explain what some concepts that are important to Wikidata. So first of all, Wikibase is a software behind Wikidata. In a way that MediaViki is the software behind Wikipedia. Wikibase is also a MediaViki extension, which actually is not one MediaViki extension, several, but we'll get to that later. It's a Wikibay, we have two things in the concept of Wikibase. The first is Wikibase repo and the second thing is Wikibase client. Wikibase repo is the place that you can add, store the data. Wikibase client is the part that uses the data. So of course, a repo can be client of its own, so it uses the same data. And currently in Wikimedia Foundation, infrastructure production, we have two repos. One is Wikidata, the other one is Cummins, but every other Wikis basically the client of these repos. The concept of federation, so it brings the concept of federation when Wikibase first got started, repo, we had only one repo and lots of clients, but then this structure data and Cummins happened and we were thinking that we need to have several repos that a client can reach to and get to use the data. This is called federation. So technically it can cause collisions. For example, if I want to know what Q42 is, should I virtually get it from Wikidata or Cummins? So the way that the divorce right now is that we have entity types that are defined per repo. So Wikidata handles items and properties and Cummins handles media info. This way they don't collide. So we bring us to the concept of entities. Entities are simply put things and they are several types of entities. The one that are in the Wikibase itself are item and property. Properties are things that describe the item and we use a data model to describe an entity. So the part, the first part is terms. Terms is label, description and aliases. There is three different type of terms and they have statements that are being used only on items and properties but also describe the entity itself. And sightings, sightings are only used in items so they can connect it to Wikipedia and clients using that. So these are like each part of an entity you can actually define other types of entities. Lots of people know item and property but lots of people don't know what lexeme and media info that are also entities. Lexeme is also in Wikidata only and it is basically dictionary entries. If you assume like items are entries in encyclopedia, lexeme is an entry in a dictionary. And because it's like a different entity, it has a different data model. It shares some data models like statements but it doesn't share the same things. Like for example, it doesn't have labels or descriptions. Media info is basically similar to items but for one per image and it is in comments and that's the thing that powers the structured data on comments. Basically structured data on comments is a new entity type. So this is a quick overview of item of all entering a Q7251 if you go to it and try to look at it. This is like sightings, statements. So it's statements are here, sightings are here and the whole thing is called terms and it shows you three things, label, description and aliases. It has a different name. So now let's dive into the code structure. So first of all, Wikibase is not an extension, is several extensions. For a repo, you enable several extensions like Wikibase repository and Wikibase client because the client can be repost of its own. Wikibase view is also an extension of Wikibase repository. Let me say this way. These are going together. A repository also is a view and media info is dedicated for comments and it's not enabled anywhere else. Wikibase series search here if you look at the Wikibase series search, it's actually the thing that enables search in a better way. We get to that later and Wikibase and repository together. Lib is actually the extension that is shared between client and repo. It's for the sake of having a shared code between these two. For a client, it's a little bit simpler. So we have a client, we have like SIEM, we have Lib and badges. Lib, as I said, it's shared between client and repo. So it's enabled everywhere. And like SIEM is the one that enables like SIEM but they can have different modes. It's in English Wikipedia, it's enabled on a client mode, not a repo mode. And Wikimedia badges, it's the one that shows a very tiny links to the settings that are featured. If you go to their Wikibase extension on Wikibase, the codes are here. You can see the codes are actually being shared. The other parts are not related to the code. Even the tests here are actually seeming to another thing. So view is part of repo and client is on its own but Lib is shared between these two and data access is also part of Lib. Data access is trying to take some part of it out and trying to, and it handles access into data from client to repo. So let's get to the talk about representations and APIs inside our system. So one thing important thing to notice about Wikidata and Wikibase is that it's just an extension. So on its core, it's just another extension that lets you have in pages in JSON in a dedicated namespace and that's all. It doesn't do very crazy things for you. And you can see if this is in production, I went to and asked GetText, Wikidata, Wikidata, Wikidata and asked for an item of allitering and it gave me a JSON representation. And this is the part that all of other part of truth comes out. So this is one place that we can sort the data and everything else is secondary. This explains how you can edit. So basically you can change things here and there. But no one goes and directly edits JSON. Everything happens through API except for rollbacks and restore, but we don't get to that. So when you have this JSON part, you can build all sorts of representations out of it. One important representation is HTML for humans. If you want to see this, if you can go to WikispecialEntityData.q7251 and you get there and depends on your language, you can get a different view because you can build different views based on from the JSON representation. And also JSON API gives you some data for this. Basically it's written something that's similar to the internal storage thing that I showed to you, but it's not the same. It's a little bit different. And it also can give you RDF. RDF is basically the way that powers data query service and Sparkle. But that you want to query with data because Sparkle is a graph database and it understands the RDF language. RDF has two formats. One is a turtle or TTL. You can access it through this and get the data out of this. The other one is JSON-LD. You can also access this, but a blaze graph uses the TTL. Also, if you're writing an extension on top of VikiBase, you can also access the items using, there's a single example VikiBase repo. You can get the single time and get entity lookup gives you the information and builds you an object of that item and you can use that item. So, but if you want to, for example, use the data of the key data and every time you need to load it, we would call the external storage and load the page and build this JSON file. It just wouldn't scale. So we have to have several layers of caching on secondary data storage to be able to use this. So first, I start with Termistor. Termistor is basically just right now is a table that has entity ID, the type and description and the terms. So you can, for example, when you're rendering a page with HTML and using it from another item, you don't need to load the whole new item. You just look at this database and look at the data. The problem with this table is that it's really, really old, it has more than two billion rows and it's very generalized. We are replacing it with a new system. It is like a combination of six tables. And then it's one order of magnitude smaller. Also the thing is this table is being read a lot just like orders of millions per minute. So we put lots of cache on top of it. All sorts of ways. Also it's too big to fit into any cache. So there's a dedicated cache that has that hot data. There's some parts of it that are in a PCU cache. The other parts are in memcached, but it actually reduces 99% of the reads on this table. So we have the parser cache to have the data. So it distorts HTML representation of the entities that it's true to and it's just plugs in and it's basically the same as the MediViki parser cache. Also, it's fragmented by language, which means you won't get the same thing if you're using different languages that cannot do a language like non-secure presentations. Also it expires in 30 days. And also we have, and it has some placeholders and some parts that it gets hydrated in the server side rendering through the server side rendering or the client side rendering. So we have another storage of that, which is called Bradesgraph. This is the part that enables VikiData query service and through getting the data from VikiData, the first storage and it stores into VikiData query service nodes. So as I said, this, for example, when you query VikiData query service, you're not hitting VikiData directly at all. You're hitting VikiData query service nodes, WDQS node in production. And those have their own version of VikiData, which is the optimized version of the RDF output of each entity. It gets updated through something called, I forgot its name, but it's, so this is the infrastructure of that. The picture, you can find the picture for this here, sorry, in the link that I put here, but this is the way that it gets updated. So the real, the storage for VikiData in app server is here, and then there's RDF interface that both understands, and we have query service importer that gets the stuff from the damper and then put it into the RDF 3.0 services Bradesgraph right now, and then people can query that graph database. And we have Elasticsearch, which is a completely different representation of the data that we have in its storage in Elastic. It's enabled by VikiBase Serious Search extension, and you can just not install it if you have a third-party installation of VikiBase, and you don't want to go through all of this. So for Elastic, you just can use the Termistor, but also when you hit the special search or the API module called WB Search Entities, you get to that system and you hit Elasticsearch instead of the actual data. Also, this is not a representation, but this is also a collection of other representation is dumps, we have full VikiDumps that also incrementally are daily dumps, that's of difference between every day, and they are available in two formats, A is RDF and B is JSON for what you want to use, and Elastic will use this. Also sometimes it's being used when there's VikiDucor services behind and they use it to warm up the cache. So now I want to talk about the entity usage, so you know how this secondary storage works. I wanted to tell you how entity usage works inside VikiData. So there are several types of entity usage and several parts that you can use entity usage. One part is on repo when you're using another item, so this is all entering a word item and you see it's like named after and it says all entering.  And also in a special page that you can use this. On client there's two types of data usage here. The first type is site link usage when this is an article of South Coast Telescope. If you go to this article, there is in the sidebar there's languages and a list of languages that this article exists in. This list is being maintained by VikiData because centrally it holds all of the site links. The difference is that site links actually gets its data propagated to the clients, so it uses the data inside the language links table. So this gets copied everywhere, but the data, the main thing is the store in VikiData. But other types of data usage, for example if what's part of it and what's the coordinates, like it says what's the coordinates of South Coast Telescope if you want to know what's this coordinate, it gets the data from VikiData. And also even if you want to reparse the page of this page in English Wikipedia, it goes and direct connects to the VikiData, loads that item, gets its value and put it in here. So it doesn't have any data inside clients. It doesn't get a store any data unless in parser cache, but beside parser cache the data is not copied to the VikiData client and what data is being used. And you can use this data usage in the info box that I showed to you through parser functions that we introduce and do all functions. There's a very big help out for that. Some Viki's like a bus VikiPDI use this very extensively, like most of their info boxes just come, gets the data from VikiData instead of having it locally. So we need to have this, you have this problem of cache evaluation in our system. So for example, if someone tries to edit and change the data in VikiData, this needs to be reflected to the item of source or telescope, but it's not easy to do that because we don't know what's using this data. So we need to have this tracking of entity usage. We need to build this system. So it happens in two ways. First is client side. So each client has this table that's called WBC entity usage, WBC, C is for client. And you say, okay, tell me which pages of this Viki is using this item. And it gives me all of the page IDs and also it gives me an aspects that saying, oh, I'm using this part of this entity. And T is for title, site is for site link, or is for other, which means aliases. And label is an LFO label and this is a modifier saying this is label in Bask. And C is for statements or claims. This way, we can know that when something changes and I, for example, label in Chinese change, I don't want the item for this to get reparse because it doesn't affect this item, these pages because they are not using this label. So it's a little bit granular. And if you make it too granular, it becomes so super big because the table will grow too big. So sometimes we just aggregate them to a smaller thing. So for example, C here can have a modifier saying, oh, C.p1, I'm using only property number one. But when it uses more than 20, it just aggregates them to a general C. And for example, if it's using L with lots of languages, it would also aggregate it to one general L and would get reparse if there is any change coming for labels. On the repo side, we have this table called WB, changes, subscription. And then it says, okay, these three keys are subscribing to this entity. And they need to be notified if a change comes into this entity. And then when they get notified, they check the change and the serialization of that change against their system and the aspects that they are using. And then they decide, okay, I need to reparse this page or not. Basically, this is what I told you is basically reflected in here. There's like a long documentation of it that I linked here as well. You can use it and read it more if you're interested, but this is how it usually changes spashing work. Change spashing doesn't cause the page only. It also can log into the watch list and basically puts a new record in recent changes table, which gets reflected to a watch list and recent changes. So people would notice, okay, someone is vandalizing this item in VikiData because I'm getting my watch's change for on VikiData. Perge, as I said, the only reason that you're perging because it automatically has to go and lose the new data from VikiData. We are not sending the data to their client. And also you can use it in another repo and that's called federation, some parts of federation.  This is the HTML representation of this entity. If you get to the JSON representation, you will see, oh, there's their statements. There's a P, which is, this is the depict statement, depict property and then you see the ID is Q7251, which is the way that you can use this. So let me get to the front end stack a little bit. Sorry, yeah. So on the front end, it's mostly a UI widget. It's a little bit old, I'm sorry about that, but we are working on it to improve this, but it's been written a really long time ago and this is started and it's get hooked into MediaViki, your source loader, if someone loads the item and the PHP injects something called vikibase.ui.nttvunit module. vikibase.ui.nttvunit module loads something called vikibase.viewfactoryfactory, which can be overridden between different entity types. For example, Lexim has a code on his own and vikibase.ui.factory looks it up and says, okay, which type of, if it's a read mode only, like if the page is protected, I just go with vikibase.readmodefactory and if it's not just a read, it's not protected, you can edit it, it will go to the controller viewfactory.  So let me explain to you, this is the dependency graph. So basically, this is the part that I determined there, it's actually entity view init. So back then, like three months ago, if you wanted to visit a page of vikidata, entity view init loads basically all other modules in this set here, but it's not going through all of this dependency graph. We improved this recently and it's now this, which makes it a little bit more understandable. And yeah, so now other thing that we are working on is to actually modernize the front end and we do not try to use this jQuery UI old systems. One of the things that we are doing is using VUJs and TypeScript and we are working on server-side rendering. You can see this in items in the mobile view. If you want to go to visit the items in vikidata and mobile view, you will see there is like a very clean and nicer view of the terms that we call this turn box SSR and it uses a services that are in Kubernetes. So SSR is the way that this is just a server, it's a service in Kubernetes that talks to me in the viki and if a browser wants it, it tries to get entity HTML for the user. Let me explain it to you this way and this is the better way that you can understand this. So someone goes to Q1 to 3 and says, okay, Q1 to 3 in English as a media viki PHP called server-side rendering. It's like, tell me more about HTML of this page. And the server-side rendering on the other hand calls the media viki PHP behind varnish that was the JSON representation. I want to know the entity and it gets an entity data and then also it tries to get the content languages and messages and then it tries to render it and gives the HTML parts of the turn box. If I can show it to you here, this HTML parts is not everywhere else. And then it will get put into part of the cache and then return to the user. And there are some other parts of vik data that vikidata team handles and maintains. There is one thing is vikibus quality constraints. Vikibus quality constraints actually has some ways to show the user that our problems with statements as they're inside the vikidata, they say it's an API that API requests Sparkle and Sparkle tells them, okay, there are two items that have the same exact value, for example, in this case that I'm sampling here, so when you want to render the page, it has this own way of caching it. We also have our own system of analytics refinery that is similar to the vikimedia foundation and it's basically a set of Chrome jobs that are run in stats 1007. Some of them are every minute, some of them are daily in different times and they extract some data and send it to stats D. And then we will use it in Graphenome. We also have property solicitor, property solicitor extension is another extension. Also, I forgot to say vikibus quality constraints is also an extension. Property solicitor has its own tables and when you want to add a new statements, you want to know what property it has. So it suggests you the properties that are more likely to be used. You have another extension called article placeholder. It's only used in client vikis. Some client vikis is not an event in all the client vikis. It basically gives you a very small placeholder of an outscale if it doesn't exist and if you search in there. I think the biggest viki is enabled is Russian vikib here, but I'm not sure. I need to double check it. And also there is server frameworks. We don't maintain those, these are maintained by community, but these are the parts that actually enables lots of users to make lots of edits into vikidata because vikidata currently has more than one bellion edit on it. So it takes some time, lots of it's been done through the automated systems that have been harvesting data or getting data from other data sources. One of them is Quakey statements. It's written by Magnus and there's also some semi or automated tools. PyViki with a set of Python scripts and that enables imports to run scripts. And vikidata integrator is self-explanatory. It integrates vikidata. These are maintained by the community. And we are going to change things. There is several changes that I can mention for now. A is that we are completely dropping the old term store which is the WVTermStable. We are replacing it with like six tables that are normalized and they connect to each other. As I said, it's going to make it one order of magnitude smaller. It makes it way more usable for users. And there's a problem with vikidata query service back-end that plays a graph. It's growing too large. Community Foundation Search Platform is working on it. And the other hand, also you're improving the front end of vikidata to actually use the more modern libraries and frameworks and use VJS for our systems. On the future, like also there's not as future features that are going to go live soon. One of them is client editing that is called vikidata bridge. So if you go to inbox in Wikipedia, you see, for example, soft-boilers, you'll see the value. If you want to edit that value, you have to go to vikidata and you might not know how vikidata works. So vikidata bridge is basically a front-end app that hooks into that link when you want to edit. And when you want to edit this, when you click on it, it shows you a pop-up inside vikipedia and then you will be able to edit vikidata through Wikipedia instead of going to vikidata and trying to change things. There's some documentation and things to explain here. There is a docs directory on the GitHub repository. There is a vikidata page in vikitec that has more information on things that are inside there for production systems and are configuration that are very specific to the community foundation infrastructure. And if you want to run a third-party installation, vikidata bridge is also very good in vikidata.org. Thank you for letting me give you this talk. I would be very appreciate this if you tell me about questions and if there's any questions so far. Thanks, Amir. I don't actually see any questions on the YouTube stream yet or on IRC, but we'll take this time to ask the audience if there are any questions. Feel free to add them to the IRC channel now or to the YouTube channel. And if you do not have questions now but you want to ask later, you can always email myself or Amir. I am feeling very few questions and by that I mean I am not seeing any. So we'll give the YouTube stream one more moment. Oh, Magnus Salgo wants to ask, can we ask about Wikibase? Sure. I don't know if I know everything what Wikibase is on top of my head, but sure. Sure, Magnus, and I'll answer here too. Okay, so we'll see if there's a question there. I want to go ahead and give Magnus just a moment to ask because sometimes the livestream runs behind a little bit. So the question is, what is the status of reusing the ontology from Wikibase using Wikidata? So I think what you're talking about Magnus is basically a federation on a level that other systems that don't have access to database of Wikidata can use the data because right now if you want to be a repo and a client or like several repos, you cannot do this unless you have access to the database of each other. So you cannot have a translate Viki use our systems because translate Viki is not inside our production. So I think the work on it started. I cannot tell you when it's going to end, but hopefully we will get to this at mid 2020 or end of 2020, but I cannot give you any promises. But this is on our radar and this is on our roadmap. Awesome. Thank you. We'll give one more short minute to the YouTube stream. I'm not seeing anything on IRC, but that was a good question. And then once again, if we have any more that come up after this talk, I know Amir that your number of hours ahead kind of out of the business day too. So I'm sure folks will probably watch the talk where you're at a little bit later and we're more than happy to welcome questions after the fact. Awesome. Magnus says thank you. So since we don't have any further questions, I'm going to go ahead and say thank you to Amir for talking with us today. We really appreciated this walkthrough Viki data and just an invitation to the rest of the technical community. These talks are for everyone. If you have a topic that you are interested in talking about or information that you're interested in sharing, we'd be more than happy to have you reach out to us and schedule you for a tech talk. So thank you so much, Amir. And we'll be talking, I'll be sending out announcements about the next talk shortly. Thank you. Thank you for having me.


Item number SCP-126 Object Class Euclid Special Containment Procedures SCP-126 is kept within a standard Euclid-class humanoid containment cell, despite not having needs consistent with that of a normal human or any kind of nourishment, as this environment is proven the most effective in keeping SCP-126 contained. In case of a containment breach, acoustic sensors embedded within SCP-126's containment cell, as well as the entire wing in which SCP-126's cell is housed, can be used to locate SCP-126. Firm, but polite verbal requests for SCP-126 to return to its cell are to be given until it complies. While interacting with SCP-126 must undergo regular psychiatric screening and personnel exhibiting emotional attachment to SCP-126 must be administered a Class B amnestic and reassigned. Description SCP-126 is an invisible and intangible entity that can only be identified by a sound. SCP-126 is sentient, with the ability to speak of multiple languages in a female voice and engage in conversation with any subject within range. To date, no method by which SCP-126 can be visually detected has been devised, as SCP-126 does not appear to emit any kind of light, radiation, heat, or electromagnetic energy. SCP-126 does appear to occupy an area, as evidenced by the ability to triangulate its suggested location via its voice. SCP-126 also emits sound when moving consistent with footsteps made by a human subject wearing high heels, with a mass of approximately 55 to 60 kilograms. Though no depressions can be seen in any four materials and pressure sensors do not register any kind of presence. SCP-126 cannot pass through barriers that would prevent a normal human subject from passing, such as a closed door, but solid objects can be pushed through the space it occupies without any effect. For unknown reasons, SCP-126 will comply with any request for it to follow a specific human subject or move to a specific location without question, though it may move away afterwards or if it is not able to physically comply with the request. SCP-126 will engage in conversation with any personnel within its containment cell, preferring topics such as art, nature, and philosophy. SCP-126 exhibits knowledge of current topics and intelligence consistent with that of a college graduate, as well as moderate attention deficit disorder. SCP-126 will regularly change language without reason and stray off topic while conversing without warning. Attempts to question SCP-126 about its origin or nature have been unsuccessful as SCP-126 becomes confused when presented with such questions and will quickly stray away from the topic. Despite not appearing to use or need any furniture or appliances, SCP-126 will request such items as a bed, dresser, mirror, or other sundries if not present, and is more likely to stay within a room if such items are available. A small number of personnel exhibit anomalous behavior after engaging in conversation with SCP-126, including but not limited to believing that they have known SCP-126 for many years, and that SCP-126 is a close friend or loved one. If not treated, these subjects will begin to ignore basic needs in order to continue conversing with SCP-126, eventually dying from dehydration or starvation. SCP-126 was discovered in a suburban home in ██████ after several reports of the house being haunted. A Foundation containment team was able to quickly locate SCP-126 and, after conversing for several minutes, convinced SCP-126 to enter a mobile containment unit, which was used to transfer it to a local Foundation containment site. Addendum 126-01 Researcher Note To date, conversations with SCP-126 have yielded several notable personality traits. SCP-126 is mildly arachnophobic and will move away from any specimens introduced to its containment cell. SCP-126 exhibits a desire to assist with any tasks which it believes it can be of help, despite being unable to manipulate objects. SCP-126 prefers to converse with male subjects that exhibit humor and intelligence. SCP-126 expresses a desire to have children, and has conversed with staff on several occasions regarding childcare methodology. SCP-126 has the ability to fluently speak English, French, German, Portuguese, Spanish, and at least three other unknown languages. Dr. ████████ Senior Researcher


So this talk is why you should join a community and I've never used this on keynote before but it's really cool Cuz I can do it from my phone So my name is Amy marriage for those of you who don't know me. I am technically a principal technical marketing manager at red hat specializing in open stack My self-proclaimed title and I was allowed to do it by my boss is I am an open-source evangelist Because I work more upstream than I do downstream I do work with PM and PMM, but Anyone who knows me knows I'm upstream all the time So these are the ways you can reach me. I am IRC On as spots. I'm also in the matrix and that spots with the Z because we also have spot in the community We're two totally different people With different heights and I don't have blue hair so the agenda rolls in communities a Walk-through history, which I think y'all enjoy giving back in communities and Time for a Q&A so we can have Plenty of discussion and I talk kind of fast so we will have plenty of time So first off is the roles in communities and There's roles that are in every community the first is developers which I think everyone can guess on that So a primary role of the developers are coding and bug fixes They may be bug fixes that they did bug fixes that were reported that someone else's did and Then reviewing and testing code and this is really important a lot of people don't test their own code before they get it merged A lot of the gating systems are not as controlling as maybe they should be so as long as everyone's happy They hit a button and it gets merged I work a lot with Zool so what Zool does when we put a patch in for Open stack is it tested against that project and It can give it a verified plus one But then after it gets enough reviews from the cores and the community It goes back through the gates and actually gets tested against the whole entire project We call that workflow and it gets a plus two from the system and then it can get merged But someone's going to write those tests. Otherwise you can still get merged, but it's not being tested against anything collaboration and community engagement Developers need to get out there and talk to the community Collaboration one project works with another project smaller Open source communities and may just be they're working on one thing But fedora sent to us opens to act kubernetes There's lots of different projects and they all have to get worked together in order for a change to happen And it could just be we're making a networking change. This is what's going to happen Are you going to be okay with that? I'm really enjoying this phone thing and Documentation and tutorials even if there is a document team It really helps if the developer documents what they did and what it should do at the very least Because otherwise no one knows what it did they have to go through the code and they're you're starting from scratch and Tutorials, especially if it has an operational point of it You configure it like this and this is why it does it and then operators and users icon I personally consider them part of the community. It's where I started as an operator So they utilize and they test the software. They're the ones who are actually going to use it and They report issues and provide feedback. I Found a bug This is what happened. These is the way to replicate it But providing feedback can also be that is the greatest UI I have ever used I love where you place that button Participating in discussion. How do you know what they need if they don't participate in the discussions? You may think they need feature X and B and you're spending 20 hours a week on feature X Nobody needs feature X. They would like feature Y And when they explain it to you you realize why they want feature Y and then again creating documentation and tutorials because Their use case may be different than what the developer thought of So they're going to write something a little different about why you should use it and if you connect this piece with this piece and you do this Configuration you can make all these great things happen and leadership whether it's something separate or not They fit facilitate the collaboration. Let's have a discussion Even at Vince in IRC We're having our weekly meeting. Let me start the meatbot These are our topics setting And communicating vision I can't even read my own stuff So this could be this is the goal of our project This is why we're doing it. This is why you should use our project Nurturing community growth if your leaders aren't positive inclusive Understanding have empathy for the users and the developers you're not going to grow You're just gonna have a two-person project and Coordination and organization and I kind of mentioned that when I discussed meetings and having topics and an agenda and the meatbot and stuff But it could also be for instance Totally different but Sean Working with Justin to have this event You know, how can we get our communities to work together and conflict resolution and mediation? Well, let's be real. There's a lot of conflict When open source started there wasn't a need for code of conducts Now there is and your leadership are the ones who are going to get it reported Need to discuss it and correct the problems and it may even be that Hey, we realized we just did this in open stack We realized that our code of conduct was outdated. So we all got together. We worked on it And we've got a new code of conduct past the board and legal Because we felt that things were missing from it. So even if you have your governance in place it may need updating and Guiding the technical direction in some projects and for door is a good example. There is a steering committee in place Their job is to decide where things should go technically They may not be the overall leaders of the project But they are the ones who give the vision and make the decisions for the technical aspects of it Open stack is another one. We have a technical committee The board of directors do not make any technical decisions and we'll tell you go talk to the TC So as I mentioned some Roles are in every community so once you get out of those Small teeny tiny two-person committees communities You get more people in and there's more roles and it's not necessarily the same people doing everything Even though even in a larger community that documentation should still be done by the developers and the users But for technical riders you actually have someone who can help you fix your documentation So the document project features and functionality and they're going to clean up what should hopefully already exist from the developers and make it more usable Managing and maintaining project documentation. So this may not be necessarily the documentation on how to Contribute or to use it, but the overall documentation for the project. This is our mission. This is what we want to do Creating developer resources. So again, they take the basics that they say they need and Then help to improve them and make them better and they might come up with totally different things and supporting community engagement Again, you're gonna get there's gonna be a theme here of supporting the community so this could be that They redid the onboarding documentation so that it's good a technical riders could be involved in the social media Infrastructure so now that you're no longer just doing your thing with your merger requests on github You might actually have infrastructure behind it. So system administration and maintenance You're running your own gates. You have to create users on those systems for the developers to do stuff Development and configuration management. So again, they're gonna want to make their life easier. So they're gonna want to use Ansible What else do we use in these days back in the day when you shift Puppet puppets still pretty popular, but mainly they're gonna use either Ansible or hey, it's an open stack. We can't get rid of it Because we have a lot of stuff in it works, so we don't have anyone to contribute again infrastructure Continuous CI and CD For us in open infra we use Zool, which is actually another project under open infra And that's the one where I was telling that it'll test your code your initial code to make sure it passes your project And then that it'll work on the whole entire project So I know github will do some tests for you if you write it But to be honest with you, I don't know of another system I think hopper is doing something similar where you can test against your whole project Scalability and performance optimization our gates are timing wire our gates timing Well, this provider only gave us five systems this week nodes this week to test against We're gonna have to add some more nodes on to another system so that we have the capacity we need in order to do our testing So the largest communities graphic artists. Thank you, ma Sometimes you also just need friends who can help you with your graphic artist problems So some of the things they did the logos and the branding materials Creating user interface and user experience because they have a visual eye You might think that button goes down there and then they take a look at and go Oh, no, you don't want it down there You want to put it here and put it on the left not the right because everyone's used to it being on the left Have you ever clicked on the wrong button when a pop-up comes up because you're so used to it being in one place user experience Designing promotional materials It can be something as simple as the stickers we've all been handed out outside It can be something more detailed One pagers that you put on the counter at Fosdum for people to pick up so they know what you're doing and Provides it providing visual assets for documentation that could be graphics or even this lovely fedora presentation template I didn't make it translators were global Larger projects often have translation teams. So they translate the documentation The localized the user interface translating project communication I don't know if I have it on there reviewing reviewing and editing translations Part of localizing and not even the user interface And I guess I don't have it separate is what pops up as warnings That's one of my first open stack contributions. I actually have Python code in open stack Putting in localization tags So that all the so that if you come up with a warning it is in your language and the explanation of that Warning is in your language Something you might not think about but is very important for a global community community advocates I've been saying every it's kind of everybody's role, but there are often people who just advocate for their communities So community community engagement and support these might be the people who are on your help You know, you've got to help for them and they're the ones who are going to answer Because they're always there and they're always trying to be helpful also a great way to get involved in a community Outreach and promotion your ambassadors They're gonna reach out and say hey, you've got a meet-up coming up Would you like us to speak at it or they're just a point of contact that someone can say We're having a meet-up. I'm looking for someone who can come talk and we'll go. Oh, here's all the ambassadors in your area community building Hold an event Attend a conference have a social Feedback collection and communication User surveys are great for your communities Because that's where you get your feedback a lot of the times from your users and your participants Or it can also be someone just attending an event. Oh, I see you're wearing a so-and-so t-shirt. Oh, yeah I do so-and-so on the committee. Well, I really really like what you're doing. I like this aspect I like that aspect. It's like all right now. I'm gonna take it back to the team and Providing diversity and inclusion promoting and diversity inclusion a lot of times the advocates Are the ones who are going to go out, you know They see someone who's struggling in the community and they want to be the one who is inclusive It's just how we are That we were kind of joking at the table earlier today. I might have a reservation for 10 people at a restaurant I'm what we're walking to the register for the restaurant I see someone kind of just walking by themselves in a strange town because they're at the conference And they don't know anybody it's their first time like hey, you want to come eat with us You know, it's it's just that simple of getting someone involved in a community is just Seeing that they're alone. They're confused and inviting them along Okay, this is kind of fun for me in the beginning if you build it They won't come come on So we we we're talking about diversity inclusion today and When open source kind of started it was all the same people in this case I got my three cavemen and they will come Well, our operators were kind of the same people too But then there were communities so it wasn't just two people in a room on the internet with github We started putting people together So it wasn't just for developers anymore and we have different people So we have a developer a tech writer maybe a user So we started to look different We weren't just those two guys in a room who like have been best friends for five years We're all their entire life and this is important Now if you also notice we still don't have cultural diversity here But at least now we've got some gender diversity going on And where we are today Communities are for everyone And I tried to get as diverse as I could on the people. I think that's all our people. So you still have You know, everyone's working together and this is actually I really like this one also because they're all behind a computer so The are out there working from their houses. They are out there working from the office as some of these may be employed Some of them may be volunteering. I volunteer in a whole lot more communities than I'm actually paid to participate in But there's people of interest and they all bring something different to that community So ways of giving back to communities. Hey, I can talk really fast Performing reviews everyone should be performing reviews and it's a great way to get started in a community Going back to open stack. We have the ability to plus one anybody can plus one anything anyone can minus one anything It's only when you get to more of a leadership role, which we call your cores where you can plus two or minus two people Help grow the community You love your community you invite people to join the community promote diversity inclusion Now anyone who was at the meeting yesterday For the panel noticed it was all white males On cento s's behalf that was a conscious decision. I chose to make I Could have taken that chair. I felt that David. It was the best person to represent us in that case Benny could have been here for Alma. She is not here in attendance But it's important to note that those two projects have female leadership Mentoring because this is the mentoring summit So you can have internal project mentoring, which is kind of what we've been talking about this morning One or more mentoring I kind of mentioned the cohorts this morning Sometimes they work sometimes they don't it depends on the group and how active they're willing to be But even with one-on-one mentoring Sometimes, you know, you're you're paired up with someone you never hear from your mentor or you never hear from your mentee And there's the cohort mentoring Now external mentoring programs Outreachy outreachy is like the most popular Project out there. I think it's one of the best run But it's also nice that they get paid they get paid to be there as a mentee and That gives them the ability to maybe not get that job at the fast-food restaurant and while they're in college and working on things Google summer of code and docs. I don't know if docs is still going on it ran for like a year or two And then I haven't really seen it But that was a Google sponsored internship and again open-source projects You didn't have to be a Google project for it and questions and answers So I just wanted to point something out Google summer of code is very code centric. They will not accept UX. I guess they have a special program for docs But outreachy what you can do community advocacy you can do UX all the roles that you went through are eligible for outreachy So it's one of the point that out. Yeah I'm Shaza. I'm a student at UCC University of Kirk And my question would be like I'm not sure if this mentioned throughout the last two days or not but would there be any direct connection between Fedora and universities either in America or in India or in Europe Middle East any of this I can answer so in Bruno a red hat has a long-term relationship with the Bruno University of Technology where a Lot of interns come as students And many of them work not on the internal red hat stuff. They do work on Upstream projects Contribute to the projects or contribute these projects to Fedora. So it's kind of covering there So at least in Bruno, and I think it's also Boston University That's been involved in the same or similar program Yeah, that's that's how we already have in place for Fedora contributions And not these programs these programs they unfortunately Tied to specific universities and that's usually how it's run around the world Because it's collaboration with specific faculties or professors in the particular areas Now outreachy is not tied to any particular college I do not think the Google summer of projects are tied necessarily even to you have to be a university student Open infra is tied to a few different universities in the United States But we are open to other Colleges who want to contact the open info foundation To do they're going to be more open staff cottage containers, you know our projects versus Fedora But I think if you contacted foundations or maybe Linux foundation as well so at more more of a foundational level or Board level type of you know, hey, I'm from this university. This is my professor. We're kind of interested You know, you might be able to make it more of more informal formal So it may not be paid But they might be able to work with the university in order to have an internship project Yeah, I'm actually an internet red hat and I could say that this is you know, the relations between universities and companies does exist You know during these providing these internships and things But I would say like from the university. I'm in right now considered one of the largest universities in Ireland and It was unfortunate that I didn't know anything about open source projects before I start my internship in red hat and I can see how amazing it is, you know, throughout my internship and throughout this event But you know the idea that we we're not, you know Open to any of this in the university either from the academic perspective or from the events perspective And so like my career is more is like would there be any in the future, you know More like Fedora events that holds in universities to introduce students to these Projects and you know contribution to open source that these students who's looking for experiences Can't contribute these because me as a student I'm looking for experience and I always try to fill my time in the summertime, you know Christmas time to do You know any any and some sort of things that I can fill my time with that will benefit me on my CV and experience So I think lots of students would be interested not just technical courses But also non-technical courses would be interested in contribution to Fedora So if this can be made in the future, it would be amazing. I'm a little worried that in your coursework You never heard of open source And I was gonna point to you anyways Mike So there are developer advocates that work at the foundation open intro foundation that I know reaches out And I will talk with her after this event when I get back on US soil Goodbye. Yeah Maybe just in response. So I work for the Rochester Institute of Technology. So University We're very lucky to have a long history of open source. So we have an academic minor and open source where students can take a Series of five undergraduate courses and they're multidisciplinary too. So it's not just focus on development But you know, you can be a business student talking about open source businesses and stuff like that You know graciously a lot of our history actually stems with our original partnership with red hat that You know for many many years Donated funding to our university and allowed us to have this very rich and vibrant student group That you know, I was a part of when I was young Justin Florey Was a part of and you know, I think was was a great way of us interacting with Open source projects. So with regards to your question I've noticed being in working in academia for the last three years. There is a large disparity between universities where some have, you know for Probably mostly through like just chance and luck have been able to get funding and resources To build these programs and they've been really successful and students have loved them And then others simply haven't had the resources wherewithal or you know, there hasn't been this like academic shift Towards open source just yet In Ireland if you're interested in the Irish ecosystem Certainly Trinity College Dublin has a technology transfer office. That's very open source forward So if you're interested I could introduce you to the people over there We've worked with them and they're excellent and there there has been a couple other universities I'll have to dig through my contact list by be happy to connect you with people if you are at least want like the Irish Connection I'd be happy and maybe through that there could be a larger sort of University network on Nebraska which runs the chaos project out of there. That's where it started. So there are universities That are doing things I'm a little disappointed to hear that it was in part of yours. Okay, and let me clarify that I was an animal science major I was pre-vet, so I did not take computer science classes So what your degree in also doesn't determine what you can do in developing open source You know, so Most of the developers, yes, they come out of computer science programs But there's so many different things you can major in and become involved in open source So I had a question on another topic you mentioned in this talk and earlier this morning about mentor cohorts And it's actually a concept. I'm not quite familiar with so I was hoping you could talk about it So because open believe it or not open stack in Cooper 90s communities. We're very close. We talked to each other all the time And One thing these started was like one mentor with three to five mentees And it seemed to work really well for them when they were in their height of development Just for clarity open stack is no longer in a type we're actually have more cores Out there than we've ever had before we're growing like crazy from the users, but we don't have the hype Kubernetes still has the hype though. They have a lot of the same issues that we do so it's always interesting to talk with them But the idea being that if you could put one or two mentors with a cohort There was less pull on the mentor itself So, you know, if they had a meeting or went on PTO your mentees weren't just sitting there trilling their thumbs So there are those advantages But one thing I felt that we had the issue with where remember I mentioned that they wouldn't even introduce themselves So they might be too shy and we didn't get to imposter syndrome earlier today But imposter syndrome can actually prevent you from just replying to the email with hi My name is Amy and I came from the University of Florida and I'm just getting and started and I'm interested in x y and z You wouldn't think imposter syndrome can keep you from doing that a little bit, but it can so you don't have that necessarily that one-on-one Relationship on as a one-on-one mentoring you have to be a little more out there So there are definitely advantages and disadvantages of it So it really depends on your community and the mentors and mentees you have you have to figure out what works for yourself You mentioned that it was something that was done in these communities when they're in their hype Like now that the hype is maybe died off a little bit Is this a less effective technique like is what are the requirements that would make this a successful approach? I wouldn't say it's a less successful technique, but they had more people coming in So they had more demand on the mentors Then they had mentors so it allowed them to share the work and help more people So that's where the advantage is it because you're not taxing a mentor as much because they have a buddy or two and you can mentor 3510 people So you can cover more ground it's kind of like private tutoring versus a classroom. You just balance it out Please ask a question on another topic if I'm digging into this too much I'm curious would the two mentors be sort of of similar like if if I just throw out a random example like if In open stack if it was like networking would both mentors to be expected to be networking experts Or could it be one is more a general open stack? Maybe they work on something else, but they're there to support the other mentor Like are there different models there that might work better than others? So we had Different tracks that you could say you wanted to be mentored in and that you wanted to mentee So unless someone said, you know, all five of us want to be Neutron, which is our networking. We wouldn't necessarily be that specific The idea also is we've run liaisons so that in each of the individual open stack project We had a name of someone we could put people in touch with So kind of like a mini mentor You know so that I've got my getting Garrett set up, you know, I've done some docs. I know I've done this and I'm really interested in networking Oh, well, why don't you talk to Alfredo? Why don't you talk to Alvira? They're on the team. They're great people Let me put you in touch with them because sometimes also You know that community advocacy isn't necessarily that you know all the answers, but you know who to send someone to


Okay, so while this is kind of gone, but I can start talking about my books today, this is already in the late, I'll be playing myself a little bit. I'm really talking about using 3BSD to promote open source development methods. This is largely not a technical talk, it's more about trying to create a cultural change within our company, trying to encourage more open internal software. We have about 2500 engineers who work for the US government in the area of national security space, and all of these engineers are in a wide range of fields, and interestingly though, a vast number of them with no correlation to what field they were trained in write software, which leads to some very interesting results, and has you can probably imagine. Because of that, we've evolved this very insular and cloned stuff for our culture, where developers will be writing code, they'll often be writing code with the things they learned back in 1965, 1970, sort of noting that our average engineer has less than a few years of experience, so we're fairly full of the company, and we're also widely distributed, so they're a key point. Now, in our current culture, we have two main camps. There's a set of classic software engineers, and these really are software engineers. They build big, huge, important things. They build flight control software, they build onboard processing software, and all that sort of thing for satellites, launch vehicles, you name it. They generally get the job done, or rather they help contractors in the Air Force get the job done, but the process is huge, it's expensive, and if you've ever actually tried to do anything in it, it's quite painful. Any change, even fixing a typo in a comment, requires filling out a paperwork. It's incredibly insane. Another camp for people, though, that's the people that write engineering support software. These are the people I was talking about a little bit ago, and they are, as I said, not trained in this. They're writing software to solve today's problem, whatever the heck that is, and unfortunately, that software continues to live on, it grows, it's a giant snowball becoming an avalanche, and there are cases of software that has hundreds of thousands of lines of code that people are using that's suddenly become a product in some cases, we're shipping it out to people, and yet the processes they're using are very old. Maybe writing is what they're writing in APL, programming language, where if someone else can read your code you're doing it wrong, or as I say here, inside, they put in this provision control as the ones who have a file server somewhere, and then they have a whiteboard where they log files, so they don't see the things we all take for granted. In many cases they don't know how they exist, they only know about the previous culture, and they're like, I want nothing to do with that, and rightly so. So the problem is obviously, some of the bigger ones are, they've got their own code, they're hiding it from other people, they're kind of afraid to let it out for many reasons, and for instance, they think it's ugly, they're probably right, they think it's ugly, so that's a problem. There are also cases where they're afraid people are going to misuse it, that's a very viable, very common belief that somebody else will use it, but these are wrong, and the developer will be blamed. Supposedly it's even happened in a few cases before a little weird declaration. There's also our CAD, we have some Fortran code that's widely used, uses features that deprecated Fortran 77. They've had 30 years, no progress has been made, and many obsolete practices. As I say, no revision control, people don't know when things broke, just they did, they may have met with somebody checking a bug, or maybe because two people did something that caused an interface to change, and didn't adapt. Features often get lost, we've talked to people who are customers of one of the pieces of software externally, and one of their comments to us was that someone just off the cuff was, it'd be really nice to burn the revision control, because sometimes features go in as we ask for them, and then in the next revision they disappear. Probably because somebody didn't manage the locks, the guy who was building it put the feature in, and copied back the server, boom, it's gone. Releases are repeatable. And they waste a phenomenal amount of time and effort to manually doing these locks, manually merging their changes, they didn't really know about the diff. It's kind of crazy. So if we're promoting a project that I'm working on, called Aerosource, it's a promoting open source methods, and we're proposing them as an alternative, and using creepiest eaves, for instance, as an example of what you can achieve with these methods, that you really can build big, huge production systems that are quite capable of doing useful and interesting things without this classic software engineering methodology, and with methods that actually we hope will actually be in less effort than their current and really lack of anything. And it's worth noting that one of the things we push a lot is that open source methods are necessarily low friction in some sense, because developers largely have other things going on, Kirk said at the previous EuroBSD con, that one of the things you have to deal with is that in an open source project is that your project is the last priority of your developers. They've got vacations to go on, they've got jobs, they've got family, all that. Similar down the line comes your project, so you have to be reasonably good at keeping the friction down. We're also hoping that if we do not have people start making their code accessible within the company instead of hiding it from each other, maybe the 6 or 8 or 10 implementations of some pieces of code will converge into one good one instead of 6 or 8 or 10 bad ones. And the fact that we're using open source tools as well helps reduce the objections to cost. There's still the objections of, I don't have time to learn this, et cetera, et cetera, but at least this stuff doesn't cost them anything. And the way we're currently funding it, we have internal funding, so they don't have to pay. We're sort of spinning the concept as enterprise source software. It's exactly like corporate open source software, except it's inside only. There's no, by putting your stuff in our repositories, there's no implication that this is going outside it. In fact, that would be a violation of company practice. To release software outside it has to go through a release process. So it's actually fairly hard for us to convince people that really this will work, but that's the, where we have it's working. So it is worth noting that it's not really using open source software within the enterprise, it's in fact this process of doing open source development just that we draw a line around it and it's based inside the company. But of course enterprise source can become open source software and we hope that in some cases that will happen. That we really will start to produce more open source software in cases where we have pieces of software that are not restricted for apparent reasons of national security or whatever. And of course another key point is that open source software can come in obtainable. And if say it's an abandoned project or we've had one case of a government run project so it's public domain software that doesn't really have an active retainer, we can bring it inside, maybe hopefully we will at some point bring that back out. But things can come in that way as well. So the era search project. Our goal was to promote this enterprise source software to provide developers with good tools and sort of modernize the process. But now we're not trying to bring them up to today. We're going for, you know, we could go with getting them up to the mid-90s, you know, CBS, Wells Subversion and that sort of thing. Distributed version of the tool is probably way beyond them and that sort of thing. So, you know, we're just trying to sort of raise the bar and get people up to the point of sort of the default in open source software in terms of tools and maybe get them a little better than that in practice. You know, if you look at that source point where people openly know how to use the tools, it's pretty obvious they're not really using their testing step. So, to do this, we wanted to implement a source-forge-like thing.  We had to have bug tracking. We needed somewhere for people to maintain a website so people could find their stuff and, you know, find their documentation and all that. Ideally, we needed to be well-integrated and, of course, since we were talking about enterprise source software, it had to be internal access only. Basically, you know, our own source work. You know, also, because of our funding model and because of the package, you know, eventually our funding will go away and we'll have to sort of steal money from other places or start taxing the users and because all the people in our group massively over-subscribed and very inappropriate, then we needed to it needed to be easy to use, operate, maintain, modify, what not, because, you know, we've got to you know, we'll do this fairly quickly. Now, we looked at a number of options. Source-forge, the main software was write-out. It was too expensive, you know, and we certainly weren't going to stand up the ancient pieces junk that they did release five years ago. We actually had done g-forge in the past. We had a g-forge installed, even on the same machine. It was far too much work to do upgrades. And we actually had track, sort of running it in a multi-project mode in about half a day, which was about, well, where as the last g-forge upgrade took a week, you know, that should give you a tip off there as to what's going on. Another one we should have looked at but didn't know about at the time was our retrospective. It's a re-implementation of track in Ruby on Rails. Track is in fact in PHP. By default, sorry, yes, it's not modified much myself.  You know, we already do a lot of VEO, we already had CBS's version stuff, we had a bugzilla server, but there are ways you could tie them together a bit more, but we sort of decided you know, we're not going to do that. Well, there's a difference between in Rusty, between track and the next one. Is that a retrospective? The reason we should have considered a retrospective are the pros of the literature in summary. Track, for instance, has as a wiki, the biggest problem that we've run into is that it has a wiki that if two people were editing, the second person loses their edits when they get submit. There's no dip, there's no nothing, just boom. Retrospective is a result of some people's frustration to be built up with that not getting fixed and with some other patches, such as a patch to make the wiki store itself in the subversion not get fixed. So it's a re-illumination, it's a little less mature in some other areas. But we might have gone with it, had we found it at the time. So I'm not even sure if it's not areas we're necessarily worried about but I don't know that we would have. It's hard to say and problems we perceive with track are perhaps the biggest culture. So there's the stack, so track, subversion, the usual lamp, or in this case, bat. So there's a screenshot you've probably seen the easiest URL I give you is probably varnishcash.org it's not a track project. Actually, one thing we're noting here is this little sidebar on the left shows all the projects that we currently have and that's a little way we add it. Now, so promoting notice stuff. How are we doing this? We've been doing internal and external presentations, talks about open source, talks about open source methods and talks about enterprise source, both inside and outside. Inside, we're directly promoting outside, we're doing development sometimes we'll have people from our company show up in these outside things and also I think it just gives us some credibility and other people are willing to come and listen in that regard. Now, we've also been giving demonstrations of all the tools inside the company and in some cases, we've managed to list portions of our management who have told their projects that if you'd like to keep getting funded, you need to adopt these tools. One of the things to do is we use the previous project as an example to show what can be achieved and also provide examples of working practices because there has been research on how 3BSD works. We've got a number of great presentations and it also gives examples of how you can manage your project and have different indications. One example, next to Trin, we use Robert's how the 3BSD project works and go through and give the talk, it usually takes an hour and a half, two hours or one hour or up. In the case I'm showing here the 20 minute version where he puts multiple slides together. So what are our experiences here with getting people to use the software?  You guys, what you're doing around the Unix system, great move over right away. A number of people do that. A lot of people have been moving their Subversion repositories over and that sort of thing. Also, new projects seem to be interested we're getting a number of startups and that's been going well. People clearly are realizing in parts of the company that this whole group control makes a good idea and maybe they should use it and either of these tools they're going to come and use ours. So that's been good. We've been using it internally using maybe the tools since we've already got this infrastructure here for like the first game. We've been using it for system management tracking our configuration on various machines using the ticketing system to track issues using it on my cluster to track what nodes are broken and that sort of thing. However, we have seen some strong resistance. So there's some objections. It's my code I can decide whether people can see it or not but actually not really standard contracts in the US is a work for hire contract and so really the company owns it and it's up to them to decide how it gets used. It's embarrassingly bad that's sometimes true and I can sort of sympathize with that but if you just hide it, it will never get any better or it's very unlikely to that you have no training and no experience in how to develop modern software. We've actually had this thing that rewriting basic algorithms is a rate of passage where you should write something to parse two parent elements that's for real satellite organs. It's always good to re-implement early 60s technology, early 50s technology or perhaps it's a pointless waste of time. In some cases, it might actually be true if you're talking about some of the old little algorithms and that sort of thing where we're building on top of those but there's no way this prevents that. We're talking about generally upright reasonable people who are not going to go off and cheat when they're given this assignment. It might be good if they founded themselves and that would be a sign that they succeeded but if they need to do this and they're doing it for their education their adults, they have security policies and whatnot so probably you can trust and implement it themselves. Another objection is only I can maintain this code. In some cases that's probably true but that's more because it's a big pile of spaghetti or it's hand rolled FGF line in get C and re-hoc for everybody and but your coworkers generally in this case aren't all that aren't stupid our goal is I didn't really talk about it back in the beginning one of the things is that one guy I know is giving a talk on our company and likes to say we've got to be the smartest people in the room when we walk in with a contractor in the Air Force because we're the ones who are tasked and on track so we do a lot of different types of people so it may be true that the code only has one maintainer now but hopefully we can fix that I think a bus pack or one is generally bad only I can use it correctly as it comes back to this case of people saying if I let people have the code they might fill out and compile it and run it and then they might misinterpret the results and I could yell at it another one is people might submit changes and I'd have to work on it I'd have to improve it this happens I'm continuously clever as different people express that and I'm like isn't that a great problem to have surely we can find funding to ensure that you can keep up with this wouldn't it be great if there were 20 people contributing to your project to make it better apparently not not for some people so some projects in Aerosource Aerosource itself isn't back in Aerosource it's the main project what sort of redirects to a track instance and we keep all of our management scripts and everything in there working the title forms in so when you request an account it goes and creates a ticket for it not right now it just sends an email and we do it you know Aerosource which is our internal ports collection I'll talk a bit more about that later Volant is an internal system for taking telemetry streams from launch vehicles as they pass over different receiving stations on their way out to orbit they'll take off from the Cape flyover of Sunshine Island another island out in the Indian Ocean and they pass between these tracking stations they're received by multiple antennas there's jitter strange designed to sit in where things are time stamped after they receive time or not on the vehicle but after they go through a long complicated network we're very able to look at it and so you've got to stitch all of this back together there may be compression and expansion of things things are lost through the plasma flare so this is tools to do that fellowship is our cluster we keep a lot of things in there Firewatch is a center web project we build tools with different little modes out in the in Southern California to just hack fires and provide alerts when there's a possible fire condition SOAP is probably our biggest success thus far it's a project that we actually ship out as a product it's a tool for viewing satellite orbits doing analysis on them doing parameter studies and other things and we're just getting started there so, era sort of maintenance one of the big things is we eat our own nod to it because I said all of our stuff is in there we do all these all management there and the front page of our project and our main presence is in fact just another instance of a project we've made pretty much basic pre-PSD mostly standard ports plus some special local use ports we're modifying panel because our corporate LDF scheme is not right things like that we also do backups so we can sort it to that sort of thing so arrow reports it's aerospace specific ports we're using a a set of tricks that Scott Ketzel posted when we create an arrow directory inside it's essentially a miniature of course 3 with the normal 2 level hierarchy and then we've got a set of tools we've got a confusing we named for example APT which is the aerospace ports tool it wraps a port snap and subversion so it keeps it up to date copy uses a nice feature column and add it for me to allow you to create the index only having to run the M.A. described in the subtree instead of doing the whole 16,000 ports it works very well it's also an incubator for external ports the replacement root specific ports started there because I needed one and I knew the other one was going to die eventually because I had a lot of people kill it so that was the start here's the tool I'm afraid we'll have to stop your jokes okay I'm on the conclusion page so we are attracting customers it's doing pretty well open source methods are attracting developers and we're getting traction there in the future we want to do more storey sort of things improve automation etc etc there we are thank you