 Hi everyone, so thank you all for being here. I'm Razvan, Razvan D'Aconesco, and the Queen Tengen for the Unicraft Project. And my talk is going to be the journey of the Unicraft Project from a small project to what I would call a maturing project, maybe not yet mature, and how we ended up there. The aim is to be, is aim to give you this story to show you a lesson that we learned along the way in the hopes that you would be able to use them for the project that you are part of. So kind of growing them to, let's say as I said, a maturing project. As I'm a fairly technical guy, even I'm doing community management, I have things, let's say engineering structure. So I'm going to have three planes, people, resources, and process I will talk about. And then Indian, I'm going to focus on three takeaways, lesson learned, difficulties, and challenges ahead. For starters about Unicraft, maybe some of you know, some of you may not know, Unicraft is a Unicernel, we actually call it a Unicernel SDK, software development kit, meaning you are able to tie in different pieces to create a unique Unicernel image. The keyword for Unicraft is specialization, meaning that you would be able to select given components that you typically have in an operating system and application, select those components, and carefully tune them towards your use case. This gives you three to four prime benefits. The most important one is efficiency, you're going to waste less memory, so memory footprint is going to be reduced, because you're only going to select the required pieces. Imagine you're going to build an NGINX application, you're going to require a networking stack. If you're however going to be the database application, you're not going to require an NGINX stack, you're just going to require some standard library and some fall system. So that's the prime benefit, only carefully tailoring the required bits to your application. The other one is security, because this one kind of compared to containers, runs in a virtual machine. The keyword here is you want to use VM-based isolation. And the third one is performance. How do we do that? When we select those libraries, so everything is written from scratch, it's basically a set of micro-libraries that form the DOS features. You select them, and then you are able to finely tune different parameters, let's say memory types of schedule or type of memory allocator for your need. So you get your application, you then find your need, and then you create an image. Also because everything runs in a single privileged domain, you may know of kernel mode, everything is then faster, you don't have the switches, use kernel mode that you have in Article OS. And this is kind of the journey, so this is the years of the project. I've actually been involved in the project since 2019. So it started, mostly it started here in November 2017. As I said, it started as a research project. So this was a paper, I'm also an academic, so I'm also part of the InstaPolitica Bucharest. I wasn't part of this paper. This was a paper that proved you can have fast VMs as you have containers. This was work initially done on the Zen hypervisor and proved this. Hey, you can have VMs with the same, let's say performance benefits and boot benefits as containers. Then the first commit game came about at some point. This was using GitLab for some time. Then there was a move to GitHub. Then we had another paper. This was awarded the best paper award at Eurosis, a top conference in 2021. We finally had the move to Discord, kind of growing the community. And eight months ago, we are part of a startup. So there was a seed funding for the kind of, let's say, the startup base, the commercial version of the project. So this storyline is going to be the skeleton of this journey I'm going to give you, this presentation. This is an evolution of the project. So I did three lanes two years ago, let's say eight months ago and today. So this is the number of stars. We are close to reaching 1.5, 1.5k stars. We have quite a bunch of Discord users. I'm going to tell you about how we got to that point. We are now in the process of doing the zero-certain release. It was supposed to be two days ago, but we are now doing some updates to it. And the number of commits, the number of lines of code added are fairly consistent. The project itself is maturing, so it's expected that there are going to be more, let's say, updates and maybe more deletions than actual lines added, but it's still going over there. So this is kind of our experience in growing the project from a small project to this medium-sized project. This is hopefully something that you can use for your own experience in getting to a project like that. This is kind of the evolution of the number of stars. This is today we are at 1,364 stars. How does the community look like? I'm going to give you an overview before we go into the actual items. So there are about 40 active contributors. 10 of them are core contributors. They are also part of the Unicraft Company. We have then about 10 experienced contributors, some that have two to three years experience in the project and are actively contributing and maintaining and doing reviews. And 20 contributors that are kind of maturing also in the project. So we have these three layers. And the key of that is also because of my involvement in University of Policab, Bucharest is quite a bunch of them are students. So I think about 75%, three quarters, that was I was aiming for. Our students at UPB, we have some collaborations with AH and University of Manchester, TU Austin and others. And there are also some partner companies and interesting partners that are part of the community. We're trying to enlarge that. And there's the level of infrequent contributors. If you go into any sort of talk, I was just a part of a talk of Don Foster. You're going to see that there is this level of infrequent contributors that we have. And we are trying to enlarge that number as well. Okay, that being said, kind of given this overview of the Unicraft project and the way the community works. Let me show you things that we've done on these three pillars of we had people, resources and processes. And each of these three pillars is out of three pillars. So it's kind of once again, engineering structure. So I'm going to talk about recruiting, engagement and belonging. I think these are kind of key items for getting people as humans as Don mentioned as part of your community. So for recruiting, what we've been doing is most of the of the new recruits, let's call them are part of the university. So we are very, very engaged in universities. We are doing events. I'm mentoring a lot of students in my academic position to get to the project. Something very relevant here is that we are using their academic career. So they have a bachelor thesis, typically after three or four years, then they have a master thesis for the two years. And well, if they also pursue a PhD, they can continue being part of the university and part of this project. And what I've been doing is I've been mentoring second year students such that we can have them for three years of bachelor studies and then two extra years of master studies, giving you a five years plan. And ideally, then they would be there. So my first, let's say, generation of mentees are now graduating the fourth year and they're going to be involved in the community. One of them is going to join the company. The other one is going to be a master student and be continuously involved. The other thing is Google Summer of Code. This year we are, it's the second year we are part of Google Summer of Code. We have now five projects, five students. Last year we had three students out of the three students last year to are actively involved. One of them is actually very actively involved, Maria. And she's now also gaining a maintainership role. And we now have five new students on different layers. We are also aiming to go for Linux Foundation projects, Outreach and the others. And another way of recruiting is of course through the company, through Unicraft GmbH, kind of getting new people, experienced people that work both on, let's say, the commercial side of things and the open source side. And of course industry partners, we are both in the open source side. We just had the talk with the company that's interested in Zen and Zen support and there was now part of a talk with safety. It's part of that and some other companies, potential clients, we try to get to draw them to the community. Then the other, I think recruiting is one thing, but the most important one is engagement. How do you get people wants to contribute and then to be continuously contributing? So for that, what's very relevant is to kind of to keep them challenged. Challenging means you have to have some sort of personal tracks and we have a lot of items and we allocate people. Hey, you can work on this based also on their technical level and their, their desire. I want to work on it. I think this is interesting. So there is Sergio's working on bootloader. There is Dragosh is working on minimizing and pie support. We're looking at synchronization. Maria is working on security. Tella is working on application compatibility support. So everyone has their own track that they work on and they also get reviewed tasks. So any sort of item that keeps them as part of the community and also keeps them engaged. We also would do, we do a healthy level of mentoring. We start early and we have weekly time of times one to one discussions. We have, we have with them making sure they make progress. He had any sort of question. So kind of keeping a close knit community and making sure that each mentor and mentee are well connected. There are periodic meetings that happen per track. So actually I'm part, I think of 10, 12 meetings per per month for the community with different topics. Ensuring that everything is going well and mentors and mentees are coming in properly. And also there is a level that we try to increase of ownership. So kind of empowering people with new tasks that can be technical tasks that can be community events or any sort of community leadership such as release management, CICD manager, PR manager and all those roles kind of growing people in to keep them engaged. I think this is kind of the most important part here. It's, it's fairly easy to get some people to do something, but to keep them continuously engaged. This requires some extra extra juice and these are items that we've been using so far and for belonging. So being part of the community, we have different items up until some time ago. We organized weekly hackathons. We gathered in university during Saturdays close to each week and work on different items. Then we kind of evolved. We now do one monthly hackathon. It's thematic because it was kind of too often every week. So we do that together in university. We also keep it online so people can join. It's going to be mostly for people in UPB in Bucharest for us, but anyone from online can join. We have then some sync calls. We purchase pizza and everything. Starting from last year, we are doing a community gathering. We actually get everyone from the community in the mountains. There are people from Germany who fly there, France, the UK. We're trying to get it bigger this year. And in October this year, we're going to have this community gathering to get everyone there swag or public appreciation. So everyone that's contributing has kind of their name attached to it. Every release has the contributors name on it. Hey, we did this. Thank you so much for that. This person did this. These are the fixes, reviews and everything. Social events. We kind of have dinner outs or meetings or anything like that. And continuous support and mentors. As I said, there are weekly talks. There are discussions, private discussions one-on-ones just to make sure that everyone knows we are part of the same group of people. The other item is resources. And I think this is something that I didn't see that much discussed. Most people are focused on processing on people. Sorry. But these are very relevant, especially the money part. So I'm talking about services. You want to use something to, well, ensure your work is done. You want to get money for contributors, for mentees, for employees. And you need infrastructure to run your code, infrastructure to deploy, to test, to make sure everything is working properly. So for services, this is kind of the easy part, because for this, we can use GitHub, Discord, any sort of service out there. And it's typically free or has some sort of open source variant that you can use. Using Google Drive, using HackMD for a lot of notes. If you're not using HackMD, I suggest you use it. It's a very good tool to have collaborative editing. It's fun for that. And of course, we have the kind of now with the seed funding and the backing of a company that can provide services such as the CACD system and all the others are there. For money, well, you need money for several things. You want to organize events. You want to get pizza. You want to get some items. You want to get traveling. And maybe we want to have scholarship, right? So how do we do that? Well, we have some university funding. Also, this is part of some collaborations with companies, but also because in university, we are fairly supportive of open source work. And everything that deals with open source can get some funding. So there's quite a bunch of that that we can give for events, for scholarships, for workshops. We have several people that benefit from that or events that we can do. The company itself provides money, one for employees and then for other meetings. If we want to travel for a conference such as this one to connect with others, that's happening. And yeah, Google Summer of Code. So any sort of events, we are now, we are now, we applied for a Linux foundation. This is CNCF mentorship. I don't know what the extents for. We're looking for outreach as well. So any sort of program that provides money for projects, we're going to, we are part of that. And this gets kind of a nice amount for people, for students to work during the summer. The infrastructure is provided by the university. So in UPB, we have once again, very supportive open source, virtual machines, CICD system. We have some Kubernetes integration. This happens over there, test stations. We have stations that are now using ARM, that tests Zen, test Hyper-V. No, no. I know it's all Hyper-V, VMware, all the platforms that we're using. We benefit from university. And also Unicrub because of the company, it provides you the required bits and pieces, gives the infrastructure that we need. The other part is the process. This is something that we're going to see as part of my being here at the open source leadership summit. This is a lot of items that people talk about. What I want to focus on here is the actual realistic practical bits that we did. Because in theory, it sounds good, have better documentation, attract users, make sure you have time for them, make sure they are challenged. But it sounds good in theory. It seems easy to do, but it's a great distance from saying something to actually being able to do it. So let me just go through the item that we did for code management, community management, and raising awareness and see maybe it's something that you can also use for your projects. For code management, we've been using anything that GitHub related all the items out there. So these are kind of obvious items. CACD is very important. And for us, it's very different because we have to build, run different items with different compiler versions. It's kind of very complicated. The CAC system itself is pretty flawed. We've been using concourse and it's shaky. We're looking for tecton or some other solution. So we're going to see how that goes. Labels, teams, there's a governance repo that we're using, but only to the minimum. We don't want to add any sort of layer that makes things difficult for the community to work on. We've now been using a roadmap and each item in the roadmap has two, let's say, owners. A project manager and the tech lead. The project owner is responsible making sure things are happening and the project and the tech lead provides all the kind of the technical muscle to ensure this gets done. I'm feeling project owner role for a bunch of projects and the kind of the actual smart and hardworking people in the community, not myself, are doing the tech leading. A lot of, well, verification validations and something that's very relevant here. And I would advise everyone to do this up until three, four, three years ago, I think releases were once every year. And it kind of happened. Let's do the release and you bump stuff in code quality wasn't that great. And it also kind of step it was a lot of time between releases. And then I kind of come with the idea, let's do it every two months. And we've been doing, I think five or six releases once every two months. And what we are now doing is one once every three months, it was very difficult once every two months was put a lot of pressure on people. Three months is more livable. But if I could just give you the example of the zero dot 13 release two weeks ago, we had, let's say, I'm not sure three PRs out of the plan once. And for two weeks, we now have maybe merged 50 PRs. So releases do work deadlines work. You ready release schedule and things will happen on the committee management side. We have a lot of meetings, maybe too many meetings, but we try to make sure that each track has the support required people are communicating. They are on the same page. And it makes sense once you have live discussion to make progress. So we do that. We do use discord for that. There are a lot of challenges if you're going to enter my if you're going to enter on discord. Maybe I can just show you a quick, a quick run here. You're going to see there's quite a lot of channels. So there's, there's quite a bit of them that we have here. Each particular item has their own channel. Kind of to organize things neatly. There's a community leadership team. So I'm leading a leadership team. Let's call it that takes care of blog posts. We have a CACD system PR management governance documentation. Each kind of has their own role and takes care of different items. And these have been students that have been upgraded promoted to this item. The track owner. They just meant you. And also there's a continuous kind of feedback loop making sure that people are making progress. And also they are challenged. It's too difficult. Let's let's go down. If it's, if you're now if completing it, let's look for something else. So kind of continuously adjusting what you're working on with your current skill level and expectation and time. And for awareness, the, I think the most important items for us are hackathons. So we've been doing hackathons. There's actually hackathon happening right now. No, no, it's not right now because in Europe it's, it's very late. There's a hackathon that is what's happening 10, 10, 10 hours ago, and it's going to happen 10 hours from now in portal. There's actually going to adjust up to look at there's going to be another one here in Vancouver on the 23rd and 24th of September. So we're organizing we contact at universities. Hi, Joel, speaking of the devil and the 23rd and 24th of September, Joel is our host for the hackathon in in Vancouver in September. So we've been counting our host and our most gracious and helpful to for these hackathons and these give us a lot of, let's say visibility and getting people in there. There's a new employee that we kind of advertise unique craft during a hackathon. And there are some other people that are not involved in community because they took part in this hackathon. We just travel abroad. And we do take it's not kind of the I'm not sure marketing it we are actually doing technical stuff. We are doing PRs. We are doing open source work for today's and we get we're getting people in we had. So there's now in Porto. We had one in Amsterdam. We had one in in Athens in five weeks time 29th of March and it was in in Athens. He left the 10th of May is now in Porto and in between it was Amsterdam. Also, when these are this is with the help of University. So Joel is from University of British Columbia. We have these contacts and we are able to organize this. This also gives us the privilege to advertise when you to kind of create this network at universities. And then we advertise Google Summer of Code. We already pay people. Hey, Unicraft is out there. Have your students apply. And yeah, you get kind of this broad exposure to students and technical young technical people that can can also not not only see what Unicraft is about, but maybe make their first or beginning contributions to open source projects. They were able to get about, I think, close to 50 PRs from the hackathon in Athens because they're out of people. And they made they made it to upstream, which is pretty cool. The other one is, of course, conferences workshops, Google Summer of Code. Every time there's some sort of Google Summer of Code presentation, I'm going to be part of it. There's a plan to have a Google Google Summer of Code Mentor Summit in October this year, some somewhere in California if I recall. I'm probably going to be there as well. We'll see about about my time, but that should happen. Classical blog posts. This is also very important. I'm in university and when I teach, I have only one logo on my laptop. It's Unicraft. So basically all the people students know I'm teaching operating systems and everyone knows I'm doing Unicraft and they come. They now come to me. Hey, I want to work on this project. I think it's pretty cool what they have to do, right? So I'm also doing some, let's say, recruiting of mentees, but it's also that people know about this and they want to, hey, I want to work on that. It seems pretty cool. The community is building and it works. So having people that are involved in university and are able to have some technical background to get people on board is very important. This is what we are doing also in collaboration with, with her and some other universities and something that we've been doing for maybe three months ago. It started, we were part of FOSDEM in Brussels. And after that we said, we had the idea, we had a lot of Unicolonial and LiboS related projects. behind me now there's our professor in operating system Octavian Purdilla had done something that's called Linux kernel library and there are some other Unicolonial projects out there. Mirage OS, Hermitax, what else, Unicolonial Linux. So we are now doing a Unicolonial Alliance group. We finally decided tonight we have periodic meetings. We're going to do presentation. We want to advertise and to have this consortium of Unicolonial projects to better advertise and raise the awareness of Unicolonials as a viable solution for different use cases that may be education research or well ideally also commercial. So this is something that we are now doing beyond the lookout for hearing more about Unicolonials and Unicraft with this. So as some takeaways from our experience from our journey, once again, our journey is from a small research focus project to one that's now maturing so medium sized project. It's, I think that it's a very important item to consider because people are, you see all the presentations of open source and you see people talking about kind of larger projects how do you organize them. But I think this kind of this adolescence phase where you go from a very small project to some once again a maturing one. This is also very relevant. This kind of gives you the foundation on top of which you build the your actual project. So these are difficulties that we faced. Maybe we are currently also facing. I added some of them. One of the most important one is that it's very difficult to get people to do reviews in time. That's why that's why releases happen. Everyone between coding and reviewing will always use choose coding. Yeah, I want to code. I want to do some pull request. I want to fix that feature. I don't need to spend time reviewing other other person's work. This is where it is coming. It's a constant issue. I'm pinging people constantly. Hey, please review this. We have a healthy number of reviewers and also with the release schedule that helps. But it's it's it's a difficulty. The other one, at least for new crafters, we have multi-package of multiple compilers. It's ceiling DCC different version. That doesn't work. That works there. It doesn't work for VMware. Maybe it works for for Zen. So having this diversity of environments is a problem. The other one is the CCD, which is should be very important, but also in conjunction with the diverse ecosystem makes it very difficult. And we are working towards improving that. And this is also it's it's something that we are struggling a bit with. We think this is the way we need to have actually out of newcomers, but they tend to overwhelm the experienced people and you need to have some time to properly guide them. I'm kind of doing this balancing act of getting experienced people and getting newcomers. We are, we are okay with it. We're trying to grow new people and experience role and also try to experience people just to be able to properly handle newcomers. But this is something that's always going to be the case. It's not going to be like I'm going. I have 10 experienced people and zero newcomers. It's always going to be unbalanced on the on the maintenance side, but it's something you have to deal with. And also the typical one you make decisions. Yeah, this has to happen, but then decision making to action making huge difference. It's easy to say it needs to be done is very difficult to actually do it. So this requires time effort and resources and kind of constant nagging constant things is happening. Challenge is ahead. I told you about the code review one. So this is the maintainer time. You do want to have maintainers do the code, the coding, but you need to have some review time for them. That needs to be balanced. We have poor issue and period time. So maybe there are some PRs for one year ago that haven't yet been merged. So this is a challenge that we need to address to see how we can actually speed up the rate in which PRs are merged and issue solved. The obvious one growing and recruiting experienced people. You need them to kind of get get the offloader from the maintainers. Building a building. This is in conjunction with governance model building a more well stabilized the well defined community hierarchy. Currently it's pretty informal. I think that this is something we typically say we are not yet there. So this is a learning process. So as part of a project we are now learning when it's going to be the time and how the community hierarchy is going to look like. It's not yet the time because things are pretty informal, but it seems we are headed that way. Yeah, so there's also always a balance between code quality and fast merging. You know, there's they may have heard of the topic of optimistic merging. I tend to favor that most of the maintainers don't tend to favor that so there is a bit of a conflict there but we're kind of coming to to some sort of arrangement but there's always the idea that you we are very slowly merging because of because of focus on code quality. So we want to balance that out as well. And this is kind of I think it's going to be forever you want things to be better documented and more easily usable just want people to click a button and that works. And finally, this is I think is the most important part here. What I think is items that we learn to the process that can be transferred to other projects. Very important is connected to universities and track students. I know this kind of sounds easy. I know students out there, but it's something that personally because I'm also an academic I feel this must happen and you have a lot of potential there. Of course it requires a lot of, let's say caregiving and nurturing, but it provides a healthy number of potential contributors if handled properly. And because you have and university are very open. I mean, I know Joel here is a great guy but we also talk to some other people and they're close to to his level of greatness in being open to to host us in sending messages to students people are very very open to open source to organizing events to helping around so it's a very nice pool of recruiting talent and getting people to work. We actually have people who get assignments and say, hey, I have an assignment my virtualization class. Can I use this project? Yes, pick up this issue solve it. And that's happening. Those people from to Austin actually their professors and yes, there's the Internet and they end up with that with our project. I can't focus on this in us always be trading. I know there are kind of guidelines and rules do this with that. The keep that I see is you want to iterate you want to do something and then constantly one month, two months, three months, something like that. See, okay, how can improve this. We switched from one year release model to a two month one and then three month one. We are now doing a two weeks feature freeze between the three month one so we are kind of constantly revisiting this how the community should be organized how we do our code analysis how we're going to do the system. It's nothing is going to be set in stone and especially for a growing project. You have to have the, let's say the diversity and the openness to update the way you are doing things. Not fundamentally change it but update it along the way. This is something I'm very fond of communities are building during weekends. So you actually have to put that extra mile and Saturdays are and weekends are great times for hackathons and the different events. People are free. And that's when we actually do the bonding. Right. Well, that's when the belonging happens. So people are afraid they are going to do this and we only got maybe 10 participants when hackathon is it worth it. Yeah, it's worth it. You have 10, you have another 10 you have another 20 keep doing it it's going to it's going to pay off. Right. So, for example, in Amsterdam we had maybe 10 12 people at some point but they managed to do PR is one of them is doing reviews one of them is now an employee of Unicrub GMB age. It works, but you have to keep doing it. You have to kind of to believe that, okay, it's it's not that much. But if you're doing it, it's it's going to pay off. Okay, and everyone has their place. So we have people that I don't know about this very much. You're going to learn. You can do this small thing. There are always small items. There's going on. And finally, this is something I also heard from a presentation from from someone earlier. Be human. It's very important to get people to know you are part of the of the team. You are you are supportive and you're going to assist them with everything that's required. Very, very important if you're going to act like some sort of pop it here and I went to do this just with them to do stuff. It's going to be a nasty relationship. But if you show your and you are really caring for what they are doing for their level experience and making sure they they are happy with that they are doing that that weighs a lot in the in the greater scheme of things. Right. So, that would be from my side. These are kind of key item that we've learned them. Once again, it's for smaller projects aiming to to mature themselves. And I'm going to invite you all to contribute to Unicraft. We are fairly welcoming community vibrant. A lot of people do not doing a lot of work. Everything you're going to see it's it's on GitHub. So if you have if you fancy any of those topics. Be sure to to visit us on GitHub on discord and we can do very nice work together. That would be thank you so much. I think I I I feel the proper amount of time if there are any comments suggestions feedback questions, I would be happy to address them. Okay, if not then thank you again and we keep in touch. Thank you.