Otherwise, Rick is going to talk to you about how with very limited means, some of you may know Shenzhen I.O., that's where this comes from, an assembly variant that he built in hardware, using very little money to create a very cool thing that children and young people can use to learn assembler language. It's supposed to be a lot of fun. I don't remember being assembler being so much fun, but anyhow, here we go. Rick, your state. Hi, this is my talk, Shenzhen I.O. in real life, where I would like to introduce my product, the MC5000 DevKit, that is an electronic puzzle game consisting of a application and a circuit board. And the task is to solve simple language, a simple task using an assembler language. About me, I've been tinkering for about 15 years in make spaces and outside of them on various projects. These are some of the things I built in the last few years. Now, regarding the current project, I came to the idea of playing the game Shenzhen I.O. from 2016. And in this game, you are an electronic engineer that newly arrived in Shenzhen in China and works on hardware. And you receive tasks by email, built a use of a security camera with two blinking LEDs. And in the game, you have a CAT CAD program, which you use to design a microcontroller and other components or put them onto the working workspace. You connect them to lines and use a pseudo assembler language to write a microcontroller to solve those tasks. And you then have a simulator that you run. And you can check whether you've actually fulfilled the requirements and then you've passed your task. And you pass on the whole documentation is completely put down in data sheets, as you find them with electronic components. And the further levels have data sheets that are in Chinese sometimes, for some components, so that you have to find out by yourself what they actually do or how you use them. There are two types of microcontrollers in the game. There is the MC 4000 and the MC 6000. They differ in the number of lines of code. The 4000 takes nine lines. And the 6000 takes 14 lines, five more. And it also has a one register more and two pins more. There are two types of pins that the controllers have. There are simple IO pins and X bus pins. Simple IO are analog ports or like analog ports. You have a value from zero to 100, as you can set there. And that corresponds to the signal level that you generate or receive or generate and send out. You can set these and query these at any time. Let's find out what's happening at the pin at the time. Then the X bus pins are more like a serial bus. You can set values from minus 999 to plus 999 there. But on the other side, a device has to be present that will take the data you send. If there isn't one such device, there are the code blocks at the point where you want to set the value until the value has been accepted on the other side. The assembler language is fairly simple. There are 15 instructions only. And I can run simple mathematical calculations with the accumulator. And simple queries is A larger than B or something like that are possible tests. So in hardware, I rebuilt this by taking a USB serial interface or creating one for programming. I built a firmware, a very cheap Chinese controller, the Padoc PFS 173. And I have two of those here. These are my so-called MC5000 controllers, which I can program through the serial interface and have a few input and output peripherals there on the circuit board. These are connected through CPUs through simple jumper wires. So that gives you the connections that GenGen.io has in its program. The objective here is to build the circuit board as cheaply as possible. It can be bought readily equipped at a Chinese maker. If you order 50 pieces, it's 650 euros, 6.5 euros per piece, including shipping. The app is written in QT5, cross-compiled for Windows, Mac OS and Linux. It doesn't have to be installed and is pre-packed for every platform. So you can just download and run it. And I'll now show you how the whole thing works. This is the DevKit circuit board. Here are the two microcontrollers, the MC1 and MC2, both type MC5000, and they both have four IO pins to signal IO, P0 and P1, and X plus X1 and X1, X0 and X1. And then you have the output peripherals, the display is the three-digit seven-segment LED display. That's an X bus peripheral. The buzzer that can play sounds again X bus. Then you have three simple IO outputs, the red and green and yellow LED. And as inputs, I have two buttons, one temperature sensor and a light sensor. Now this is the desktop application. I have two editors here, two Windows, in which I can write the code for the two microcontrollers. I can use these buttons to save the code in a file or open it from a file. There is a link here to the manual on GitHub, and the upload button saves the code on the microcontrollers. Down here you have a display for the registers. They are always initialized with zero at the start of the program, and when a program is running, these are updated four times a second, and the red area here shows you that there is no program on the microcontrollers at this time. If there is a program uploaded, then this turns to green. Now I can enter assembly instructions here, such as the move instruction. So let's say move 42 to the dot register. I'll upload that. The square turns green, and you have the value 42 here. And in the same way, I can write something into the ACC register, and you see that the 23 has arrived. The whole thing, of course, the same thing, of course, works on the other microcontroller. So that has been seated with values now again. And if I delete these and press upload, then the programs are erased and the values go back to zero. Now I'll connect a button with P0 of the first microcontroller and I'll write the value that is P0 into the ACC register. I'll press upload. The program has run. ACC shows zero. If I press the button now, ACC turns and goes up to 100. So the program runs in a loop and always queries P0, always writes it to the register, and the buttons, therefore, work simply by setting the output to five volts. And in the hardware version, the value between zero and 100 simply is is between zero and five volts in steps of 100s. Now I'll connect P1 with the red LED. And now I'll write the ACC register to P1. I'll upload that. And if I now press the button, the red LED turns on because the ACC register is set to 100. And this is then written to P1 and P1 lights the LED. That's perhaps a bit too complicated. I can do the same thing directly. I'll press the button. The same thing happens. Only the register doesn't change. That is simple IO. XBus works in much the same way. I can read the P0 value that my button is connected to and write it to X0. And I'll connect X, X0 with the display. The display simply shows what is sent through the XBus connection. And if I upload that and press the button, then the display will, as you can probably not see too well on the screen, in reality, it is much brighter, but you see the value changing to 100. So that's the XBus. The XBus I can also use to communicate between the two microcontrollers. I'll connect X1 on MC1 with X0 on MC2. And I'll write P0 to X1 now. And on the second microcontroller, I will connect it to X0 on the second microcontroller. So I'll take X0 and save it in the DAT register. Upload the whole thing. And when I press the button now, you see how the data register is set to 100 because the value from the first microcontroller was communicated to the second one. If I release the button, then it turns, goes back to zero. And one difference to change in IO is that change in IO forces you to run a sleep, include a sleep command, which is simply putting the microcontroller on hold for a while. And for me, one time unit is 100 microseconds, milliseconds. So if I put in the number 10, that is 10 times 100 milliseconds, one second waiting time. So that gives you a slight delay when I press the button, a one second delay. You probably see it better if I'll make, turn this into five seconds. I'll press the button. It takes a while. And now data is set to 100. Exactly. So this loop has now stopped for five seconds. Then it reads the value again, writes it again and again. And that is the time when the DAT register on MC2 is finally reset. And in the same way, I can send something to the buzzer. The buzzer works by taking values between one and 75. And these are increasing pitches, frequencies. So you can, we can use a mathematical feature now, such as add, add one means take the ACC register and add one to it. Because it's initialized with zero by uploading it, I see that it's immediately set to 999. The reason for that is that the code runs quite quickly. If I don't put a sleep in there, if I add a sleep for 100 milliseconds, you see how the value is slowly increasing. I increase that to five even. So the value is increased. And this value, I will now, I can now transmit to X0. And you see how things happen on the display now, how it, how the count increases. And if I now connect this to the buzzer instead, you can hear. So you can actually play melodies that way. Now, on to tests, conditionals, comparisons. You see now the ACC value has, is always increased. And I now could do something such as if, well, first I'll sleep again to prevent it from running too fast. Teq tests for equality, test equal. And I will now look into ACC and test it for 50. And after such a test, I can add further lines with a plus in front, which means that they are only executed if the test evaluates to true. So if ACC equals 50, exactly. And lines that I prefix with a minus are executed if the test is yields false. And if the value is 50, of course, I have my X1 still connected with X0 on the other controller. So I'll simply move the value 23 to X1. And the second controller still is running the code that it simply moves X0 to that. So I'll upload this. We see ACC increasing. And as soon as it reaches 50, this line will be executed. And the value 23 will be sent. And the data, there you go, it shows 23. So in this way, you can implement quite a lot of functionality. And the purpose of the game is to solve tasks such as this. So this is about getting a traffic light to work. The light is red. A pedestrian is pushing a button. And the light should switch to yellow to green. The pedestrian should have time to cross the road. And also there should be a countdown from 10 to 0. So to solve this problem, I'm adding a couple of connections. So use the yellow LED, the green one with P0. Because both controllers only have two simple IO pins. And I can only use simple IO with simple IO pins. So I'm using the second controller as kind of a port expander. So the remaining connections can stay as they are. I already wrote that program. This is slightly more complex. And we're also using labels. This time, I haven't shown that so far. Anywhere in the code, you can add a label. And you can use the jump command to jump to that particular label. So I'm uploading this now. And when I push the button, I can see the timer counting down to 0. The traffic light is turning green. The light is switching back to red. And we can do it again. The timer counts to 0. The traffic light turns green. And then it turns back to red. So I solved that problem. And on the next level, I would need to add some beeps when the light turns green. So I started with this project last year. And basically, to work on the Padauk microcontrollers, they're really cheap. But they can't do a lot. Last year, an open source tool chain became available. Previously, there was only proprietary tools from the vendor that you had to pay for. So now it is supported by the SDCC compiler. And there is an open hardware programmer. So I ordered a programmer and a bunch of the microcontrollers and played around with it a bit and looked for something to do with them. And I looked at the data sheets a lot. And I was reminded of the Shenzhen I.O. data sheets. And so the idea was born to reimplement Shenzhen I.O. in real hardware. So the processor that seemed the most fitting is this one because it has an analog digital converter. So I can use that for the simple I.O. ports. And it's also got PWM. And so there isn't a serial interface, but there's an interrupt capable pin. So that can be used for receiving on the serial port. And there's one pin that is open drain. So that can be switched only to ground. And if you set it to one, it's an open circuit. And you can use that to communicate with multiple controllers at once as kind of a bus. So otherwise if you connect multiple together, they would interfere with each other. So as long as only one of them is transmitting at any time, you can connect multiple to the same bus. So for the simple I.O. output, I connected the I added a low pass filter to use the PWM signal to convert that to an analog voltage. And I'm using that to send the signal to a simple I.O. port. On receiving, the pin is switched to an input connected to the ADC. And that works wonderfully for a simple I.O. The X-Bus is slightly more complicated. So we need a signal that the sender is ready to send and the receiver must be able to tell the sender that it's ready to receive data. So that's the way it's implemented in X-Bus. And for that, I used a feature that the PFS173 has internal pull-ups we can use. So I can switch the pin to an input. But use the pull-up nonetheless. And that pulls up the pin. And when the output is not active, it's pulled down. So the sender raises the signal, the receiver sees that, and the sender pulls it down to signal to send the data and sends 12 bits to signal value from minus 999 to plus 999. So these chips don't have very good timing on an internal RC oscillator. So an X-Bus transfer is relatively slow. It takes about 50 milliseconds. And that's mostly sufficient. And that's really sufficient for the tasks that are needed to be implemented for the game. So the firmware was quite a struggle because the microcontroller has very little RAM. So I need quite a bit of those bytes to store the program. And the remaining storage was never enough. What really helped was the compiler because it actually was optimized for this architecture. In particular, function calls were using less RAM than before. And so I learned a lot about when to inline functions so to decrease their memory use. So the SDCC compiler is not very good at figuring that out automatically. To generate the assembler code into the 65 bytes, I am doing this. I take a command like move and I'm using the upper six bits to encode that. And so since there are only 15 instructions, that's fully sufficient for the lines that have a plus or minus in front of them, depending on what the previous test command was testing. So in the same byte, I'm using the two lowmost bits to encode the plus or minus. And so that means that it won't take up any more memory in the microcontroller. The parameters are always fixed. And the first parameter can be an integer or a register. The second parameter can always only be a register. For parameters that can be registers or integers, I'm using 16 bits. For a register, I only need 8 bits. So for this line move 42 to P0, I'm using 4 bytes. And in the firmware, there's a counter that shows where we are in the program code. And for move command, that is incremented by three bytes. And that means that the 14 lines of assembler code can always be stored in the 65 bytes of RAM. Labels were a bit tricky. So I'm parsing the complete assembler code to extract the labels. There are basically strings with a colon after it. And I'm assigning a unique ID, a number between 1 and 2.5.5, encoding then by having an opcode for a label, and then the index of the label. And when a jump command occurs, then I simply scan through the entire program code to find the label, to search for the index of the label, and then I jump there. And that uses very little memory. One trick in the program code. You can add labels to lines that already have a command. I added that because that's possible in Shenzhen IO. It's not documented, but it works. So my goal definitely was that any code that works in Shenzhen IO should work on my microcontroller. If you want to try this for yourself, then you should be able to get to my GitHub page. I have added a lot of GitHub Actions. So all the binaries are built automatically for the different platforms. The CAD files, the key CAD files, are all processed. And the garbage, a bomb, and pick and place files are created automatically. And you can upload them to JLCPCB. So that includes all the order numbers from JLCPCB. And at early April, the Padauk chips are unfortunately not available right now. So it's a bit weird that they're all sold out right now. So we have to wait until they're available again, but then you can buy all the parts. I've created the layout in a way that all parts are available. JLCPCB should have all the parts available so you can have them assemble it automatically for you. And you can order pieces, five to 50 pieces, add the pick and place option, upload the bomb files, and they will populate the board for you and mail them to you. Here's a couple of links to the Git repo, to the free PDK and Shenzhen IO. And the last time I checked on Google Games, it was on special offer on Google Games for only a couple of dollars. So if you haven't played it, give it a try. It's a very nice game. Yeah. So I can't hear the Herald very well. So I think the Herald is saying that there's quite a few questions. And we can't hear the speaker. Sorry for the technical glitch. Where do you get the board from? So I can't hear the speaker and I'm guessing he's not on the stream right now. Hopefully somebody will notice that soon. So finally the director noticed that the speaker was not debatable by audio. So there were a few problems we have to start over. Okay question one, where did you get the board from? Can you hear me now? Okay. So the board comes from the Chinese manufacturer JLCPCB. And on the GitHub page, they're all production files that are needed to order a set of boards yourself. If there's a lot of interest, I could try doing a bug order at like 50 pieces as soon as the microcontrollers are available again and order a batch and send them on to people who are interested. A really cool project. So in my old age, I might be convinced to actually play around with this. So next question, is that your first cool project or is there a list? What have you done elsewhere? I have done a lot the last 10 years. I am working professionally in product development. So my hobby projects were on the back burner. So my website is Flegmatic Prototyping. And if you search for that, you should see a couple of my projects. So the next logical question is what will you be doing next? So I just heard about a project as we were talking to the operating team. Apparently, there's a game where you have to diffuse a bomb. And only one person has the instructions. I forgot the name. But it sounded like it would be very nice to build a hardware version of it. And only one person has the board and has to work on the board. And the others have to explain to them how to do that over a video conference. So clearly, the next question is by a person that is very, very experienced in the assembler. Would it be possible to use the Unicode minus character instead of the dash character? So it lines up well in the editor. So yeah, I need to check if the parser can work with that. The GUI is I haven't worked on very intensively. And since it's an open source project, if you want to improve the code editor, please go ahead, bring it on. Yeah, the question had a smiley behind it. So where is your open source project? It's on GitHub. It's released under the GPL3 license. Here we can see the link. I can't see the screen. So hopefully, it's visible in the stream. And all the source code is there as well for the board, as well as the firmware, as well as the desktop application, it's all open source. And you can all do with it, whatever you like. And I would love to see a maker space to create a couple of those and to use that as an introduction to programming. That sounds like a very nice project for a chaos, marschule chaos makes school. So another question that comes to mind. I wrote to sec. And I just copied some stuff from the documentation. And because I re-implemented all the stuff one to one, and he really likes the project and gave me permission to do all of this. Did you get that in writing? Yeah, I have that in writing. Sorry. And the question, the elephant in the room question. When is he going finally to ask it? How did you make that hat? So this this has been integrated into my video feed through snap camera tool published by snapchat. And I built that from that documentation. There's an example where you can put a crown on your head. And basically, I edited the file. And you can see that the hat is very two dimensional. I haven't rebuilt it as 2d, but I like it. All right, looks very nice. Here's another question. No, there aren't any more questions. I could ask you myself. Are you planning to like go to schools with this project? Or do you want other people to do that? But you were talking about bulk order. Yeah, I think I'll add that to the website. Just a link for people to express their interest in getting one or two boards and then collect all those people and do a bulk order and send them on. And I'll add that to the GitHub page. I'm active into maker spaces. And when we can do in person workshops again, then I would check if there's interest in that and would get a couple boards and use them in my maker space. Yeah, it sounds like a really cool project, especially in the context of Karl's Machtschule. Yeah, I noted that down and I'll stay in contact with you.


