This is our first newsletter since we added epub format and opened newsletters to more
Patreon patrons, so for their benefit, we’re reprinting Chapters 1 & 2 of the serialization.
Chapter 3 will appear in the next issue. The promised proposal on the “infrastructure project”
has become the “Film Freedom” proposal, and we’ll also look into how we use Inkscape, Synfig,
Gimp and other tools to produce the many 2D graphics and animations we need.
Lunatics!
Chapter 1 — Leaving Earth
Little Georgiana Lerner dug her hands deep into the rich black soil. The setting sun cast shadows through her auburn hair as she crawled underneath the oak tree turning to look up at the sunlight shining through the dark green leaves.
Georgiana loved being in her garden. She had planted pumpkins last year, and this spring she had grown lettuce, radishes, and marigolds. The lettuce and the radishes were gone, eaten in salads with dinner, but the marigold leaves tickled her feet as she rolled among them, leaves sticking in her hair. It was warm now, but after sunset the night would turn chill so she had come early instead of sneaking out after dark as she had originally planned. She sat up and dug in the earth with her hands uncovering a pink earthworm.
She threaded her fingers through the dirt, lifting the soil to her nose and then dropping it to fall in clumps back down to the ground. Georgiana loved the smell of the earth. She wondered what would happen to the garden when she left. Would someone else take care of it, or would it grow wild sprouting up the odd radish or pumpkin every other year? No matter what happened, she would never come here again.
They would be leaving in the morning. Daddy was already setting up house. She had said goodbye to Daisybell and Katz the goats, and the big old dog Brownie. She would miss Brownie the most even though he wasn’t her dog. She knew that he would be sure to see her off when she left tomorrow morning.
She lay down and tried to hug the ground but all that she succeeded in doing was to tickle her ear on a blade of grass, staring at the earthworm who shimmied forward trying to dig his way back into the dirt. She lay there for a long time, watching the leaves moving in the wind. She lay still as an ant crawled across the back of her hand. Then she turned over and stared at a magnificent landscape of clouds turning pink and orange in the pale blue sky. “Orange like my marigolds,” she thought.
The moon had risen. It shone a pale white bathed in blue. “I wonder,” she thought, “if I had a big enough telescope, could I see Daddy there?” She was considering climbing the tree, when a beep on her belt alerted her that her mother was calling. She pushed the blue crystal switch and heard her mother say, “Georgy, dinner is ready.”
“Be right there Mama,” she said standing up and dusting the leaves and grass off of her clothes with her dirt-covered hands. It only succeeded in getting them dirtier.
She looked up. “Maybe right now, Daddy is looking down at me in my garden. Then he’d be watching me, just as I’m watching him? It’s almost like we’re together, and in just a little while,” she said, “I’ll be on the Moon too.”
Chapter 2 — Moon Girl
When we left home, there were people all around. Mama put a hand on my shoulder and led me through the crowd. There were people with headsets and cameras watching us. They yelled as we passed calling out, “Moon girl!”
Everywhere we went it was, “Moon Girl! Moon Girl!”
Mama stopped and talked to a report who then bent down and said, “We are here with Georgiana Lerner, the Moon girl. Can you tell the audience how it feels to be the first child to go into space.”
“No, I don’t think so.”
He laughed, “I think that she’s a bit shy?”
“No, but I’ve just never been in space! You should ask me after I’ve gone there.”
“Well, once you’re there, then you won’t be around for me to interview. Unless you promise to give me another interview when you get back.”
Georgy frowned, “I don’t think that I’m coming back. You’ll have to come up to the moon if you want to talk to me again.”
The man looked at the camera and said, “That would certainly be an experience to look forward to.”
When we landed, there were also crowds, but these people called me Cosmonavta as well as Space Girl. It might have made sense if I was coming back from space, but I had only had training classes. Walking on the bottom of a swimming pool in a space suit and catching rings that they dropped from the surface. It was great fun, but it wasn’t space. It took work to move around in that heavy suit, and once I had bounced up, it was sometimes hard to come back down on my feet again even wearing weights. I would fall forward and land on my chest.
The first time I fell, Mama rushed forward afraid that the suit would break open and I would drown. But when she heard me laughing, the sound echoing in my helmet, she calmed down. The seals held. Jumping is the best way to get around in the water. It is much better than walking. Mister James said I was smart to figure that out so soon. He said there were plenty of adults who tried over and over to walk like they did on Earth rather than leaping. Mister James would know. He had been to the moon lots of times. That’s why he was our trainer.
We took another flight and I woke up in time to see the sun rise over the water. Bright red-orange light spread across the waves in an arc. It shone through water that was as green as glass. Mama thought that it was very pretty. It made her cry. I think that Mama might miss the Earth even more than me.
The water in Istanbul was as dark as my hair ribbon. I took my ribbon out of my hair and tied it around Tina my dolly. Mama was watching the news, and frowning. We were on the screen. They were saying that I shouldn’t go. That it was unsafe and Mama was bad for taking me. I asked about it, but Mama told me not to worry and then she put in earphones and turned my screen on to a cartoon.
Mama told me to sleep, but I was too excited. There was water and land and it was sunny and bright outside. I was tired when we landed though, and I fell asleep as soon as we reached our hotel room.
I woke up in a big bed with Tina lying beside me. Mama had ordered breakfast. There were bananas and berries and oatmeal. The sun wasn’t up yet, so I took a bath. Then we left for the train station once it was light.
There were no crowds when we boarded the train for Kazakhstan. We walked on and went to our private car without anyone watching or calling out Cosmonavta. I asked where the people were, and Mama said that they were probably waiting at the airport. That is why we had decided to go by train.
“Why are they so interested in us, Mama?”
“Because you’ll be the first little girl to go into space,” Mama said.
“Why didn’t we go up in New Mexico like Timmy and his dad?”
“This rocket is safer. And it won’t shake so much on the way up.”
“But I like shaking!”
Mama smiled, and patted my hand.
We were the only ones in our car, but other people passed through from time to time to go to other cars. One boy tugged his mother’s shirt and pointed at me. He also called me “Cosmonavta” before his mother pulled him away for being rude.
“Mama, why are people always talking about me?”
“Well, when you are the first at something, there are lots of people who find that interesting.”
“Why?”
“Because if you can do it, they think that they might be able to do it too.”
“Why couldn’t they do it? Why didn’t any children go up before?”
“I guess, no one thought to take them before. And there are a lot of things that just weren’t made yet like child-sized space suits and or little pink launch couches.”
“Oh Mama, It doesn’t matter what color it is.”
“I know, Georgy.”
“Can I read my book now?”
“Of course,” she said rising to get the case from overhead.
Mama had only let me take one storybook. I had more stories on my computer to read, but it was nice to have a book with pages. The one that I brought had a hard cover with gold and silver spirals on the front. The pictures were painted in pinks and greens with dragons and flowers, and little girls and a little blue bird hidden on every page. In the story about the girl and the goblin, the bird was in a golden cage hidden in a dark cave. That was the saddest picture I think, for the bird at least. I asked Daddy if space was dark like that cave. He said that it had never seemed that way to him. Daddy said that space is bright. It is full of stars and sunlight, and the Moon. He said that when people looked up some see the lights in the sky while others only see the dark.
I also had a set of wooden pencils, and I used them to draw pictures. I still have most of them. Pictures of cars and camels and trains. Pictures of horses and dogs and mountains and airplanes and of the blue sky. Those are the strangest ones. The ones with the blue sky. I can hardly remember seeing the sky like that. I remember the stars from Earth, and even the cloudy days where it seemed like you were under a roof of white cotton, but the blue sky. That’s like a dream to me now. Now when I look up at the sky, it is always black.
Chapter 3 coming in January!
Monitor Graphics for Mission Control
Our Mission Control Set is based on the real Russian Mission Control Center near Moscow, but updated a bit for the time. The main feature that leaps out when trying to create a realistic-looking MCR, is all of the monitor screen! There certainly are a lot of them.
Our set has 26 individual workstation, each with 3 16×9 monitors, for a total of 78 monitors on the floor level. When you add the 5 large displays at the front and the long ephemeris data display at the top, we have a total of 84 monitors that need graphics to sell the shot.
That’s a lot of work, even if most of the monitors don’t have to be animated, and yet we also need to create some impression of motion.
I started by designing a grid of 16 static “hero” monitors, with somewhat specific ideas for what they might be displaying:

