Hi all 🙂
Wow! every time I start a new project I get some comments of concern from the blender community about myself spreading my code time across them :). I have started many projects since I got involved in Blender development:
Volumetrics, a smoke simulator, GI pathtracing (unbiased), GI photonmapping (biased), Bloxel (Blender voxel system), a small patch for using object groups as a larger manager and now SPH particles, among them currently only Volumetrics have gotten into trunk because Matt Ebb got involved, rewrote everything and put his skills on it (thanks to him). Luckily Daniel Genrich has also integrated the smoke simulator of Niels Thuerey independently.
I have stated many times that my main approach to Blender is as a CATALYST: Due to my internet issues (low bandwith/speed: believe me I don’t know what web videos are 😦 , working near isolated, no access to IRC chats , live talks, etc. ), I could not directly commit to the blender sources or have my own branches. Instead, I have to rely on core Blender devs (Like Matt has kindly done with volumetrics) to review and commit my code. Sadly one of the hardest stuffs for a programmer is reviewing other’s code; that’s perhaps why in the Open source world there’re so many redundant applications (millions of sound players,text editors,3d apps, etc, etc) many of them of low quality/unfinished simply because it’s often easier to write everything from scratch than to dive into existing projects (you have to learn its arcanes) and focus development on them (like blender have succesfully done attracting 3d devs). What is the best way of learning a foreign language? it’s not to pay a teacher or watch lots of courses, no, the best way is to get thrown in that country where that language is native and you must learn it or die : I bet in a matter of months you will speak very fluently that language ;). The best way for me to master Blender is to tackle projects in many fields of Blender that will force me to go to different areas of its source code. This will allow me to build a global idea of Blender inner working, that’s something you simply won’t get reading the whole source code even if you have the lifetime for that, I could focus on one project at a time but if I had done that I’m sure I would have quitted blender dev long time ago: is simply boring. I’m not a coding machine, in order to move on I need to feel JOY about what I’m doing. And what motivates me the most? Encouraging comments, positive reviews/feedback, someone using/needing what I’m doing, support , resources and a place to render my creativity :).
With every new project I tackle I learn new skills that are very difficult to get when working alone. I try as hard as I can to deliver a good PROTOTYPE in order to attract the attention of a core dev; I can not say: -“!Hey, integrate this please for tomorrow!”.
My projects are unfinished prototypes? non standard? delivererd too early? I’m not hiding that, actually I’m proud of that, for me they have lasted an eternity due to the large amount of new knowledge I had to gather for doing them (more than in college), but I’m still a newbie in Blender development! and in graphics technologies and in open source! I started blender programming two years ago (April 2008): for some peoples it can be slow, but this is my rate of learning skills nearly alone, and also in order to make the life or the reviewer easier the code should remain like that, a functional prototype. In order to master one field of knowledge a person have to spend an average of 10 years, I WISH to became a Blender pro and if life allows me I’m willing to pay that price in time, because many things that a blender user/artist forgot is that a developer DOES pay a price for it (as well as an artist do, of course).
I don’t have another blender dev in miles surrounding me, sadly, so I can not walk to someone else place and say: -“Hey! how do you add this button? How do I access this data from that?”, and lots of other minimal questions. Sure, there’s the bf-commiter list, but I can not flood it and bother a BUSY blender dev with them (my only way of communication), I simply have to do my homework and learn it the hard way: try and error, and this takes time.
I hope to have some days power over the Blender sources, creating my own branches, reviewing others patches and adding new functionalities without constant assistance of other core devs, in other words becoming myself a core dev, but I simply will have to EARN that, I will be the first one to forbid myself to apply for that until I consider myself skilled enough to tackle TO THE END whatever project I choose.
But I’m not worried, I trust in myself and know that I simply need time and plenty of MOTIVATION and JOY about what I’m doing. Not long ago, before I started the photon mapping stuff (which happen at the same time as Matt and who has allowed me to reuse part of his code) I was enjoying deep creativity but right after a motivational crisis that I have only shared with my closest friends. Indeed, while Matt was polishing Volumetrics, I saw in the horizon its completion with less and less for me to contribute in. That was good for Blender but bad for me because I have a DEEP CREATIVITY NECESSITY that I need to keep constantly fed otherwise I risk emotional collapse. (go ahead, call a doctor, I’m crazy 😉 )
So you know now my secret, I really NEED to create stuffs, as soon as what’s left for finishing a project is the “plumber job” of integrating it into Blender I start to get demotivated: not saying I will not finish it, it’s just that I need to jump elsewhere in order to gather new strengths and skills that will allow me to comeback and ease that pain later. One of the best things that have happen in my life was using blender as a dev, because it will keep my demon busy for the comming years ;). Since my childhood I have never gotten enough by watching TV, reading, playing. I
used to write books, draw, paint (on canvas), sculpt, make chemical experiments, animate with the corner of my books (sorry, no computer back then), and many, many small things that I sometimes miss 🙂
I think my main contribution is not really these patches, but the HOPE they bring: I’m not just poking in a forum saying: -“I wish blender have implemented an integrated antivirus because it will be helpfull for….”
NO, I’m showing HOW blender will LOOK LIKE and BEHAVE with that feature, I’m saying : “look at this, this is very DOABLE and might be used as a REFERENCE or simply a HINT of where to start or don’t start ;)! “the first thing an open source dev does before start a project is to search for prevously existent attempts, and the more they find, the more probable he/she success will be (aside from his/her skills of course) so by now, when a dev will google for volumetrics, pathtracing, photonmapping, smoke and SPH in Blender, Google will not answer only forums entries 😉 .
Sure, many of those projects can eventually be made without me as nobody is a God here, but I’m sure volumetrics would have been pushed further in the future if I had not started “True Volumetrics…”, and also my first smoke
simulations rendered in Blender have touched many peoples hearts and contributed a bit on making Daniel’s smoke to come true. GI has also shaken some minds about Render Internal development much more than years of asking for it in forums, the Pathtracer project contribute a bit to revive the interest in Luxrender, and what have happened with Luxrender for me? It’s an awesome project, but so complete at the point I planned to join it that it simply killed my motivation (Second deeper emotional crisis). For joining it I have to do only buggs correction jobs, that is OK and very preciated and needed but simply don’t take my creativity factor in that equation 😦 I will come back to it when I get enough skills to tackle a big project in addition to bugfixing.
And last but not least, something that many people haven’t realized: Every submodule of Blender is ALSO an open source project and is not only the full responsability of the main dev of that area but of every interested dev: the
more devs working on a module, the better it will get, and I have always been open in my projects: I welcome every dev who want to take it and improve it. Help me, show me, teach me and I will do my part 🙂
Don’t worry, I don’t have a deadline and while those projects take time before completion, I keep making the community dreaming but not an ethereal dream, a very real one that will eventually come true: I’m working hard to become a pro.