Hello and welcome to our FOSDEM panel on free and open source software and hardware. I am for people who know me, you won't be surprised that this is an issue that is very near to my heart. As a patient and lawyer I care deeply about free and open source software and having access to my own medical device and control over but also that we as a public have control over it. So we have assembled a group of awesome experts in this field and I can't wait for for us to have this fantastic conversation. So I'm just going to call on each of you to introduce yourselves. And I'll just do it in the order I see you on in my screen. So Adriana, could you go first. Yeah. Thank you. And just talk about like who you are what you're working on, and just make it like a very brief introduction. Okay, so not just favorite colors and name, but also what I'm working. All right. So hi. Thanks for having me. I'm Adriana I'm running the prototype funds in Germany. It's a funding program for innovative open source software. We're part of the open knowledge foundation and we are 100% financed by the federal ministry for education and research. So it's also public money public code. And with the prototype fund, we're not focusing solely on innovation. We're not a startup fund, but we focus on innovative open source software with, you know, that's in the general interest or the public interest. So we fund projects in the fields of human rights or, you know, for more control of your data, and so on. And that's that's what I do daily, but then you come across so many interesting projects that sometimes you do a little side job as well. So we did one big hackathon last year. It was kind of like an initial response to Corona in Germany, which was called the versus virus where we came up with lots of ideas in the field of technology, how to not solve, but you know, kind of like tackle the corona crisis, a little, a little bit. So I didn't mention my favorite color, but did I mention everything else now. You did a great job but what is your favorite color. It's green. I just discussed that I shouldn't have a green background because it's not a good look, but it's my favorite color. Fantastic. All right, Fabio you're up. Yes, hello everyone. So my name is Fabio. I'm leading breathing games, which is a comments where we aim to co create games and devices for respiratory health. And building on that we created the open village, which is a Geneva health forum event to bring together projects that want to create freely reproducible equipment and software for health. And maybe two interesting things I did this, or last year was like, I was able to facilitate or be part of European hackathon against COVID, where we saw that there was a lot of involvement, but maybe we could have brought together better ways to cooperate. And I wrote a report on open science in Canada, and I think we see also this move to try to create more open and more accessible science. Your favorite color. I'd say purple. Excellent. So, Luis. Hola chicos, cómo están? Encantado de estar con todos ustedes en estos días y realmente un placer poder estar con todos. Oh, sorry. My English. My Spanish wasn't playing well here. It's really a pleasure being with you guys. I know Karen and Fabio for some years now, and it's great to meeting Adriana. I'm a physician by training and I'm the founder and president of GNU Solidario. This is an NGO focus on social medicine and our main project is a GNU Health, which tries to deliver health and education and social medicine. That's where we put the focus. So we run projects in small clinics to very large hospitals around the world. And if we had to mention something about the COVID last year, Argentina adopted GNU Health as the COVID observatory in some of the provinces. So we are very, very proud to see a libre software running in public administrations, which of course is one of our main goals. And also my favorite color is red. So we have a nice rainbow today. Fantastic. My favorite color is also red. Cool. So okay, so we all touched on COVID, which was of course the first line of conversation of questions that I really wanted to touch on now. Like, you know, we've seen tremendous innovation during this time of COVID. We've seen projects coming together working together. We've seen, you know, folks working to use 3d printing for replacement valves. And we've seen, I think there are over 100 free and open ventilator software projects. What is the role that you see free software and an open hardware playing in the fight against COVID and implications for any future pandemics. How, how, what do you, so we'll start with that and then we'll get to what we think we should do later. So, so how, how is that how, how are things working out now? What are you seeing on the ground? And I think all of you probably have answers to this. So, if anyone wants to go first, just raise your hand. Otherwise, I'll just call on you. Okay. Yes, I can start. I feel like what Libre and free software can teach us is the way people can cooperate together. And I feel we need more social change and a bit less of technological people focusing on really technical solutions. Of course, there was a move and a will for a lot of people to contribute to find solutions. For example, in these European hackathon where 20,000 people coming together for three days. But we're still in a mindset where like, we are in this like startup mode in this competitive mode where there are thousands of projects that come up with little literature review with little validation with little implication of real users. And I feel like, for example, we spoke or you spoke about the respirators. So there are hundreds of projects that are open source, but very few that are really tested within communities, especially in the global south. There are few people that are really involved to make this accessible to everyone, even for people with literacy. So I feel like what we can learn from the software from Linux and so on is really like the way we can bring our resources together to create a few projects that are really impactful rather than multiply them. Louis or Adriana. Yeah, the hackathon in the EU that was EU versus virus. Yeah, exactly. We talked a lot to them, especially about those points of not making it competitive because that, you know, like having a price at the end of a hackathon might be a good idea if you do it's like in the commercial hackathon for like some business model or like any big company is doing a hackathon. But when you want to find solutions against a pandemic. So maybe, you know, you know, really focus or emphasize cooperation and not too much like trying to find the one best project and in Germany the V versus virus. We had 30,000 participants and we made open source. We couldn't force 30,000 people if they do software development over the weekend and the hackathon it must be open source but we told them, hey, do that because that's that makes everything that follows easier. And we had like a follow up program, where we also supported some projects financially, and in order to be part of the follow up program you needed to develop open source software. So we tried to focus on community spirit in software development in the hackathon. And it was amazing how many good ideas came came out of it. I think the toughest part is not coming up with the good idea but then bring it like, you know, make it make it work as fast as you can so it does actually have an impact for the people during the current prices. I think, yeah, it in Germany at least it did show how many good ideas and how, like how powerful the community is, just what you said, you know that they can, they can. It's like a nice thing some people do it can make a real difference during a crisis. If you trust the people and power the people and let them come up with a lot of small scale ideas that that make it at large make a huge difference. I, I fully agree with, with Fabio and, and I think that one of the key issues or the key benefits of of Libre software is independence, right? It makes you independent. It gives you the flexibility that probably when you're talking about commercial vendors you don't have it. We as New Solidario were part with partner with the EU Commission as a civil society for the EU versus virus. And I do agree with Adriana and positive with Fabio to that we're here talking about cooperation. We have to really remove this sort of competitive order that you see in the old commercial world that they are actually and Karen knows me. I'm very, very strict on that issue.   It's like, come on guys, we know which are for many years now. So it's hard to, to, to, we know each other already very well. And, and that independence that I was talking about, I think that that that gives you also sovereignty, right? You, you own the system. And to give you a small example, we were able to add, of course, the next day, WHO gave the ICD-10 code for COVID. We had it in New Health. And we did the contact tracing module for New Health that is actually being run in many countries today. And we didn't really have to ask anybody. It was the community who asked for that, and the community who actually coded. And in just a matter of a couple of days, that was there. That flexibility and that coming together, it's what makes Libre software and Libre hardware, by the way, so important today. And it would be wonderful, wonderful if we are able to go one step further and get that philosophy into some things like pharmaceuticals. You know, we are trapped today by big pharma guys that are doing whatever they want to do and sell it to whoever they want to sell it, the highest price. The Libre software is about community. And if we can have that at the state level and be the universities being empowered and being leading those type of research, we probably wouldn't be as miserable as we are today in this world, right? So I guess independence and ownership and cooperation are probably the three key aspects I would emphasize in the Libre software community. Now, this is the legal and policy dev room. So I apologize that we're going to get in the weeds a tiny bit. I want to talk a tiny bit about licensing and how that plays a role in this, in this discussion. I, I've been excited, of course, to see that during the pandemic, major corporations have moved to, as you say, the ways to look like the good guys and like trying to showing that they are willing to share and act. And it often means that they're choosing licenses like Medtronic, for example, and one of its ventilators chose a license that wasn't a free license, but it was in fact a license that said you can use this for now. Basically, you can use this for the pandemic and not worry about it, but without granting rights freely, which is of course antithetical to free and open source software. And so, you know, how are all of you seeing licensing playing out in these discussions? Are you seeing a difference in your work in terms of how people are approaching, for example, a copy left? Is that a tool that, you know, that is making your work easier in any cases? Or do you find that, you know, a non copy left license, you know, what are you seeing? So Fabio, have you given any thoughts? I'm just going to, if nobody talks, I'm going to just call on you. That's a joy of a moderator. I'm sure I feel there is a bit of increased awareness about the licensing issues in the general public, but still very limited. There is always also this discussion whether like public domain is better than, for example, a peer production license where reciprocity is needed from non for from for profit organizations, for example. But maybe I don't know my colleagues have some more experience with that. Adriana, do you have any thoughts? No, I just remembered that when we asked more or less 40,000 people, so please develop, if you develop software do it open source. They like many came back to us and they're like, okay, but how like what license does that mean?  So I went back to the community that we're also funding with the project fund and I was like, do you have any advice?  And I was like, okay, okay guys, so what do I tell those people? What should they do? And I think the issue is, of course, that there's not one size fits all like one thing is the solution. It's very depends on each case. But my point is, if you encourage people who, you know, to develop open source software in like a medical field, and they do that and they have great ideas but they're not like super experienced. And it's super tough for them to find out how to do this right. And I think that's an important point for outside this expert bubble. There are lots of people struggling with like I would like to do open source software but what does that mean exactly if I do it. Does that mean that you have a conversations about the difference between making something freely licensed and sharing something, possibly on terms that are non free. Does that ever come up, Adriana? Everything came up. It was especially about health data. Like people were, I think that's maybe a little German specific as well because everybody's freaking out about data security. You know, don't don't mess this up. Otherwise you get a deep trouble. And we had lots of projects focusing on streamlining, you know, communication between different health centers in Germany because it's really bad. They kind of fax the data and lots of projects try to make this better, but then they handle very sensitive data and they were just like, well, how do I do this? Not technically, but how do I do licensing or security in this field? And they were just clueless. Luis, I know you have strong views about copy left. How are you seeing that play into the specifically COVID related work? You know, I usually, it's very rare that I would say the word open source. And it's not because I don't like it. I think that I like to stress Libre because it actually brings more probably the significance about it. That doesn't mean that people that use the term open source is not doing Libre software at the end of the day. It's just probably focusing more on the semantics of it and the philosophy behind Libre software. There was a project on one university that they came up with their own license. And it basically was, yes, you can download it, you can see the source code, but you cannot modify it. And that brings us to open science. And I believe that if I have an algorithm where is a bioinformatics or where is the feed or wherever in the medical field, science is based on collaboration or at least it should be. And if I can only download the software and not being able to modify it, then that is not Libre software. It's lacking one of the main key aspects of Libre software, which is I can download it. I'll show a bug because, hey, every single piece of software has a bug. Karen has talked about this many times already on her talks, and it's proportional to the number of lines. Right. So, you know, if this is something on bioinformatics or pharmaceuticals or whatever, the fact that I cannot contribute to it openly. It makes it not Libre anymore. So, especially today that we have very complex pieces of software and people say, yeah, but you can see the source code of it.    But can I contribute to it? And you'll see that the quality or the end quality of that piece of software is proportional to the number of people who's actually working on it and not going in that sense.  It's selfish. I want to cut you off, but of course, we all here are passionate and believe in Libre software, although in English, I like to stick with software freedom as the general term because I think it's like super ambiguous but doesn't matter what we call it right we all agree as long as we're talking about philosophy, right? The legal and policy dev room is one of the few places where we have a really advanced discussion. So like, most of our viewers will know about the reasons for freedom, and really have that discussion already so delve a little deeper into me, like specifically how does how has do you say the word copy left actively when you're promoting new health and how has specifically the mechanism of copy left helped the promulgation of new health to deal with COVID. What I put before, in terms of somebody seeing what WHO gave the very last definitions or coding for COVID, or how can we actually notify the health ministry of a new case or index case on COVID. I would have not possible if I have my software not being copy left, meaning copy left made COVID notification immediately because somebody could get into my software modified and published with the new version. And COVID and copy left made possible also the fact of getting the latest news and research from WHO and integrated into new health that would have not been possible or at least not within the time frame that we wish to make it available for for humanity. That's the importance of copy left. It's freedom. It's, you don't depend on anybody but yourself or your community to actually make a better world. And the, and the contrary also applies. So, Fabio, are you saying anything in particular about licensing issues as relates to, you know, in the respirator space that like looking at the respirator projects, somebody sent me a seen a spreadsheet that catalogs all of them and there are so many of them all at different levels of advancement. And very few of them are copy left and the ones that are copy left are not in a very advanced stage, or maybe maybe they are they weren't in that reflected in that spreadsheet. What do you what do you think about that and could could copy left or other licensing choices better promote free software in the health space. Yes, I feel it's really essential to to say the standard should be should be like copy left licenses, opening the code, enabling people to adapt it to improve it. And I feel it's not only the software that is the focus but also all the equipment and all the infrastructure. If we take one of the interesting studies that was done by by winter. He did a comparison of open sourcing MRI. So, medical imaging scanners in Germany. And he said if we if like the suppliers of MRI in Germany would share their their designs their source code. Germany could spare at least 200 million euro per year. So I think it's the license is a is an important point, but we must also see that if we open like the designs and the source code of what we are doing. We can reduce the cost we can reinvest this cost in other like areas, and we can also make the infrastructure, the equipment, the software for countries. I think either it's me or Fabio's network. Yeah, I was moving. I was shaking my head just to see if it was me. This is the challenges of panels in during a remote the remote pandemic age. But we can. Yeah, he'll be back and he made some great points. I wonder, like, and, and, and Fabio touched on this in some of his remarks, but, but the, there's been a lot of coverage of how the deployment of medical solutions is really uneven amongst different populations, both globally and also also within geographic areas across socioeconomic lines. Free software has always had the promise of democratizing technology. It's the philosophy behind it is about giving everybody access to their source code and being able to customize their, their software for them to be able to be provided with opportunities that they wouldn't ordinarily, but often we see that that that this this doesn't play out always in the real world. I'm wondering if, if you've either of you have seen examples of free and open source software providing opportunities specifically during the COVID crisis that it wouldn't have otherwise, or areas where free software hasn't filled the role that you would have hoped that it would in order to democratize access to healthcare. Adriana, do you want to start? I'm sorry to pick on you first twice now. Yeah, that's fine. I just browse through my mind if during the last year, I can come up with one specific example. I just thought that in the end it's still always about access so there were many maker spaces in Germany that came up with, you know, 3D printing masks or whatever and distributing that. But then still you need to be kind of that community a part of that kind of community you need to have contact with those people or you need to be friends or friends. And that's difficult, I think, because sometimes we might, we maybe forget that the tech community is still kind of small, small, like not many people interact with hacker spaces, at least in Germany. Like my friends don't know them, and the parents of my friends don't know them. So I think there is a promise of distributing access to technology or distributing goods with technology more evenly in free software, but it might be a little more theoretical than we wish it is. Yeah. Yeah, and probably also, you know, it's how, how the state, how the public administration, how the legislators are going to actually join us in this endeavor. Because at the end of the day, and when I put the case of Argentina, that that was the government itself who pick up the health, but it's it's I would say that it's, it's almost. Something strange, because most of the time they come with some sort of very strong legislation. When you talk about respirators, you know, it's not very easy to actually go through all, you know, the quality assessment or whatever if you are going in the open source or community. It's just not. And many times you have to put a lot of money up front to go through the process of actually being chosen and the reality is most of most of us don't have it. But if we have clear state or government legislation that say we are going to favor first Libre software projects. Like in the case of Argentina or like in the case of Jamaica, or, or look at India, I mean the largest hospital in Asia, over 3000 beds have chosen. And, and if they chose new health. It's probably it's good for the project but it's good for the community itself what is important here is chances are they are going to choose or thank for that come images, and they're going to choose many other free software projects to meet their needs. And, and, and that is done in a public health hospital. And, and that is the importance of it. I think that when when you see the free software foundation Europe, you know, working on this campaign of public money public code, and we really need more of those guys in Europe and chances are in the states and to make sure that our politicians are actually legislate towards that very important key part of making sure that the public administration uses public software and free software is what actually I would say. How do we close the gap, the problem is, or there are so many problems right like, and, and so many of us are working hard on these issues, and there's a gap somewhat some of our projects are quite sophisticated some of our technology is sophisticated and ready, but a lot of it isn't a lot of our, you know, a lot of what we're doing in the health space is somewhat theoretical we know that if we have the ability to collaborate together our software solutions will be better. We know that if we use free software that, ultimately, like, we don't have vendor lock in, we don't have a lot of the bad outcomes that that that plague health care solutions across the world. Not many of our free software solutions are not ready for prime time yet. They're not tested at the same scales already. How do we, how do we convince governments to make policy when most many of the solutions not all of them but many of the solutions we have are not ready turnkey right now. But you bring current you bring a very important point here. When you said many of the projects probably are not ready for prime time. I would say that not a single. Close source project is ready for prime time because they are not secure they are not, they are not private, you know, so at least we might have something that they don't have, which is privacy in health care. How can we, as a society, trust these hospital management systems that you don't know what they are actually doing are they selling our information to the insurance companies we don't know, because when you are prescribing something. The patient is getting the prescription but you don't know what's going behind the scenes on that black box, at least with Libre software, you have the choice to and the chance to see what's actually going on. And, you know, health and privacy, they go so much together that it's, it's, it doesn't fit in my mind how today, we talk so much about encryption and public infrastructure and blah, blah, blah. And at the end of the day, you don't know where you have a keyboard sniffer in your operating system. So you know, it's like the rest of the thing is not ready for prime time because it's close source. It's so hard for me to play devil's advocate on this point, because these are exactly the points that I would make if I were, these are exactly the points I would make. But, but I think that that while that's true and that only free software has the possibility of being secure over time, and all software will have vulnerabilities which makes proprietary software all the more dangerous and damaging. There is the reality that at this point there are proprietary software solutions that have been subject to massive trials where the free and open alternatives have not. And so, how do we engage in that conversation with policymakers to, to, because I've been in, I've sat in that chair and sort of said, think about it logically. Right. And here are some studies we can talk about the honeymoon effect we can talk about basic security principles. But at the end of the day, how, how do we, what do we say to them? How do we close that gap? I mean, the best argument already came up, you know, like privacy and health is like for everybody. Nobody wants to, to share their most private data about your personal health with anybody else who has no permission to see it. But I fear in the end, hospitals make a decision also based on, does I get like, can I make this, set this up quickly and does it run like without any problems, or is it like it's super easy or do my work is just, you know, click two buttons and, and, you know, it's like convenience in the, like for the user, maybe a little more upfront than the privacy, which you don't see, but you see if it's messy and you don't know where to click. I know this is, this is silly, but I think this is a really big point. For me, I feel like you're not interested is recommendation about open science that UNESCO is going to release in November. So one of the points in it is to promote like free and open source software and hardware. So I think this will be helping us like push for this movement in different governments. But I feel the question is also to say or a change of mindset in policymakers and saying, okay, if you if you buy for millions of proprietary licenses every year, you could also invest this money to encourage local communities to improve software that can be used by everyone over the world. And then all countries could materialize resources so that it benefits everyone and not just thinking locally and saying, oh, I want to buy this software license and it's useful for me. So I think the mindset is really, we should see how we can also encourage the development of local skills contributing to global projects. And maybe another element is like there was discussions about hospitals. I think hospitals are focusing on disease management. Maybe there should also be a discussion about how to encourage communities to take ownership about their health. And not just managing disease when they arise and finding technical solutions such as vaccines, but also investing in non medical, non pharmacological solutions in social solutions in art therapy in all approaches that rain forward the people so that's maybe another another panel to organize. Oh, we could I think we four could talk about this topic for hours and hours and hours. So, are you seeing some of you have a very strong act I think all of you have strong experiences with with dealing with policymakers, especially in talking about access to funds to forward this kind of work. There have been several references to public money public code, which is great initiative. And, you know, are you seeing more access to funds. Have you seen pandemic related funds being specifically allocated towards free solutions. And Lewis your, your camera has turned off, which is fine we know you're here now. But if you have the ability to turn it on go ahead. I'm sorry I meant I meant Fabio Fabio your your video. Sorry, Lewis your video is fine. Yeah, but Fabio's voice just came out of nowhere. Coming from the dark side. So who wants to start talking about public funding or other pandemic related funding and how we're seeing that, whether there's access to that for free and open solutions or if there's, if there are challenges there. In my case or in our case, I would say that we, we are very grateful for example here we have in the island of Grand Canary. The, there is a public entity with focus on international solidarity and they are one of our biggest donors, which fits very well on our social medicine program. But other than that is, I would say that is, or at least in general is, it's quite hard to find public money put on, you know, except this particular case that I'm talking about on. And the government of Grand Canaria. It's, it's, it's quite hard. It's quite hard probably because of we were talking before that is, you know, all the lobbies and all the stuff that goes around the public administration just focuses on, on, on, on the big companies or at least that's the way I see it today. Well, in, in Germany. It's complex, but I feel like there's, there's a general push towards funding more open source and the pandemic. And so we speeded that up, or a little, but also, like the big conservative party, Angela Merkel's party, they, they had resolution and public money public code and one of their party meetings. And nobody expected that from the conservatives. So that was like, the whole open source or free software community was like, okay, wow, we didn't expect that from you but here we are. And also what I saw was that the ministry that funds the prototype fund and we're really small, we have 8 million euros for four years, like, about 8 million years. So not much, but they had 1.5 million that they just put into some of the hacker fund project because they said, we need those open source software project now and we just, you know, we have money, we spend it. It was so fast, like for a ministry, it took them three weeks and that everybody was astonished. So what I see though what is pushing way more for free software than the pandemic is the whole discourse around sovereignty digital sovereignty. And that's why people now look at like free software and yeah, for, for everything like covert related. There was a real struggle to make the, the app, like the tracking app the German official tracking app to make that a decentralized free version and not a centralized, proprietary software and it, like the whole community in Germany pushed for that. And they were successful, but it wasn't like super clear from the beginning that that's how we're going to do it the government needed to be convinced that this is the right way to do it. So people can trust it and people actually use it. And I think it does give it a push and there is more money now in the system, but it's not all like thanks, thanks to COVID. Fabio, do you want to. I mean, I know a bit more that situation in Canada. In fact, there is a move like, for example, librarians in universities have been at the forefront of trying to materialize resources, going through this digital transformation. And there is also no a move from the federal government to say we need to make public documentation available. We need to foster like collaboration across ministries across agencies. And then to first do a sort of consultation to create committees and they are going to then define which resources they want to to dedicate to that. So that was a bit of criticism criticism from the community saying, oh, okay, we have this plan for open science, but we don't have a budget. I was taught that first communities should say what the needs are where where where solutions could be found, and then a budget could be allocated to that rain. So hopefully it will evolve in the next year, I think. So I always like to think of free software as a long term issue right like, if we talk about like all of the critical issues that we must work on in our day. If we look at free software it seems it seems more esoteric than some other causes that have immediate impact. But we cannot ignore our long term issues and free software is at the service of every other issue, because every other issue needs to use software in order to resolve it. How are we how what do we what should we learn from our experiences now that will make us ready as a movement for the next pandemic. You've had the last word a few times so you get the first word this time. Now, at the end of the day, we, we have to start thinking on being a community and so far we have been doing a very bad job on that.  I remember the very first days here in Spain people at eight o'clock at night they came out to the wind to the balconies and they were clapping the physicians and they forgot about it.  They were clapping there, not because they love physician but they were saving their backs. And once that happened, they forgot about it and they no longer have that but not just the physician the police, the educators. I think we have to see again that I want to go back to the open source versus Libre or whatever. But the philosophy itself, I think that you can only have a minute or two. I'm sorry to interrupt you. You can do it, but just a few just if we keep on just thinking and saying open source or Libre software without actually helping or thinking about the philosophy of sharing and cooperation, we will not go far enough at all. And you can do that with your children and you can do that with our politicians giving them a Python instead of an iPad. And if we do that, then we'll probably will suffer a little bit at the beginning but at the end we'll have a nicer society. Fabio, what do we need to do long term as a movement to make sure we're ready for the next pandemic. Yeah, I must I don't agree with Luis in regard that people are selfish. I think there is the goodwill, but the economy system is pushing for competition and the accumulation of resources. I think on the long term we really need to say it's not sufficient to bring together people to find solution, but we also need to take time to discuss how we are going to work together. And if, for example, we work for one week together, every day we should give maybe 30 minutes or one hour to say, okay, what what went good today, and how did we do well and what was not working well, and how can we improve. And I feel that way, like the group will learn to become more mature and to work better together to find better ways to share resources to document everything. And I feel that's the key point. So not focusing on the outcome, but really on the process of being together or sharing of maybe confronting different positions and saying, yes, let's let's create first some social belonging and then the technology is just a mean, not the goal. Absolutely. I agree with you on that. Yeah, that would also have been my point actually that the pandemic showed still shows that no, yeah, no man or women in Ireland. So it doesn't really help you if you're doing well and everybody else suffers. If that doesn't do anything for you, you have to take care of yourself and everybody else in order to be well and good. And I think that is a general learning, not just for any tech community, but for everybody to to understand. We're way more interconnected than we thought and we already thought that we're interconnected, but we're way more interconnected and we need to find models that focus way more on cooperation than competition. And also we saw in this pandemic that competition doesn't always mean the best results. Sometimes it means waste of resources, longer time that we need to find a solution. So we need to, yeah, to change our mindset from competition means in the end we have the best as the winner to maybe cooperation means in the end, more people win. And it's better for everyone and better for me individual as well. And I think like, this is a very big thing you know it was easy to say but how do you do that and I think maybe for for tech communities. There's, there's, and everybody's preaching that also as well there's the advice that the more practice you have in working together with people from totally different backgrounds, the easier you can come up with a good solution. When it needs to be very fast like we had nurses working with tech teams and the hackathon, and they had the best idea in the end because they had both experts and they work together but it's not easy like I am not, I'm not a tech person and finding the same language takes time you need to practice to speak the same language and if you only do that in the moment when you already need to work together. It's frustrating. So we need to learn the different languages of everybody so cooperation does really work. I want to thank all three of you. You're doing amazing work. It is beyond a pleasure to be able to sit down with you and have this conversation. I'm sad that we're not in person so we could discuss this more. But I'm also sad that we're not in person so that you can't hear the applause of the audience when we get to the end of this. So thank you so much for joining us and I hope we continue the conversation over the next few months and years. Thank you. Thank you. Thank you. Thank you. Bye bye. See you soon. Bye bye. See you guys. Bye. I'll keep talking about how we're live until we're live. All right, we are live with our Q&A. Thank you so much for joining me again. The questions that got the most upvotes in the chat. All right, well, we'll see how many we can get to you, but let's start with the first one, which is that there's a question that says that we have a lot to bridge the gap for security and privacy and that there are huge digital literacy gaps. Do either of you want to start talking about that? Yeah, okay, I can start maybe. I feel like one huge gap is really to empower people in helping them make decisions together instead of polarizing discussions. And I feel that goes through transforming education. So today we are still in an education model where it's top down where teachers think for the students what they are going to learn and hope. I think there are other models that have been working well, where we take into account people's experience, people's knowledge to create together. And I feel if we start from childhood, encouraging children to learn how to decide, how to learn, how to work together, these will also impact the future. Luis, do you have anything to add? I totally agree with Fabio. Yes, to give you an example in Africa, in the whole continent, there are so many countries where health professionals still don't know the WHO ICD coding for diseases. In the global world, you know, if we cannot train our colleagues in this very basic stuff, how can we share information among our patients? And yeah, education is key here, you know, and that comes back again to public education and public health policies. And I want to stress that we mean education all around and that we're not simply talking about educating kids because digital literacy can be achieved at any age. And, you know, I think, especially when it concerns health, I think that we can do better than simply saying this is a problem we can fix in the future, although we certainly have a good chance of fixing it in the future. I just read an article saying we are thinking that young people know how to use computers, but apparently there are many young people that are just using their phones and they don't know how to write the text online and so on. So I feel like, yeah, people should be aware about how to use technologies, but also about all the ethical and social questions that come with them. Well, I think it segues nicely to the next question, which is, you know, what are your views? The most what are what do you think is the most crucial policy challenge for, you know, for free and open source software and hardware and health care. And, you know, how does that relate to medical device regulations that you have experience with. So, Luis, do you want to start? I think that in terms of LibreSoftware, we've been doing much better in the last years. Many or some countries at least are now embracing LibreSoftware in public health, which is great. You know, we have things like HL7 fire, which is a way of sending messages across different health institutions and devices being fully, fully open. I think that in terms of open or Libre hardware, we are a bit behind. But again, I think that, you know, that is such a huge road to complete in terms of legislation and put clear policies in terms of giving LibreSoftware projects an advantage in terms of being adopted in the public administration in general, and in particular in the public health section. I would say we have to hack the law and be aware that the law is something we create together. It's not something that is right or wrong. I think we can look back at constitutions and see like, for example, in Italy, in other countries, there have been courts deciding and supporting that the multitude prevails over decisions made by representatives. So no, I think we rely a lot and medical professionals rely a lot on regulations that are very strict, that are disempowering us for creating together. And we have to find a way to go around it, maybe saying, okay, if people create their own devices, then we don't need to have this validation of quality that comes from an external authority. Maybe we can encourage the community to take ownership of these questions and decide collectively what they want to do. And then we can support that with participatory research, with creation as research, so with an agile way of doing research that is a bit more adequate today. I think we might have time to hit one more question, which is that one of our audience members commented that from their experience in attending hackathons that it was frustrating that humanitarian and community organizations that could help with the sustainability component of this work just couldn't or didn't join whether they were overwhelmed or there was a lack of common language. How do we bridge that gap and make sure that we get all the parties in the room to create the solutions that we think could be effective in a free and open way?