This took quite awhile, and after looking at results from some other productions, I decided that it might do to have much simpler designs for some of the outlying monitors, with just vague impressions of shapes:

Using some of the same graphics, I also created some short animations, which can be used on a few of the monitors to create an impression of motion (these are just supposed to look good, they really don’t represent anything in particular):


I also realized that one easy way to make very convincing desktop displays would be to simply screen capture my own desktop, with assortments of different windows and desktop settings, and scale this down. Of course, this produces very convincing, if somewhat mundane displays:

So far, that’s 25 + 16 + 9 = 50 static displays. And I’ve so far created four animated displays, using animation from Synfig and also screencasts made with Vokoscreen of real applications running. I might decide to repeat some of the less prominent screens, or I might just create more screen captures, but either way, it won’t be too hard to fill up the remainder of the 78 console screens we need.
The big displays at the front call for a little more work. Here’s the ephemeris display I created:

After that, I need to make some renders of shots that are supposed to be taken by the fixed cameras at the launch site and on the space station, which will appear on the big monitors. Also, following tradition, I’ve created “patch” graphics that will be displayed on two of the monitors. So at this point, I’m getting pretty close!


“Patch” or “Seal” graphics displayed on the big monitors at the front, for the Lunar Transportation System international partners and the Soyuz SF-19 flight on which Hiromi, Georgiana, and Sergei go into space.
Infrastructure for Free Film
In our last two issues, I identified some problems with workflow, asset management, and version control for Lunatics! production which made it clear that we needed to put some effort into infrastructure. We also have other infrastructure problems, such as sales and marketing, managing accounts for the way we plan to distribute any funds that we raise, and so on.
Software Development
In the November 2015 issue, I discussed the need for a differencing algorithm for graph-structured data formats (which would include the Blender format), and the need to create a merge-based version control system. I left a lot of details out, and I noted then that time and money is limited for us to work on this. For that reason, I’m simply going to outline the solution here, although actually following through will probably have to wait until other priorities are relaxed — or until we can get more help.
But in essence, I’ve worked out the process by which we can develop what I’m just going to call “GraphDiff”:

