๐ŸŽ™ Interview with Sybren Stรผvel, developer @ Blender 3D

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome everybody to the ion codes podcast this is a new series that i've just started and in this podcast i'm going to interview interesting people from the software industry and from academia today we're going to talk to siberian stufful who is a software developer at the blender institute and you may also know siberian as dr siblin from our discord server actually sieben is really a doctor he did a phd in computer science and actually i was his phd supervisor so that's how we know each other and for some reason we are still on good terms uh so uh thank you very much cburn for joining the podcast today thanks for the introduction aryan um so i'm sibling and i've been working at blender as a software developer since 2016. i've been blender developers since 2015 because during my phd uh we were looking at animating and simulating dense groups of people and that simulation i ran inside of the blender game engine and that game engine didn't really do what i wanted it to do so i started hacking it around and making it produce the information that i needed so i started sending in that as a patch um and the guy reviewing these patches uh was uh campbell let's just poke him the camel camel is in yet yet have you looked at it campbell um and after petra 3 he got annoyed by me so he was like here you have your commit access and now do it yourself so that's how i became a uh uh a blender developer and blunder is is based in amsterdam right it is yes so it's it's founded by uh uh dutch guy right yep now yeah when was blender founded yeah well blender the software is older than blender foundation or blender institute it started in 89 already as uh ton started his company neogeo which was a 3d animation studio that uh it started in his attack and and basically it grew quite rapidly and became the the biggest company of its its type uh at least in the netherlands uh and then uh blender started like blended the software he started it in january 94 and then in 98 um basically neo geo clothes had to close their doors and um tom basically started a new company not a number with the intent of developing linda further that also became was when blender changed from in-house 3d application for some commercial company to being free to download for everybody so that's when it started gaining a bit of a community then in 2002 not a number went bankrupt for various reasons and all the intellectual property of the company was still owned by the financial backers of the company which meant that it was no longer accessible for anybody uh so that is when tons started what was basically the world's first crowdfunding campaign right and they collected a quarter of uh with a quarter of a million users so by then even before blender was open source it already had a lot of fans um they raised over a hundred thousand euros in in seven weeks within two months yeah um and that money was spent on basically buying back the uh intellectual property and to make it open source so yeah what what is blender's main model of survival uh well at it changed over the years so the first production was elephant's dream back in 2005 and i think that was funded by selling the dvd beforehand so right before the production started you would already pay so it was kind of a crowdfunding as well except that the word didn't exist back then um but it was kind of paid forward so when you when you pay early enough not only do you get the dvd but also you you would get your name in the credits as one of the the uh financiers of the of the project right and that of course is also really nice for people to have their own name uh in that film um and then blender institute was founded because tom thought well this is a nice idea and a bunch of other productions were made like big buck bunny and sintel but it was very difficult to to get everything financed and it's also very difficult to like basically keep things keep people paid between production so that didn't happen so it was really like scrounging people who wanted to make and were able to to help with the production to make it but then afterwards like their contract couldn't be extended because uh there was no money left right it sounds very similar to what also happens a lot in the game industry where game companies basically hire a team for a particular game but then basically at the end everybody's laid off again and yeah the disadvantage as a business is that you kind of have to start over again from scratch when you start a new project and often the good people already moved on to different places so they're hard to find so that's that must be really challenging yeah and so you you mentioned uh blender foundation and blender institute so what can you explain about what what are those how do they operate blender foundation is is literally a foundation it was um started i have to look it up in my notes because i wrote down the history a little bit it was founded in 2002 when um not a number went bankrupt and blender had to be made open source that was when then the foundation was started and still it is the owner of the the blender sources so it protects it protects the intellectual property um it uh it prod is the owner of the the logo for example so you're free to copy the sources make your own copy of the software but you're not allowed to call that blender with the official blender logo right makes sense and so blender foundation also protects developers so if you you give away what you write in in terms of software to blender foundation and in turn the foundation protects you when say some big corporation comes knocking on our door saying well you copied our technique well then you don't have to defend yourself as an individual um but the foundation can help you with that right now that's a nice uh nice structure and and then the the institute the institute is for the the practical stuff so it's the the working business so the institute pays the rent for the building we work in it it employs people so the foundation can give a grant to to specific developers to do a specific job but when you want to have like a contract and have an employer that's blender institute right right and recently another entity was spawned which is the blender animation studio which is now separate so the animation studio runs blender cloud which was created to give more continuity it's a website where people can pay 10 euros per month get some discount if you pay per half year or year yeah and then they get access to all kinds of training material behind the scenes of the production and the training is also done by the people making these productions so you really get professional professionals talking about what they do and because of that because of that structure of having subscriptions all of a sudden the studio had a more steady income which meant that people could stay on board and we didn't have to lay off and then we are and then etc and then there is the foundation that received donations right and that was always possible but a few years ago we really wanted to make that bigger and wanted to get the make it normal for companies who make money with blender who also financially depend on blender being available to them to make it normal that they give to to the blender foundation so if you want to make money with blender that's all fine if you if you want to do it um like if you can use it for free make money keep the money that's all fine but if you want to contribute to the future of blender make sure that bugs keep getting fixed etc you can get a development fund membership right yeah i think for companies it makes a lot of sense to do that because if you are in if you're using blender professionally if you're impart financially dependent then on blender being able to provide what you needed to do then it makes sense that you pay for it so that you also help support it in the future and so that it's it can exist also in the future yeah yeah exactly yeah hey hey let's let's talk a little bit about the the software design aspects of blender because i think that's particularly interesting honestly if i look at let's say i mean people develop lots of different kinds of software applications i guess if you're developing a graphics tool like like blender or even 3d studio max or maya i mean those are some of the most complex tools out there i mean they directly interact with graphics hardware as you said there are lots and lots of different components they have to operate together they often have some kind of scripting engines lots of importing exporting facilities render farm support you name it so there's so many extremely complex aspect to being able to build a software like that and it and and how to make sure it doesn't crash basically every five seconds so can you say something about the overall software architecture of blender what what is the blender way of approaching that problem how do you solve it i think a lot of this goes back to tons original original design um which you can find back in for example the the file format itself um it is basically a dump of the memory of blender right and then some description of what that dump like what that memory looks like and then when loading it in you can just load it back into memory you know which version of blender saved it because that's also stored in the file so you can do some versioning and upgrading of of of the memory to adhere to what is currently running in in the software yeah and then it keeps working so you can still open a blender 1.0 file in the in current blender may not have all the same possibilities but sure still and this is because it's like based on data blocks so a mesh is a data block an object is a data block and it's very all very data driven and that is what you see a lot in blender so for example when you make a user interface many add-on developers want to know like how do i create a slider how do i create a checkbox so i want to have that here yeah and your life becomes considerably easier when you realize that it's blender is more data driven than that so instead of saying i want to input meters here you want to create a property of a floating point type and add some metadata that says this is a distance and then you just tell blender oh just draw this property and because it has all that metadata attached to it it knows that it should be a slider and in that metadata you can also give a minimum maximum that kind of stuff and it will happen automatically right so so blender kind of decides what the interface is going to look like based on the data that you give it that's that's exactly basically what you're saying yeah yeah okay now and this is like this last part that how you define these properties how you define that metadata is something that isn't wasn't there in in the very very first version so uh blender has a dna in the rna system yeah that was going to be my next question because my software doesn't have dna so i was really curious what that actually meant yeah um so i let me start by apologizing to a biologist or anybody who knows a bit about genetics i don't think they're watching this channel so no worries um so that those data blocks that i talked about that is the dna of blender and it's it's um to go into a bit more technical details it's written in c and they're just see structs right they're defined in a certain files in blender that are then parsed by a thing that can just parse the source code and that can write descriptions of that to a blend file as well so it actually parses the sources and and stores the structure of those structs in the blend file so that when you load it you it can be parsed and you can say things like if this truck doesn't have a field of that type then we go and do something to to set the defaults correctly or to compute the defaults from some other property for example recently we added a three-dimensional scale to custom bone shapes so it used to have one number for the scale and now we want to have a vector so you can scale it in xyz directions independently that has to be initialized from that original uh one dimensional scale and this happens in the version in code so that is what the dna system takes care of so with blender so you have an immense goal code base i i imagine and you have many different contributors um how do you manage that and how do you how do you ensure some kind of quality process with all these different people that are involved people that are not in the office or they're not part of blender so so how do you go about that uh the one thing that's really important is code review so um many of the contributions come in from people who only do one or two contributions so there's a code review system in place so everybody can shoot as a patch and get it reviewed then there's the module system that gives us some guidance as to okay which part of the code is being touched by this patch what's the the topic of this patch and then it can be tagged with that module so that people can pay the right people can look into it what i try to do with the animation module is that i include artists so it's not just developers who are a member of a module but it's also animators and regulars or members so we'll certainly also include them to get a good feel for how useful a feature actually is like if it's a very technical thing like um i've reduced the cyclomatic complexity of this function by 25 points and uh it's still doing the same thing yeah then it's not that interesting for artists but when it's a new feature or a change in behavior uh that's really important yeah and and one of the big things of blender is obviously that you have extensive uh scripting built in everywhere basically and blender so you said blender was built in is built in c or maybe even c plus plus uh originally built in c and we're moving more and more code to c yeah yeah and and and the scripting is all done in python right yes how do you maintain that integration and how do you make sure that it it still keeps making sense because with scripting i mean you give a lot of freedom to your users but it's also very risky because they can break all kinds of things and it may lead to lots of support issues and other things that maybe you didn't think about when you were designing the feature when you added the scripting if you put your mind to it it's very easy to crash blender with with scripting you can generate millions of objects uh that are way too big and clones of each other and not efficient and that will just if it doesn't bring your computer to its knees it will certainly not your gpu won't like it when all that data is uploaded to it um but still it it helps a lot so if you if you think about what should we do in cc plus and what should we do in python then as a rule of thumb it still do it in c or c plus plus and python was really intended to build menus build the user interface glue things together and not so much as to provide core functionality of the program yeah that definitely makes sense also in terms of performance of c plus plus is much higher in of course than than python yeah the idea of tom was also that like the user should be able to do what python can do and vice versa but like what the user does should in theory all be in um in c or c plus plus c bin you mentioned uh dna but you also mentioned rna can you tell a little bit more about that how does that work yeah so dna is really at the core of blender which is why it's called that way and rna is uh something that came later and was given uh a name that also relates to genetics but it's like biologically the relation is different than here basically it's the interface that the animation system uses and that also python uses to access the dna so rna so dna could say this is a float property rna could then says okay this is a float property in rna with this minimum that maximum it is a distance uh or maybe it's an angle and then the user interface will represent it differently so it is the the interface between the core data structure and how the animation system and python interact with it so is it so it contains constraints like uh minimum and maximum length and the type of thing and yes and things like maybe some property gets a setter function getter function uh it can register uh update handlers that are called whenever a property changes okay yeah and this also uh this layer this rna layer also plays a role in the override system so with blender you can open a file you have in memory what that file contains what you can work with but also you can link in data blocks from other blend files so you can load in the character from the character file into an animation file and link it in that means that when you save that blend file it doesn't also contain a copy of the character but as a design and user rule you cannot edit anything that is not part of the current blend file so when you want to pose a character that you're linked in from a different blend file well you can't because it's a different blend right and this is where the override system comes into play so you can say i want to create an override for this armature and then post it differently the animation data gets stored in the local blend file you can still manipulate that object but the real copy actually exists in a different blend file and this is also handled by the rna system what would you say has been the the main software design challenge for blender in the last years i think it is trying to keep things more independent if if you look at a graph of the different uh modules because the source code is not all in one file of course it's separated also multiple files separated all from multiple directories um every directory becomes a library and that is in the end link together if you look at the dependency graph just of these libraries that is a huge entangled mess yeah so it becomes really hard to figure out when you change something what will be the result of that change and i think that is the biggest uh challenge that we have at the moment to to get things more predictable and simpler to work with to have clearer interfaces between one part of blender and the other instead of just everybody calling everybody's functions yeah yeah i imagine that this is really hard to solve because especially if you just basically split out uh the roles a bit more that people are responsible for uh specific sub things they may not they may not be interested in all the other parts and how they work or it may not be clearly on their radar so when you split the roles in that way it might actually become harder to maintain a level of of stability in the system yeah and you can see that in the time that it takes to make a new feature uh ton ton sometimes jokingly says like oh when i was working on blender i could make a new render engine in a weekend and yeah that's no longer possible no i i guess it's the bane of every bigger software product that at some moment you just can't move as fast anymore um yeah and also like it's still the same source code there is still uh sometimes i have i go diving for a bug like i go spitting in the git history to figure out where it came from and sometimes i end up at 18 years ago initial commit wow and yeah one thing that i was wondering about so there's been a lot of developments in computer graphics obviously and over the last decades and now we see uh vr a augmented reality is getting really popular we also see that on the other hand mobile devices become used more and more for uh professional applications as well is not just to check facebook but there are also video editing programs on your on your phone for example what do you think will happen in the space of 3d modeling tools like blender within that regard well there is already a quite a few things going on in terms of virtual reality support so blender already supports virtual reality in the sense that you can start it in steamvr for example and then walk around in your own set you just see the the 3d viewport but then in vr and i think there are a few patches now in um in the review for adding controller support so you can actually pick up stuff and and interact with uh with the scene so this is definitely something that is that is continuing um also i know that there are studios who combine motion capture data with uh and virtual reality with blender so they use a camera rig that is tracked in motion capture so it's actually sitting on top of somebody's shoulder and somebody's looking through some viewfinder right but what they see is what the camera and blender sees and so you get this feel of a handheld camera that is operated by a person standing in the scene which is completely different than somebody using their mouse to move a camera around right yeah similar similar example to with a different technique to get the same result was with um cosmos laundromat 2015 that was released the director took a handheld camera just went outside to the street and started filming the street and the fact that it was street was completely irrelevant but it had a nice texture that could be easily tracked by blender so it was used to create these camera tracks that were then imported into the film uh to get this handheld uh feel to the to the camera motion do you have any tips for our viewers listener on on software development and basically how to become better at it i think most important to get better at at writing software is talk with people talk with friends with uh fellow nerds online for real wherever and discuss like why do you think your code is good what what makes you proud of what you made in terms of the structure or how you approach a certain problem make a list of the assumptions that your code makes and try to really line by line figure out oh wait but because i'm dividing by this that means it shouldn't be zero or because i'm dereferencing this pointer that means it shouldn't be null but that actually means that in like 500 steps earlier some other function was called to actually fill that pointer and try to get just write it down in comments like what does this function assume about the state of the world i think those two things are are really important because i noticed that a lot of bugs occur when somebody has a certain assumption but it wasn't really clear in the code itself so then somebody else comes along doesn't see that that assumption is there breaks the assumption things crash right yeah i think it's it's really hard to uh not think further than the happy flow and basically assume that your users are going to try to break everything and are not going to do the the standard things that you expect them to do and you just want your software to to be able to deal with that in some way yeah i think of myself as a developer who has this on his retina and thinks about the users and what they can do uh but still when i was happy with my code i thought it was done well i gave it to a tester this was back at the different company where we had a dedicated um quality assurance team i gave it to the tester he does two clicks and it breaks yeah mind blowing yeah it also shows that you cannot test your own code yeah as a developer you're working on making things on creating things and making it work and as a tester your aim is to break things and it's such a different mindset that it's really hard to toggle between the two absolutely hey cyburn thank you very much for your time it was really lovely to talk to you about this and i'm really curious to see what is happening with blender in the coming years thanks everybody for listening and joining in and don't forget to subscribe to the channel and hope to see you soon in one of the next [Music] videos
Info
Channel: ArjanCodes
Views: 3,352
Rating: 4.9567566 out of 5
Keywords: blender 3d, blender foundation, blender 2.8, blender foundation software, blender foundation revenue, python software design, blender institute, blender interview, blender dna, blender dna rna, blender 3d modeling, blender 3d animation, blender software development, blender software design, Software design of blender 3d
Id: yrH0lWPGXsc
Channel Id: undefined
Length: 29min 25sec (1765 seconds)
Published: Tue Jun 08 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.