Good morning everyone and welcome to this talk about the release of Inkscape 1.0 about its history, about how Inkscape 1.0 came to be and more generally this talked about what's up in the Inkscape project for now and a bit about the future of the project. So let's start with a bit of Inkscape history first. So Inkscape was forked from the Sotypodi project which was also a vector graphics editor, pre-existing, in 2003 roughly and published its first version in 2004 which was version 0.37. At that time the versioning scheme for Inkscape was a bit simple. Basically the goal, the stated goal of Inkscape was to create a vector graphic editor for SVG format. The versioning was basically how much of the SVG format do we support. So version 0.37 basically means that we supported around 37% of the SVG specification which means that the goal, the end goal was to eventually publish 1.0 release with 100% of the SVG specification. So this was the goal and this versioning continued basically through 38, 39 etc. until 0.48 version which was in 2010. So version 0.48. Then after 0.48 was out we published several point releases which means no big new features but mainly bug fixes and stability until we hit our I think most stable version 0.48.5 and at that time we had decided to change the versioning to have a more a faster approach to 1.0 because a lot of people thought that being below 1.0 means that the Sotypodi was not stable and that was not at all how we felt about Inkscape because Inkscape was already very stable. So we decided that we would jump basically to 91 so we published the version 0.91 in 2015 which means that we felt that we were very close to version 1.0. At that point we already had in mind the idea that version 1.0 would have to have basically DTK3 to support because DTK2 was already old and not really well supported everywhere and not taking into account a lot of stuff that people already used like high DPI screens. So after that we published another version which was 0.92 in 2017 and a few bug fix versions after that until 0.92.5 recently. The start of DTK3 in Inkscape code was basically around 2012 by Alex Valavanis and it was a bit dormant as an compilation option in the Inkscape code until 2016, a bit before the release of 0.92. When we created the branch for 0.92 after that we made the master branch using mandatory DTK3. Basically we removed the code of DTK2. So this forced the developers to look at all the issues that the DTK3 branch had which was basically unusable for the first month after the switch because nothing worked in the DTK3 branch and after fixing a lot and lots and lots and lots of those in this DTK3 branch we finally released a version using DTK3 in 2020 which is the version 1.0. We haven't yet finished to update to DTK3 because we still have a few deprecation warnings about DTK stuff that is already deprecated. Related to that we had the pleasure of welcoming more recent macOS contributors in the Inkscape developer community. We had a lot of versions without any real macOS developers so none of the Linux or Windows developers knew how to basically package things for macOS or make things work on macOS so we could not really have macOS versions and apparently the DTK3 framework makes it easier to provide a DTK3 to provide a macOS version so we welcomed René who made basically a macOS sort of native version from April 2019 which was a very good thing for the project I think and in parallel to that we had the Python 3 migration on the extensor type which was mainly initiated by Martin so Martin started in March 2018 to port all extensions from Python 2 to Python 3 and even some Python 2 compatible and he finished that migration 18 months later just in time for the release of 1.0. Another thing that prompted us to change our versioning scheme was the arrival of the SVG2 specification. We already had implemented for some time things like paint order to put fill in front of stroke for instance and now we implemented SVG2 text to have text behave more like text in browsers and we also started to implement meshes to have paint meshes but that didn't make it into the SVG2 spec eventually. Hello LGM I'm here to talk about the Inkscape community. One of the things that is really great about Inkscape is that we take our community of contributors very seriously and part of what we've done in the last few years has been to really ramp up how we invite different kinds of users who may not have been able to contribute previously because they're not program programmers and finding ways for them to help the project. Part of this has been facilitated by moving the project from large pad to GitLab. GitLab now contains many of the new teams that we have and I'm here to talk about a couple of those things. So previously we had the developers team, we had a translators team, a docs team and then the Inkscape board which is a specialist function but in the past few years we have been growing our vectors team. Our vectors team is just a funny name for our marketing and outreach team. These are people who are very keen and interested to use a product but they also want to contribute back and one of the things that they can contribute is being able to like write news articles and post things on Twitter and you know basically make it so that Inkscape has people paying attention to what's going on outside of the developer community. We also noticed that we needed to pay attention to our user community itself. Inkscape had a situation where there were a lot of forums online and a lot of places where people were going for help but none of those were inside the Inkscape community which means there was a massive divide between where developers were talking about things and where users needed to go in order to ask questions.  We implemented a rocket chat system which we have encouraged not only for our developer team and all of our teams to use but also we've made sure that users can ask questions there as well so that there isn't so much of a divide between people who need help and developers who are communicating what they're trying to do technically. The future for the community, we are trying to grow our user experience and design teams. We're trying to figure out the best ways of making sure that the designs that they come up with in GitLab, the processes that they go to to refine are then respected and then brought into code which is always the hard step to go from like a perfected design on paper and then actually bring that into code especially since Inkscape is almost entirely volunteer driven. We have some successes already, some designers were able to learn how to use Glade and therefore they were able to create designs that were able to bring into Inkscape pretty directly. But we'd also like to grow our user community further, do more competitions, do more artist based things. We'd also like to grow different types of communities so user communities that do like CNC work or they do specific kinds of artwork or design or planning things like that. Those communities usually have specialist knowledge which they you know they can create things like tutorials for each other, having space for them so that they can learn each other's names and know who to ask for help for specific issues. I think it's going to be important going forward. And each of those communities of different types of users I think are important to Inkscape and we should definitely be paying attention. Our Vectors team, I have to say it, big shout out to Chris, big shout out to Ryan, big shout out for all of the Vectors, Mahayla, Marron, because they've really shown what a marketing and outreach team can do for a project. Not only were they able to improve Inkscape by showing us the bugs that were going to be important to our users in the 1.0 release, things that they would definitely notice that we managed to fix because they considered them blockers. But they were also able to promote the 1.0 in a way that has really increased the profile of the project. So if your graphics project is thinking about doing a marketing and outreach team, I can highly recommend it. That's it for the community section. Thank you for listening. Considering the amount of changes in 1.0, this made the release process for it very, very long and much longer than anticipated. We released the first alpha version in January 2019. So the goal of the alpha versions was to have people signal the biggest problems with it and what was to be fixed with highest priority. Then a second alpha version in June 2019. Then we published Beta in September 2019, where the goal of the beta was to basically collect all the problems, however minor, that could be encountered with 1.0. We then released a second beta in December. Then we tried to fix as much as possible of what was found problematic during the beta and identify a lot of blockers basically. And then we published a released candidate in April, which where the goal was to have already fixed what was to be fixed before the release. And then one month later on May the first release. This release was a big success. We had a great video by Chris and why we knew there are many bugs present in the release. And we even let a debug dialog in the release. Apparently a lot of people did not realize it was buggy. I don't know how they missed it, but we received a lot of praise and congratulations for that release. And both in social media, in articles about the release and even the discussions on hacker news were mostly elogious, which is quite something. So yeah, it was a release, I guess. And so we turn to what is in the future for Inkscape. And here I'm to give you some taste of the kind of things that might be coming in the next few releases. First of all, the question is always who is next? We have, of course, always the situation that the people that show up, the people that contribute, these are the ones that set the direction of Inkscape. The project as a whole has guides, but mostly it's people who want to actually develop things further. Those are the ones who are most likely to get their features in. That's why in the next couple of months, we're going to have a hack fest, which is going to be online. And everybody's invited if they're interested in developing Inkscape for the next releases, and encourage everybody who has plans to come along. And we're going to have some presentations of all of the dreams of the future that we can actually lay down in detail and have discussions about them. So what kinds of things can we look forward to? Well, there's the idea of the collaborative edition, that is, Inkscape where two different individuals using Inkscape can collaborate on the same document. We used to have this kind of functionality, but we need to bring it back. There are plans afoot to do that. We're going to continue the rollout of the customization that is making Inkscape more themeable, more configurable. And a lot of this has to do with plans such as making an Inkscape for kids, which would be a much more fun and bright version of Inkscape that's simplified. But also for many other reasons, lots of users have particular kinds of needs that we'd like to be able to offer them an interface that matches. There's obviously GTK4, which we hope will be a much easier transition. We need, we really need to get GPU rendering support. Inkscape currently renders everything on the CPU and it's quite slow. We need to somehow get the CMYK workflow completed. It's one of the largest gaps in Inkscape's functionality. It's been on our roadmap for a very long time. Whether this means developing features in Zekairo or whether it means using a new back end in order to do the color management, that's for the planning. We also have some really good designs for multi-page support. So hopefully we'll be able to do canvases and multiple pages. They won't be based in SVG because SVG2 rejected the idea of multiple page pages. But we still need the functionality because there's lots of people who use Inkscape in order to do production work. And I would also say that there are lots of user experience improvements that are being designed right now in the in the new UX team. Lots of small tweaks, small things where Inkscape can be designed a little better. And I think that's it for functionality. At least in the grand scheme of things. I will pass you back to Mark. Thank you. Okay so it seems we have many exciting things to come in the future of Inkscape. So I cannot wait for some of them and I hope you're excited by them too. So what to say now? Join us if you can using Inkscape and if you have any questions feel free to ask them. Thank you for coming to LGM. Hello. Hello. Okay so there's a question here about how many users are using Inkscape? Let's start in order probably. So when is the next hackfest and how to join and participate? Oh yeah of course. Okay so the next hackfest hasn't been confirmed with a specific date but I'm aiming at August. Online right? I hope that that gives you a more specific answer but if you want to if you're interested in the details come to the rocket chat and we'll make sure that you get the information. So Z mark what's the next question? There was a question about some diffusion curve but I don't know about it. I don't sorry myself I don't know about the diffusion curves. So there are two issues potential issues with implementing that. The first one is that we try to have the SVG conformant output as much as possible. So we need to make sure that this kind of gradients can be handled in SVG maybe with gradient meshes if if need be. So if it can be implemented with the gradient meshes we can do it and we will just need people to basically do the UI for it and if it cannot then we need to see how we can specify some kind of implementation of it in XML and SVG in general and basically suggest it to the SVG specification if it's if it could be useful to all SVG basically. Okay so I'm going to take the next question which is about how many users does Inkscape have. This is obviously a very hard question to answer but I'm going to answer in my my role as the the website administrator. We know that Inkscape is downloaded from the website hundreds of thousands of times every month and of course this is not the total list of Inkscape users since there will be duplicates but there'll also be lots of Linux users which aren't counted. For example statistically our user base is 95% Windows 5% Mac and 0% Linux but that's obviously not the the truth of the matter so obviously the stats are really hard we don't record and we don't track users and we never will but suffice to say that Inkscape is well regarded and has millions of users. Yeah when I last looked at the popularity contest on which is tracking how many users of some distributions use some package basically we are on one Ubuntu install out of four that records their package installs and one DBN out of five some around around this order of magnitude and in one month of downloads on the website we have I think people have downloaded the 1.0 installers approximately 600,000 times and yeah that's about it and for the version that stayed longer the new website which was 0.92.4 the Windows installers were downloaded 7 million times in total so that gives you us an order of magnitude but we don't know the exact numbers. Yeah that's very interesting I haven't actually heard about the the other numbers. Do you want to take the questions about prototyping the prototyping GUI? Yeah I can't actually see the question but can you read it out for me? Yeah someone wanted to know if there have been some discussions about tools for prototyping GUIs such as those that like Sketch, Figma, Adobe XD so I think Akira is trying to fill that gap. So the idea here is that Inkscape being used as a tool to create user interfaces not development of user interfaces for Inkscape. I mean people have no specific development plans so far as I've seen for creating tools specifically for doing kind of UI design workflows but if you're interested we're always interested to hear what kind of tools Inkscape could provide for different kinds of segments like user interface design. I know that's not really a very good answer but so far as we know the UX team which is collating a lot of the design the future designs doesn't have any plans. Yeah there is another tool that is currently developed to try to fill that gap which is called Akira I think Akira UX that you can look up. I will put the link in the chat. So another question for you Martin. Someone would love to hear more about the community building and especially how do you make sure that people who are less tech techy or less already involved in other open source project and how to be keep those people engaged? Yeah so it's actually it's a hard process because the first thing that you have to be aware of is that as developers we are naturally inclined to listen to and give a greater time and respect to all the developers. It's just sort of how we are built in how we program. So being able to make sure your community has things like a code of conduct and that also has places where non-developers will find comfortable to contribute. This is something for instance that the Rocket Chat gives us. It's no disrespect to IOC but Rocket Chat is a more comfortable place but that's just like the basis. To go on further from that you have to give non-developers control over decision making itself. Whether this means bringing them into the board or whether this just means for certain decisions. Not having input into things which can be sometimes very hard right because we want to be in control but oftentimes it's just better to say okay so there's this new person here that wants to make something new. I don't have time to actually do this particular task myself. This person is going to make decisions that are not going to make me happy and there's a limit to how much that I should be stopping them from doing the task and so like being able to stop yourself is perhaps one of the most important lessons. So a question about the SVG specification. So is the SVG specification board easy to work with as a stubborn or open people? Do you feel that SVG could target more desktop publishing artwork instead of just web and what is the vision of the SVG standard? So I think the person most able to answer that question precisely is Tava who is not here right now but from what I heard basically SVG specification people is very web-centric with a lot of people coming from browsers like Firefox and Chrome. They used to be more involved from Adobe who is more art-centric than web-centric but I think right now it's mostly Chrome and Firefox and it makes sense since it's from the W3C which is like the worldwide web consortium so SVG is primarily targeted at web. I don't think they would be close to suggestions to improve SVG but they are very conservative about it and they basically want to have as low a burden for browsers as possible so basically they need for something to be added to SVG you need to make sure that there are several already implementations ready to be published instead before they will basically consider adding it so it could target more desktop artwork but it's primarily a web specification which is not incompatible we can have desktop targeted stuff in it but not it's not easy to make it evil so another question about specification I noticed that you mentioned near the end that you were looking for a five format with multiple pages so both multiple pages oh it's not a question and SVG were on the table for open raster format discussions tomorrow so yeah might be interesting to look at open raster discussions to see how we want to implement stuff in SVG. Martin maybe for you do you feel a moment a new momentum of users and companies interested in Inkscape 1.0 as Blender was when it released 2.80? Yeah I think I think every release that we do we definitely see an uptick in interest the 1.0 has been special for us and we have definitely received a lot of media attention a good example of that is we had ASF support so they gave us some money and you can see them on our support page on our website and you know I don't think that that would have come to us if we hadn't have made the release you know it's difficult to know about industry because we have very industrial ties to all of the companies that use Inkscape some great examples of that actually is things like companies that produce cutting machines and other kinds of devices a lot of them actually use or recommend Inkscape in a really heavy way but very few of them actually contribute or are in contact with us so it's difficult to know like what the we were talking about how difficult it is to know how many like ordinary users that we have but it's also difficult to know how many industrial users we have too but yes we definitely have a a vigor and a Vim going on with with 1.0 so Mark do you think that conforming to SVG is hindering Inkscape feature development? Not really as most things can be done in SVG like almost all vector things can be done in SVG and it's just a matter of providing an easy UI to access what could be done basically except for vector meshes like gradient meshes but we try down I think we will make it add it in some later version of SVG yeah I think if we have a couple things if Krita could have an independent implementation then then we definitely make it so I know we have a couple of things that are on the slab for the next release or the next few releases things like multi-page support that we are definitely going to have to do ourselves because we have a strong signal from the SVG working group that they are not interested in supporting those things but we'll just have to see how we can develop it so that if in the future with SVG 3.5 or whatever they they introduce these features that are Inkscape SVG variants are not too far away from what we would expect so will there be a vector brush for the power pencil tool like for the grease pencil tool in Blender I don't know I haven't really used the grease pencil tool in Blender maybe Martin do you know about it or I've only seen a couple of videos on the Blender grease pencil Blender videos always look amazing so it's hard to it's hard to dig out from the from the fog event and envy but I've seen that the LPEs are probably the closest thing that we have but I don't think it's comparable oh yeah maybe there could be improvements to the power pencil tool with more brushes but it's it's not impossible but we haven't tried to implement it did we miss any questions I think we're okay there is a question about the shapebuilder tool which exists in Illustrator I think and it's not on the roadmap because it's a lot of work and basically no one has time for that but if we have anyone willing to implement it and with some knowledge about how to potentially implement it then sure it's like why not it is that like all all features that exist in other software we are not against it it's just that we did not have time in the past to do it and it's a lot of work yeah so there's a there's a couple of actually adobe like features that specific users have asked for things like color color management improvements to swatches and so forth a lot of those discussions are actually happening in the UX team the UX team knows that there isn't a promise that all of the features that they design will be implemented but it is at least the start of the discussion that happens from the designer perspective so there's a question here about what is the simplest way to help inkscape and this so inkscape like all open source projects primarily needs contributors right people who get active but it's okay to do simple things like help with retweeting or answering questions on the forums or donating some money all of these things are the simplest perhaps ways of contributing but we also need documentation writers translators people who do graphics like all of the amazing artists that do the about screen contest amazing contributors i have to say who really help sort of raise the level of inkscape from just merely developers to like more more than that how was the transition from launchpad to githlab in particular the bug reports migration so island serves a part that's not about bugs and i will let martin about the story so one of the one of the technical parts was to that we migrated from a bazaar which is used in large pad to gith in githlab and that was quite an easy part that we transferred all the bazaar commits into gith and that was really painless and coming into githlab and starting to use the githlab with more git-esque workflow was really easy i think for many of the contributors of protect it took some time from some other some contributors to get used to it but mostly it going into githlab was painless for most things and for bugs i will let martin sure so the the the bugs migration is still happening and in in fact this is one way that people can contribute there's a bugs migration game in fact it's a game where you can earn little animated badges of little dancing bugs that chris has done we'll post a link so that everybody can have a look but so we've moved a lot of the 70 000 bugs that we had on launchpad or close them as as needed but it's it's a lot of work and it's taken more than a year to sort of go through even the ones that we have so far but it's definitely a worthwhile project because we've recovered some of the issues or patches that we've had in the past we know that when we transitioned to githlab we lost a couple of the people who were looking after our launchpad issues tracker because they didn't want to move which is always sad but this is of course we had to have a balance between the the project's needs in terms of development and also what you did different contributors were comfortable with using so would you hope for mega grants as the ones that blender got from intel nvidia etc i mean inkscape is not a company so it's not quite the same thing yeah basically blender when they got these mega grants they already had big structures with full-time employees and lots of organizations around around it so i think i would not refuse any mega grants and i think it would basically make the project advance a lot but we don't even have money for one full-time developer right now so it's it would be a lot of work on the project current contributors to handle such a big grant basically because it would the first thing we would do with some of this money would be with such an amount of money would be to try to reorganize the project to be able to handle it and to have full-time contributors etc and it would take it it would take a much longer time than for blender to use it basically so it would not solve everything i think one of the the biggest sort of mega contributions that a company could make is actually to to hire a developer right so if if ren had turned around and hired a developer who was a full-time inkscape developer that would be way more of a contribution and immediate because of the way in which inkscape is structured currently than just a large part of money inkscape has its own forum implementation do you find it easier than using something like discourse and what are the teams experience in communicating with users i should probably handle the inkscape implemented its own forum so i i wrote the forum in jango python mostly because most of the implementations of forums that were out there were php and i really don't like php so this is a this is a very biased account but after many discussions with a couple of forum people who who were looking after different forums online we got a sense of what the requirements were and it took about six months of backwards and forwards and programming and fixing and trialing and stuff so in the end i think we've we've got a forum which is actually pretty solid so far it's been it's been fairly active but not but not very active but it's also nice to see users being able to post their their pictures and talk amongst themselves about things and being able to answer questions whether the answers don't disappear like they do in the chat also if anybody's interested in looking at the python code for our forums the the inkscape web project is on git lab so are there interoperability discussions between open source graphics software or are the open formats already okay so there are definitely discussions between open graphics software and well other people in other software could probably tell more about discussions like the discussions happening on or a tomorrow for instance are an example of that for the svg format in particular we have some discussions sometimes with the critter like i hang out on the critter ioc channel and sometimes i mean in some discussions but there are not a lot of open source projects implementing svg and certainly not trying to implement the full svg specification like scribus is implementing some of the svg so that you can import svg files in scribus fontforge is interesting basically in path so you can they are interested in people having path implemented implemented in fontforge but they don't really care about gradients or any fancy features because it's not in their interest to create fonts basically so we like specifications make it easy to handle those matters because we try to implement what's specified other try to implement what's specified etc and we don't have a lot of discussions about trying to further modify the svg specification with other projects but we could have some such discussions so mark what's your favorite new feature in 1.0 centerline tracing probably that is a very good feature it's hard to pick out because we've been using it for so long but i think mesh great gradients they're definitely the coolest they were already there before i think ah they're still cool i thought we disabled them i thought we disabled them for a nine two but maybe they were there how much budget do we have and how do we spend the donation money or is this information available somewhere it is it is information that's available i unfortunately don't have it on hand but i know that we have we have more money coming in currently than we are able to spend on things like hackfests especially since we're not spending any money this year on airplanes and hotels which is different from previous years but so this is where we're in this tricky situation where we are getting more donations than we can spend on biscuits but we are not we're not getting enough donations to to hire somebody or to do large contracting projects especially since some of our sponsors are technical sponsors that just give us free access to cdn free access to servers etc so we don't have a lot of spending on technical stuff most of our spendings are for uh meetings between developers which we try to do once or twice a year but not this year obviously i think it's does inkscape use svg to store layer effects like blur shadow outline strobe in our lights yes in svg 1.1 it was in the svg specification that filters are well specified in svg the svg 2 specification outsourced that to a filter specification which is i think a subsection of css something specification which has a whole section it's about svg tags for filters and what exist and exactly what they do and it was one of the most difficult to read specifications that i've ever seen in w3c that's the last question that we have so far i will put a link so it says do inkscape developers plan to form a foundation like critter and blender have i mean we're an organization as a part of the software freedom conservancy so we have a structure but we don't have a foundation which could conceivably operate independently do we have a master don fediverse account yet so that this actually is a quick question for the vectors team the the vectors team has accounts with all kinds of social media including master don not only do they have accounts they also do tracking and various other interesting ways of making sure that all the news that we produce ends up on all of the platforms forum versus chat what is the future what's my opinion between forums and chat it's uh do you use the forums at all mark uh no no i don't use the forums i i try to react uh quite often on the chat but yeah so so i think uh chat is good because it's more it's a higher bandwidth and more more immediate so if there's a lot of backwards and forwards then chat can be very valuable um but when it comes to um being able to lay out your thoughts and um take time uh post examples that's the sort of thing uh the forums are much better we actually find this in interestingly between git lab and rocket chat or i i rc in that developers can chat in in i rc um but often they will document things in get in git lab and i think git lab is operating like a like a developer forum for us um is the ai format open no definitely not see ai format well sort of the ai format is actually uh pdf uh since uh 10 or 15 years ago before it was eps so it's basically a valid pdf file that you can rename ai to dot pdf but it contains all the ai specific elements like ai filters and some ai editing data as a binary blob inside the pdf and as far as i know it has never been reverse engineered by anyone and never been specified anywhere so contrary to for instance the photoshop format which was published by which is binary but was published by adobe the ai specification was as far as i know never released and never reverse engineered yeah artificial ignorance indeed yeah i think the the overall roadmap from question was in the video um if you've got a specific question about future developments though please please qa that team says we are almost out of time excellent these were some really good question questions so thank you everyone for your questions and thank you lgm for letting us present uh inkscape that many people already knew anyway but yeah the questions were really interesting and i hope you enjoyed the presentation and the video so thank you lgm and thanks chaps