- Implement the basic GraphDiff algorithm as a Python library that operates on a generic Ordered, Directed, Acyclic Graph (ODAG) representation, and document the GraphDiff library API. This will generate generic operator scripts for patching files based on detected differences.
- Add appropriate handling for “diff3” behavior — comparing two modified versions to an original source version, and computing merge scripts as well as detecting conflicts that will require human intervention.
- Use Blender’s Python API to map Blender object structure into a suitable ODAG representation for use with GraphDiff and implement patch operations based on the generic patch scripts from GraphDiff.
- Create a command line tool, “BlenderDiff”, for manually executing diff, patch, and merge operations.
- Document this development process as an example for developers who wish to create tools for other filetypes with ODAG structure.
- Possibly create a generic XML-file diff tool. There are some XML differencing tools in existence, but GraphDiff may produce better results, so we should test that.
- Implement GraphDiff and BlenderDiff handlers compatible with the Bazaar version control system’s API. This is by far the most intuitive VCS for this task, as it is the only one that provides a regular Python API for abstracting the differencing and patching operations. The resulting Bazaar implementation would be familiar to use for anyone with experience with the regular Bazaar program, but would “magically” handle Blend files as well as text.
- It is also possible that GraphDiff could serve as a basis for a whole VCS, since a filesystem can also be represented as an ODAG, but this would require rethinking the whole VCS problem and would probably have a very different user experience from Bazaar.
Where it would go beyond that, I won’t speculate. But this would be the basic outline for developing a robust VCS for Blender multimedia projects.
Since at present, the only person we have available with the necessary Python coding skill is Terry Hancock, who is otherwise very occupied, this would not be something we could start on for several months. Terry is occupied not only with production for Lunatics, but also has another programming project, Lib-Ray, which has to be completed first. “Old business before new”.