Hello, my name is Shu and I work on the JavaScript specification as well as the V8 project My name is Leshek and I work as a performance engineer on the V8 VM So Shu, what's new in JavaScript these days? Yeah, a whole bunch of stuff has happened since last year and you might recognize some of the features We're going to talk about today from some of our colleagues 2019 Google IOTalk because language features take a while to be standardized and to be shipped in the browsers The ones we're going to be talking about today have shipped So let's start with the fun stuff Like I said, we're about to we're either shipped or about to ship quite a few syntax features That should make web devs lives easier for this talk We'll be focusing on two features that will make dealing with optional values easier So Leshek, have you ever written code that dealt with configuration? Oh, yeah, definitely like always using a hash map for those things Yeah, so I'm keeping I'm writing this new chat app right something of a strength for Google engineers I made some network parameters configurable Which I keep in this map of configurations called config that you see on the screen But the network configuration is optional because it isn't always set by the user and it has Sub-configurations like the server and the port and maybe those aren't set by the user either Handling that kind of optionality is kind of a pain currently folks do this with logical and like you see on the screen Oh, that's pretty no place Yeah, and for those chains of property accesses were at any point some property in the middle could turn out to be undefined We added this feature called optional chaining Easier to show you on the screen than to talk you through it So the optional chaining feature is the question mark and the dot instead of a plain dot Oh, I see so if net config is undefined Then net config dot server is undefined and dot adder is undefined and so forth Yeah, almost it's a little bit more relaxed than that It's if it's undefined or not and specifically we call the set of things that are undefined or not knowledge So in the in this case if net config is knowledge the whole optional chain is undefined if net config isn't knowledge But net config that server is knowledge Then again, the whole thing is undefined you get the idea if nothing is knowledge Then eventually you get the the whole property the most nested property access and cool That's not easy to read Yeah, I think so too now another common feature while dealing with configurations is default values And sometimes folks use logical or for this like you see on the screen. Oh, yeah, I've definitely read that before Yeah, and it usually works fine, but sometimes it doesn't and is it's really surprising when it doesn't Suppose I add a configuration for enabling compression to the to the server. Do you spot the bug? Oh, yeah, right How'd you actually explicitly disable compression, right? If it's false then false or true is still going to be true Yeah, exactly if enable compression is false false or true like you said is true So what we really want to test here is not something is truthy Which is what logical or tests for but actually if something is absent or present and we already are familiar with that concept That's knowledge so we introduced this new syntax feature called knowledge coalescing which is the two question marks and that does exactly what you Want here for default values it tests for knowledge this on the left hand side If the left hand side is knowledge then it evaluates to the right hand side If the left hand side is not knowledge then the whole thing is undefined So in this case enable compression is false question mark question mark true will still get you false because false is not No or undefined, but if enable compression wasn't present if it's undefined then you get the default value of true That's pretty cool. What can I use it? So you can use both optional chaining and knowledge coalescing in Chrome stable today Now enough talking for me this that that's that was just a taste of the new features You can find more on our website later. We'll show you the link But you know we add all these new syntax features and I'm worried that supporting them all will slow down the parser V8 is known to be fast and I don't want to do anything to make it slower You know what that's a fair concern to have When we shipped ES6 back in 2015, we actually saw a big parsing performance drop This is measured on octane on the code load benchmark and we had this big drop During this implementation phase, but actually nowadays parsing speed doesn't matter as much as you might think Oh really not anymore. I thought parsing was pretty expensive. Well, it's still not cheap But in the past year we've worked a lot to move a lot passing off of the main thread and be able to pass scripts While they're still loading so imagine that Chrome sees a script like this The HTML parser gets up to it It sees the script and then has to pause the HTML parsing has to download the script Pause it execute it and only then can it continue parsing HTML. I know isn't strictly true because of optimizations like preloading No, you're absolutely right This isn't actually the whole truth and the download of the script happens a lot earlier If there's a link preload or if the pre-parser finds the script earlier, and if the download moves Off of the main thread and earlier in time the parser execute can move earlier, too But the thing is the parsing itself can happen on a separate thread as well It's only really the execute that happens happen on the main thread in particular if a script is marked as async You can keep processing the HTML up until the parsing of the async script has actually finished and it needs to execute And we've had support for this basically forever, but it's been very limited We've only been able to concurrently pause once script at a time And we've only been able to do this for async scripts. Yeah, how come it's been so limited honestly just historical technical reasons Which don't really hold anymore So one of the first things that we did was move everything from this dedicated thread into our global threat pool Which meant that they could happen at the same time in parallel another thing that we changed was to have synchronous script Also use this off-thread parsing functionality. I'm kind of confused. You said synchronous scripts But what's the point of parsing? Synchronous scripts in another thread isn't the whole point for non async scripts that they block the main thread Well, that is the point for the execute But for the parsing even though we're parsing on a different thread if the main thread is free That means you can do other things it means that the user can scroll It means that the user can type it means that we can execute other JavaScript like on click handlers So it's actually very useful to be to have this empty space here on the main thread Ah, okay. I see this is a difference between improving interactivity versus just improving the loading time Right, but we can improve loading as well Because the parsing is happening on a separate thread. We can actually move it earlier We can start parsing when the download starts and then as data comes in from the network We can feed it into the parser And then the actual Pass time doesn't matter as much as you might think All that we need is for the parser to be faster than the network Really the main networks are already pretty fast Not always but usually they are fair enough and you know caches are even faster So we can't completely ignore parser performance So we have invested a lot Into improving the parser performance as well the single threaded parser performance starting 2018 We put this big effort in put some of our best engineers on it And we've had actually very good results in improving parser performance just through programming optimization Yeah up and through the right that's the kind of graph I like to see really fascinating stuff The thing I learned quite a bit in just the past five minutes about making parsing and compiling faster and Web app performance in general and you got me thinking about this other big chunk of web app performance, which is memory I was doing this thing the other day with with my chat app And you know, I got it basically working and I was trying to measure the performance of the packets that I was getting from the server I wrote this Little moving average class to compute the latency moving average of Of the packets that I was getting from the web socket You see there that I add a message listener that basically all it does is it accumulates events into the event array And I use that later in this compute function Which I don't show to actually compute the moving average And the way I use that is I have this component that when I start measuring And I want to see the live statistics of the moving average of the latency That I make a new instance of it and then when I stop I null it out because I don't want to keep all the events I accumulated in memory I know that v8 garbage collects memory that can no longer be reachable And as long as the moving average is reachable through the this stop moving average property on the moving average component That the garbage collector cannot collect it, which is why I null it out That makes a lot of sense to me Yeah, and I thought this would work fine. But then what happened was, you know, it's a chat app I kept it open for a while and I opened the memory pane I see every once in a while that a gc happens and it moves, you know, it It collects some memory the memory goes down a little bit But it's pretty clear that the trend is up into the right This is one of those graphs where up into the right is actually bad And what this was basically showing me is that it's a memory leak, right that every gc every time gc happened It wasn't able to collect all the memory So I just kept accumulating more and more memory and eventually if I kept this chat app open for Another day or so My computer will have ran out of memory memory leak But the only collects object that you can actually reach you know that out your moving average field So the garbage collector should be able to reclaim his memory shouldn't that? Yeah, so it's a common mistake, but it's still pretty subtle I'm sure the more seasoned web developer would have spotted it right away So what's going on is that the web socket is holding on to all the event listeners strongly Which means that until they are explicitly removed everything that is reachable via the event listener is also considered reachable And thus not collectable by the garbage collector So you see that use of this dot events dot push Inside the event listener as long as that use is inside there the whole moving average instance Is reachable from within the event listener and thus not garbage collectable So even when I nulled it out in the moving average component It was still considered alive by the garbage collector To deal with this folks often use what's called a disposable pattern where I have a A method that manually removes the event listener called dispose And that's kind of annoying and to use that the way I would do it is before I null it out in the moving average Component that would have to remember to manually call dot dispose What is this c++ you have to manually manage your memory after the whole part of garbage collection Was that you don't have to bother with that sort of stuff? Yeah, exactly and it's so easy to forget it too And this is all because the event listeners can't be garbage collected until you manually remove them So what if there was a way to actually tell the engine? Don't let me keep you from garbage collecting this thing even though it's reachable Then you don't have to remember to manually call dispose or even need the disposable pattern And it turns out there's a new standard feature in javascript that lets you do exactly this Weak refs All right, and before we go into that I have to give a quick disclaimer So weak refs are an advanced feature that's hard to use correctly because garbage collection is unpredictable I'm very different from browser browser and even from Even different from run to run of the same browser because of that unpredictability We didn't add weak refs to the web for many years And you hopefully will never run into a memory leak or a bug that legitimately needs it But on the rare occasion that you actually legitimately needs a weak ref Finally, you can use it And fix your problem at the root. All right back to the main programming So how am I using weak refs here to solve the previous problem? I still have this event listener But now instead of directly registering that event listener function with the socket I wrap it in a weak ref It is the what's called the target of the weak ref And inside the actual event listener I deref the weak ref and I call the function And this kind of indirection basically means that the the function that is actually holding the moving average component alive Via this that events that push is no longer kept from being garbage collected because it is a weakly held reference inside a weak ref Okay, what does weak ref dot t ref return? I see you're using optional chaining function called syntax here Yeah, good eye on that that that was not an example that we showed earlier But like optional chaining for property you can also optional chain a function call So if it's undefined Then you don't end up making the call and the whole thing is undefined But that also suggests that deref here when the thing is actually collected will return undefined to recap here What it basically means is that you have to manually call deref because we're no longer preventing the garbage collector from from collecting the The event listener since it's wrapped up in a weak ref So every time you want to access it you have to manually deref And if the garbage collector has collected it then deref will return undefined Okay, so in this case the listener is reachable by this listener And once a particular moving average instance isn't reachable Then the component and the component knows it out then the whole thing can be collected Right, exactly because we're no longer Accidentally keeping moving average alive anymore via the event listener. We can go back to What I naively thought would work in the first place when I no longer need all the data in the moving average Instance, I would just null it out and let the GC do its thing. Okay No way, but hold on. But now you've got this strongly held listener Uh on the actual event listener that's calling the weak ref. Yeah, that's a that's a that's a good point You know, I thought you wouldn't spot that but that's exactly right Even though with this weak ref in direction, I still have this event listener. Remember the socket still keeps Strongly it just holds on to all the event listeners until I unregister it. I still have this extra event listener So what do I do there? There is a companion feature the weak refs called finalization registry that lets me do The thing that's needed, which is I want the garbage collector to tell me when it has collected something So that I can perform some action at the point that an object has been collected or in gc parlance finalized And that feature is called finalization registry on this slide what you see is that I make a finalization registry and when I add the new event listener I also register with the finalization registry meaning when the inner listener the thing that actually does the This.events.push is collected and remember it's collectible now because it's held in a weak ref when that's collected It's going to run this function that I pass the finalization registry Asynchronously to remove the event listener cleaning up all the excess memory now again This is an advanced feature and hopefully you'll never need it So it doesn't actually pass the object itself into the finalizer There's a good Observation there you see that the thing that actually gets passed the finalizer are some other values The object that you want to observe the finalization of that's already been collected So you don't get that back in this case the thing we need to perform the finalization action to unregister Or the socket and the wrapper of listener and that's what will pass to your finalization registry All right, that makes sense. Yeah, and like I said, this is a this is an advanced feature and this Example here is pretty dense. I recommend that You follow the link on the screen there to follow our full explainer on the v8.dev website for the feature So with all of that work, I opened up the memory panel again. I kept my chat app on for a while I start and stop measuring the latency and Now I see that every time a gc does happen It's able to reclaim basically all of the memory and then over a longer period of time I'm no longer accumulating memory and yeah, it looks like I fixed the leak Looks pretty tricky like I've collected garbage before and I don't particularly deterministically myself Yes, garbage collection is not predictable. It's not it's non deterministic don't depend on always running And that's why we we have kept saying that we crafts and finalization registry is an advanced feature So and that's a good point too Given the unpredictability of the garbage collector are there other things that the engine does to make apps slimmer? Actually, yeah, basically doing a lot of work to reduce its memory consumption There's actually been two major projects that landed last year Which have focused on this point of compression and v8 light and I can actually talk about both of them very quickly So point of compression first of all, um, you've probably heard that machines are 32 bit or 64 bit Um on 32 bit machines. We have 32 bit pointers on 64 bit machines We have 64 bit pointers and the whole point of this and the opponent ended Is that 32 bit pointers can reference up to 4 gigabytes of memory 64 bit pointers can reference up to 18 Exabytes of memory which is quite a lot more And chrome wants to be able to run in 64 bit so that it can access more than 4 gigabytes of memory Yeah chrome definitely needs more than 4 gigs. Yeah, all right We've all heard we've all seen the same memes and you know fair enough If you've got a hundred tabs open with a thousand images and they're playing games and they're playing music It's going to use up memory but Not necessarily each individual tab not necessarily each individual v8 instance And the key observation of point of compression is that actually We can probably restrict each v8 instance to be less than 4 gig And if we can restrict it to be less than 4 gig And we can pre allocate a 4 gig area for it and force all objects to be allocated inside of that area And now instead of referencing those objects by a 64 bit pointer We can reference them by an offset like this Under point of compression you can take your 64 bit pointer and then you can split it in half You can split it into a base and an offset The base is the start of that 4 gig allocation area and the offset is the offset within it And then you only have to store the offset on objects, which means that your pointer is called half the size They got back to 32 bit size I'm guessing it wasn't just easy as that It definitely wasn't it was a whole journey and there's a whole blog post describing that journey which was very exciting But as a little spoiler, I can tell you that on typical websites We reduce memory by about 40 percent Yeah, that's uh, those are some very impressive numbers 40 percent But what if a web app or an ljs program really wants to use more than the four gigs? Are you constricting apps to only have four gigs of memory? Well, kind of but also not really First of all with points compression those objects are a lot smaller So you can fit a lot more of them into that 4 gig by allocation area And also this 4 gig only applies to a single v8 instances JavaScript object heap. So for example type to raise they have their own external memory backing So they're not included wasm instances have their own 4 gig by allocation area So those are separate even other v8 instances inside of web workers And on other tabs have their own 4 gig by allocation area So you're only restricting one v8 instance not all of them the other big project last year was v8 light And this was this was a really interesting one because we thought to ourselves What would happen if we just gave up on performance and tried to just improve memory? How far could we actually get and for memory constraint devices where v8 just couldn't run at all without the memory that it needed Yeah, that's an interesting thought experiment. I guess if you run slowly That's better than not being to run at all because you're out of memory Right, absolutely The approach that we took was to just look at Typical websites and look at what kind of things are actually taking out memory there 40 ish percent was user data. There's not really much we can do about that Projects like pointer compression are going to reduce that by a lot But we can't really have any targeted optimizations that reduce the amount of data that users create And there was this big bucket of other because there's always a big bucket called other and we couldn't reduce that either With targeted optimizations But we did look at some of the top users of memory and we decided to try and target those Right, so right off the bat if you're not worried about performance at all You don't need to optimize code that makes sense to me. Absolutely And if you don't need to optimize code, you don't need to really collect type feedback either because that's just Storing the data that we need for optimization and it's you only use for performance Even the byte code that we generate you don't have to store that You can just compile it on the fly whenever you need it and get rid of it afterwards Sounds a little different to me though Bycode is unoptimized code and if you're even getting rid of that That sounds like you're giving up more than just a little bit of performance Yeah, the first prototype of VA light were pretty slow But then we realized that we could get a lot of these gains without actually sacrificing performance at all Just by being a little bit lazier Yeah, I'm something of an expert at being lazy myself Yeah, I'm pretty good at being lazy myself too But as an expert in laziness, you know, right? That being lazy doesn't just mean not doing anything at all It means not doing anything until you you're really required to So we took the same approach with VA Let's talk about those feedback vectors that I mentioned previously, the type feedback You're not going to make much benefit from type feedback if you only run a function once or twice So only where you're going to start benefiting you after you run it tens or hundreds of times So we can delay creating this type feedback until we've already had a couple runs of this function Taking off some of those feedback vectors, but not all of them Same thing with source positions We only need those for printing line numbers when we print exception stack traces or for printing Snack traces and DevTools So if we can delay calculating those two later, then we save a lot of space as well Even bytecode We have this capability of getting rid of bytecode that we don't need So we can just get rid of old bytecode, keep around bytecode that we're still using And save a little bit of memory there And there were a bunch of tiny projects targeting these top memory users Which are described in this blog post in a lot more detail But against boiler alert They reduce memory by 10 to 30 percent on typical websites Nice So there's actually been a lot more going on in v8 in the last year We only really had time to talk about a couple of projects I recommend you visit our blog where we post about new versions of v8 We talk about exciting new things that we just like to talk about It's a great read and we look forward to seeing you there Thank you very much for all the viewers who joined us for this whirlwind tour of The javascript what's new in the javascript language and the new developments in the engine itself That makes running javascript both faster and to use less memory We definitely didn't have time to go into all the new features that were added to javascript So please give our blog a read. Thank you very much. Thanks everyone