Oh that looks so sick. No, no, no, no. How's it going everybody? Dachodoy here with some more Dragon Ball Fighter's rank matches and today we are continuing our full week of Goku GT rank matches. This is what we'll be going for today. This is the common route bread and butter stuff for Goku and this is a huge part in Goku GT TOD's as well. I'm sure you've seen a lot of them online already and it basically all comes down to making sure you hit your spear bomb like that. Oh, trying to tie it up with me? I'm gonna go ahead and just do your one right back. Oh, just barely sweep the leg with that beam. I gotta say that beam is so good, especially the assist. It's even better than I thought it would be, which is crazy because I was hyping it up. I was like, you got a beam assist? That's that's alright by me. Doesn't matter what the angle is.  I'm not trying to get put any further into the corner. Alright, we won. Oh no, I did not mean to do that. I held it. Okay, that's fine. We did lose sparking because of a misclick. Oh, but get Goku Black right back out here for the little kid pressure. Oh, never mind. Alright, we got a sparking back. Sure, I love that animation so much. I mean, that's like it's the coolest down heavy animation. Tell me how this guy has a better down heavy than Krillin. And then try to tell me this is a fair world. Alright, let's see if we can hit this. Oh, come on, hit, hit, hit, hit, hit, hit. Come on, I was practicing. Life is cruel, but look at the pressure. Oh my god, you're telling me I can whip a combo and still super dash on him, even if he blocks? This character is not fair. This character really is not fair.  I'm sorry, dude. I've already cursed him this fast into a ranked match. That's how you know I'm already so engrossed. No, no, no, no, no. No, not the double Sunday. Oh man. Alright, we're out. Oh, you even know I was mashing. Let me hit you with this Super 17 real quick. Boom, spoilers if you haven't watched GT. You guys definitely called me out in the comments for that. Look, man, I don't remember GT too much. I thought that was Demon King Piccolo. Alright, that was a little obvious. I'm not going to lie to you and say that was the most brilliant thing I've ever done. Does he level three? No, he wants to snap. Okay, this will get us sliding and it'll allow us to put on some of that famous power pull pressure. You can't beat the massive. Okay, don't get mixed, boys. Back dash on that. No, the power pull misses. That's going to be the death of Goku GT. He put on quite a show though. Let's let him go. You dare drop? I mean, that was six frames. So technically, not really a drop. You can't blame him for that one. If it drops frames, you can't be blamed as a wise man once said. Oh, is that it? I think it might be. I definitely dropped it trying to get fancy. You can see he stopped flying. You can see he also thought I would finish that game off, but that's fine.  Of course, his was like 18 frames and mine was three. But you know, equal playing field. Oh, we're not reaching. I thought we were closer to the corner. What's this? Are you in the corner against GT Goku? No overhead as of yet. Let me get that dropped it. That's my turn. Look at the wall. That is such a bust. You're telling me that's not busted, bro. You must work for ArcSys because that was crazy. That was not the correct protocol. I get those moves confused a lot. The downwards angle one and then the the ball that blasts them down. Oh, no, not another double Sunday. I'm really pushing the double Sunday today instead of happy birthday because I want it to be real so bad, but I had to do a different route because I messed up the first part kill nice save a bar as well. I would love to get Goku GT out here and just have him heal up on the sideline. That would be ideal. There we go. Guard cancel at the perfect time. Oh, that was that was a real aggressive thing for him to do right there. Just jab me out.  You already got a spot on the team, my dear.  Sparking. I'm not afraid of no dang sparking. Oh, those lights are still rapid fire as ever. That was real good. Real good stuff. No, whisk me away. That's fine. That's fine. In fact, it's so fine. Goku GT just powered up. Oh, we clash with a Vegeta. That's a bad place to be. Clashing with a Vegeta is your death. There we go. That's an aggressive place to click a button and he did it up. So now we get to put some pressure on. He actually back dashed. Let me show you why don't you don't mess with my teammates. Super Saiyan 3. Why is this character so sick? Did they really have to give him Super Saiyan 3 on his Kamehameha? No, they didn't. Oh, I tried clicking a button. That was real brave of me.  It's amazing how those two correlate a lot during this set. What can I do here? No, wrong button.  You know I'm gonna do it twice just in case you click a button. Oh, skip the outro. It's okay. We've seen it a lot, but it's still gorgeous. What a great outro.  Oh, that's it. That's not good. That's not good. You can't do that. I always forget. I'm like, we're close to the corner, but not really. Oh, he was, man, he was just taking forward. He really wanted something.  Sliding and this is where the mix continues, boys. Vanish at the first sign of danger. Oh, pound stomping from a mile away with that light. It's time to be looking at if we can get Goku GT out of here. Oh, get that out of here. And this is beautiful, too, because now we can wait a little, get the snap. I know we're gonna have to stay out, but get off of me, Vegito. All right, we're out. Beautiful. You can't have asked for much better. You couldn't have asked. You can ask for a better competitor on the mic, though. One that understands English. Oh, please, Vegito, don't do this. Actually, wait, no, he had, he had sparking activated. Take all the time you want. That was a really good down heavy. I didn't think he'd suspect it. I thought since he had the assist out, he'd be a little more, you know, he's got the finger on the trigger. Oh, keep the backup coming. I'm looking for that Zamasu. I was about to say it. I was about to make the claim that he was gonna Zamasu me. Get down to the ground. Oh, no. Oh, come on, dude. Oh, no, that's supposed to be a vanish. Can he kill with three bars? Is he gonna get three bars? Oh, he absolutely is. That's Vegito. Don't click that button. That's something he's been loving doing recently. But he's dead. I know we're only Super Saiyan one, but we got to do what we got to do. And three bars for the knockout. I'll take it though. A knockout to knockout. GT Goku's putting in the work, man. It really doesn't get better than this. I don't know why I clicked Dragon Rush. Don't don't mind me. I saw him jump. I was like, this is it. Everything started to make sense in my life. Now, if you wouldn't mind, can I get a little bit of that snapback pressure? Is he gonna level three? Wow, I just really let him go. That's all that was real risky. Now, we're good. We good though. Over here. Over here. It doesn't matter. Ooh, why does blue Vegeta always come out with like full health? I just realized this. Oh, wow. That almost crossed me up. Dragon Rush. Just the confidence on the walkup Dragon Rush. He took six steps in my face and said, you know what?  Big Bang Attack. Why are you throwing those out for?  Never mind. He's getting real fancy. Did you see the beam catch the key blast so that go? I slow that down. Me in the future, I'm gonna have to ask you to slow that down. That was beautiful. I mean, it was completely accidental. I don't know if it mattered. All I saw was the the effect. You know what? We're going we're bar dock players.  There's a lot of recovery on that if you don't hit and that that can be bad. What I should have done is saw that I missed and then blown myself away. That would have been a nice one to do. But now we're just locked into combat with Vegeta. Let's see. Does he Super Dash?  Man, that was a quick one. Goku GT just laid the smack on him. Oh man, thank you so much to my opponents for the games. It was a blast. Had a lot of fun. I dropped that Spear Bomb combo but that's okay. Actually, you know what? I'm in training mode anyway. Let's just hard cut to when I do that combo. I'm gonna show you the most common route for getting to that and that's by using his combo to go into his Spear Bomb and then chain after that. So as an example, this is the combo you will see most of the time with Goku and after that you just Spear Bomb into him. It should work.  This is pretty typical in anything and go into your supers. Obviously, this right here won't be a touch of death. It'll be pretty close. Maybe I could have gotten more damage with the upwards coming at me.  In fact, maybe the upwards coming at me on matter there but that's really all you want to do. You want to make sure you're using this move here and to clarify, you're not hitting him with your head here. Let's see what happens when. So this is me when I go in the direction towards him. You can see he doesn't bounce up high enough but hypothetically, if I were to hit him with the backside of the beam like that, he goes a lot farther. So that's basically why that happens. And that's how you can implement that TOD. Now we can go ahead and get into the ranked matches. Hey, so people that made it to the end of this video, there was a time cut. I decided I put that at the beginning of the video so that people would know what I was going for but now that you're here, I guess I can do the outro. Thank you so much for watching. Make sure to go down below in the comments. Let me know how you're enjoying Goku GT on this fine day. And also, if you like the content and the channel, make sure to hit the like button and subscribe, maybe even share it with a friend. I also have some other videos up on your screen right now that you can check out if you're interested in them. Other than that, I'm Dr. Dwaya. Thank you so much for watching this specific video and I will see you in the next one.


You know in a lot of ways I feel like life is just getting started for me. I have all the energy I've ever had. I'm grateful that my body is still strong and I'm able to do all these big athletic adventures. I have so many ideas for what I want to do personally and professionally and I also have no idea what I want to do personally and professionally. You know I wake up every day with a blank slate and I think to myself okay how's today gonna go? What am I gonna do to make the most out of it?