So this might be an appropriate juncture to talk about what’s going on with Lib-Ray.
Lib-Ray was conceived originally as a solution to how to release Lunatics! episodes in an appropriate physical format that respected the Free Software / Free Culture tradition of which it is a part. The DVD format was unacceptable mainly because they don’t support high-definition video, although they are also a rather opaque format for video. Blu-Ray is even more opaque, it’s essentially impossible to avoid issues with DRM, and mastering Blu-Ray disks requires paying tribute to the copyright maximalists who designed it. It’s not impossible that we’d ever release on Blu-Ray, but we’d be holding our noses.
Meanwhile, digital video is not that hard, and we have plenty of good standard formats for it. So, the real issues are:
- Setting video and audio quality
- Creating player software suitable for computers or embedded hardware players
- Creating a suitable menu system, similar to DVD or Blu-Ray, for “Extras”
- Handling the filesystem layer and establishing hardware standards for distribution media
Setting up the basic video format was easy, and was completed in 2012. The sticky bit is creating the menu system and playback software to support it. We did create a basic C++ library for handling this, based on the Rocket C++ library for the menu system, and VLC for video playback mode. This also basically works, although there is a bug that causes it to crash on shutdown (admittedly, that’s the best time to have a crash, but it still looks bad).
What remains unsolved is adapting the on-disk HTML/CSS menu format to the RML/RCSS internal format for Rocket (which requires parsing and reconstructing the files), and implementing a control interface appropriate for an infra-red remote — the so-called “10 foot user interface” that DVD and Blu-Ray players implement.
This is not a huge mountain to climb in software terms, it’s just a lot of testing and coding. Some of the test cycles are a bit awkward because of the necessity to instantiate a Rocket instance in order to use any of the Rocket API on the files (can’t apparently run it headless, although we might be able to do that with more C++ work).
So at this particular moment, we’re snagged on implementing the “spatial navigation” behavior for the infrared remote control (or for keyboard arrow controls). This is the way that you hop from button to button on screen. This is actually harder than you might think, because the computer doesn’t really have an intuitive grasp of the screen space, so you have to represent that with a node-link graph between buttons. Again, not a showstopper. Just work that isn’t finished yet.
Also, incidentally, Lib-Ray’s player software code is homeless now that Google Code has shut down, and we have to figure out where we’re going to put it now.
Miscellaneous Scripts
Other than this, I have identified a number of smaller scripts for Blender that would be useful, such as scripts to compare character Armatures (note that the GraphDiff library might be helpful for this, since armatures are also ODAG structures). If we’re going to continue using Resource Space as a DAMS, it would be useful to write scripts to integrate it better with our version control system and probably with the Blender Asset Management API — assuming that gets finished in this timeframe as well.
Packaging, Documentation, and Tutorials
The “Two-Minute Tutorials” have been a success, and we’ve also been seeing a little bit of revenue from the Synfig Tutorial that Terry Hancock provided voice-over for in 2015. So we are seriously considering expanding the range of tutorials that we produce. These would include both short, free tutorials like the Two-Minute Tutorials, but also longer, more in-depth, paid tutorial “classes”, made available through Udemy and/or Gumroad (the same sites used for the Synfig project).
In addition to producing such content, I’d also like to simply make it easier to find tutorial content produced by others, as well as creating easier access for packages and add-ons created by other free-film producers and free-software developers.
Film Freedom Project
But where should we set up this work? We don’t think it’s appropriate to use the Lunatics! site for this, since it should remain focused on producing the series.
So we’ve decided to create a new site to host all of these infra-structure projects, to be called “Film Freedom”:

With a simple mission statement:
To serve as a resource for filmmakers making films with free-software tools and/or releasing under free-culture licenses.
The site for this project will feature short tutorials, like our “Two-Minute Tutorial” series, longer paid tutorial “classes” through Udemy and Gumroad, resource lists of available tools, projects, legal advice, and more. It will also eventually host the Lib-Ray and GraphDiff projects, and provide extensions, packages, and so on for projects that don’t have a stable hosting site. The idea is to make the site we wished we had to help us get started on Lunatics!
At one level, I’d like to build and document an end-to-end free software platform for filmmaking, but there are two major problems with that. First, there are a wide variety of filmmaking styles ranging from live-action documentaries to 2D animated cartoons, and no one set of software tools is going to be appropriate for all of them. And second, the producers are notoriously picky and want to go their own way — it’s a case of “herding cats”. So it’s probably not a good idea to try to pick winners among the software tools, but instead to list all of the ones we can find out about, and to offer as much information as we can about them. Ideally, we’d like to solicit input from other free-film producters to talk about their favorite tools, and tell why they chose them.
Right now, that’s all we can say! More detail will be coming in our February or March Newsletters, as well as being announced on our Production Blog.
Other News
- Internships
- Travis Souza is working some more on the project after all, expanding his role into other areas besides set modeling.
- Newsletters
- Obviously, we’re still playing catch-up. This newsletter will be the first to go out in both ZIP archive and EPUB formats. We’re converting the 2014 and 2015 newsletters to EPUB as well, and the January 2015 EPUB should already be out by the time you read this.
Until Next Time!



