A Brief History
When the Panda3D project began over two decades ago, it wasn’t meant to be anything special. It was just an internal framework developed at Walt Disney Imagineering because they needed a toolkit for handling their real-time 3D experiments, exhibits, and later downloadable games. Those workloads were pretty varied in nature, so Panda3D quickly evolved into an extremely versatile all-purpose 3D engine unlike anything else that existed at the time. Realizing what they had created, the Imagineers sought to share their technology with the academic community, and more broadly, the general public.
Walt Disney Imagineering found their academic partners over 2,000 miles away, with the fine folks at the Entertainment Technology Center, a department of Carnegie Mellon University. Because of the distance, it was a collaboration made possible only by the Internet, but it turned out to be a match made in heaven: Imagineering, which was making 3D experiences, focused on making Panda3D powerful, capable, and flexible, while CMU was using the technology educationally and focused on documentation, community, and ease-of-use. Panda3D grew to be not only powerful, but also easy to learn. And all the while, the source code was available for anyone to study, use, modify, and contribute back to. This relationship worked so well that Disney entrusted the copyright of their technology entirely to CMU in 2008.
From the Cathedral to the Bazaar
The open source world was very different in the mid-2000s. GitHub didn’t exist yet. Source control was still largely centralized. Panda3D was still on CVS, which lacked any kind of “forking” model. If you weren’t a core project developer and you wanted to contribute code, you had to send in patches.
That changed in 2013, when Panda3D moved from CVS to Git, and changed its repository host from SourceForge to GitHub. Git encourages a very different method of collaboration: not only is the source code available for anyone to copy, the entire commit history is offered for download. In a sense, everyone can be a “core developer” in that they can push their work directly into their own repository, and they can submit their repository for review and inclusion in the main repository just like anyone else. GitHub thrives on this model, treating software development almost as if it were social media. When Panda3D moved to GitHub, it also adopted the same “anybody can contribute” attitude.
Around the same time, Disney and CMU decreased their involvement in the project, with ultimate control of Panda3D being passed on to its community. While this means community feedback now carries more weight than ever, Panda3D has unfortunately also lost its original full-time developers in the process. As a result, development has been much more sporadic, with improvements coming in abrupt spikes, and less attention to spare on the more minor day-to-day improvements. Going forward, we want to strike a healthy balance of attention between these two extremes, which means committing to a higher level of daily time investment. Time, as they say, is money, which means achieving that level of time involvement requires securing a new source of funding.
Our New Sponsors: Our Community
With Panda3D entering the next era in its history, the era of community-driven development, it only makes sense that we should turn to the community for funding as well.
To this end, today we’re officially announcing our crowdfunding campaign on Open Collective! And, unusual as it may be, we’re also announcing that we’ve already achieved our first milestone, as we’ve underestimated the dedication of our earliest supporters who have pledged on Open Collective in advance of the official announcement. We didn’t anticipate having to scramble and come up with a second milestone this quickly. Thank you all so much!
For those who don’t wish to contribute money, know that we greatly value the time and effort each and every one of you takes in fixing bugs, reporting issues, providing guidance to new users, and even just sharing opinions. Funding or not, without that kind of dedication, Panda3D would cease to exist, so thank you! For those interested in contributing financially and wanting to understand how we intend to use the funding, read on.
Funding and the Future
The first goal is to reestablish the same level of consistent, steady development we enjoyed during the days of heavy Disney/CMU involvement. To that end, our primary goal with the crowdfunding campaign is to pay the wages of a part-time maintainer so they can allocate more time (in addition to their voluntarily-given effort) toward keeping Panda3D’s development steady and consistent. For the time being, our very own rdb has agreed to fill this role, however we’re very interested in selecting qualified candidates from our community to become a more permanent replacement.
The duties of the maintainer will include the usual (prioritizing tasks, triaging issues, keeping the source code tidy), but we’d also like to add to that the responsibilities that come with being a project figurehead: mentoring new contributors, communicating about the status of the project, setting a direction, and generally representing the project on behalf of our community to those outside of the community. If this sounds like your cup of tea, please don’t hesitate to get in touch!
Our current vision for the future of Panda3D is to expand upon the existing flexibility and ease-of-use already offered for graphics, in order to provide a similar experience at all layers of a typical game development stack. We want to go for a “batteries included, but not installed” approach, so that all of the common components needed to build a complete application (networking, save/load support, tools for editing, profiling, and debugging, …) are available, but not required, assumed, or prescribed. We feel that this direction will help the project earn more attention and stay relevant in today’s age of one-stop-shop game authoring tools, while continuing to offer the same flexibility and “get out of my way” workflow that our existing community has already come to know and love.
To that end, expect a follow-up blog post talking about the roadmap to 1.11, and other exciting changes to the pace of our development workflow!