Blender Python Consortium: Initial proposal

Proposal for the “Blender Python Consortium” (BPyC)

note: this topic has been posted on the Blender forums as well
http://www.blender3d.org/forum/viewtopic.php?t=6475

This proposal is created mainly because of the following circumstances:

  1. Disarray. Currently, Python scripts created for Blender are scattered across forums, authors’ websites, and other web (and non-web) locations. There is no central location for retrieving even half of these scripts. This leads to…

  2. Circulation of out-of-date versions. Often, links to certain scripts from web sites will be out of date, or will be hosting a version of a script that has since been updated by the author.

  3. Duplication of effort. Without an organized system, many scripts are created “twice” because one of the authors was not aware that a script had already been created to fulfill a particular need.

  4. Fragmented authorship. Very few scripts have been created as a “team effort.” Most script authors work (and struggle) on small, fragmented scripts, or are working on scripts that could be benefited by a multi-person team.

  5. Limited script inclusion with the Blender releases. The official Blender release cannot and should not include every single script. The download would be too large, and the maintenance overwhelming. Not only that, but it is often hard for the authors to “perfect” their scripts for release status.

  6. Lack of synchronization. There have been some efforts to help users keep their “official release scripts” up to date. However, there is no real mechanism in place to help users stay up to date with any of the other scripts they might have chose to add to their collection.

To help combat these (and possibly other) problems with creating and publishing Python scripts for Blender, I propose the founding of the “Blender Python Consortium” (BPyC). An alternative name may be assigned (or none at all, for that matter), but for this proposal I will continue to refer to it by that title. In its most basic form, it must consist of the following elements:

  1. The committee. The committee will need to be a specially qualified team of people experienced in Python (and other) programming, and familiar with Blender’s workflow and development.

  2. The database. A major part of the BPyC will be the central storage of a large number of scripts. This will need to be organized and accessed via a web-based interface.

  3. The authors. The committee will be real people with real lives, and cannot be tied down with manually maintaining and selecting scripts. For this reason, a major part of the BPyC will need to be the script developers themselves. The authors of the scripts will be the “work force” that ensures that the BPyC succeeds.

  4. Web developers. Although these will not necessarily be a recognized element of the BPyC, its web-based storage and interface demands extensive website design and maintenance.

To best organize this initial proposal, I will present the functions of the BPyC from the perspective of three groups of people.

  1. The committee. The committee’s view of the BPyC is top-level. They are ultimately the ones responsible for any decisions that need to be made in the BPyC. It should also be their responsibility to publish and maintain a small list of Blender related Python helps, maintain the major website content, create a list of guidelines or standards for scripts, monitor script activity within the database, offer constructive comments to the authors, and maintain “The Core” and other organized packages (more on this a little later). I will elaborate on each point a bit more.
  • The publishing of a “Python helps list” could be links to tutorials, books, or documentation, or could be actual documentation created by the committee specifically for Blender-Python scripting. Regardless, its purpose is to provide a brief, yet helpful, source for people looking to improve their Blender-Python skills.
  • The maintenance of the website content may be allotted to individuals other than the committee. However, the committee should play a central role in the maintenance of the “major” parts of the website content.
  • A list of guidelines or standards created by the committee will not be “hard rules that you must follow,” but rather suggestions for best coding practices within Blender. They may be something like “It is recommended that each script contain a menu header in the following form…” Or, “It is recommended that every script created for the ‘mesh’ category check the edit-mode status of the current mesh…”
  • The committee should also monitor the additions and updates to the script database. If some joker decides to post a four-line Blender-Python “hello world” script, the committee should take necessary action to ensure that the script is not added to the database. They can also communicate with the authors to recommend changes to a script. This could be anything from recommending better coding techniques to explaining that a similar script already exists, and that the author may want to consider teaming up with the previous author to add the wanted functionality.
  • Since the BPyC will seek to serve as a central repository for all Python scripts, it is necessary that some structure be instituted to separate the “good” scripts from the “bad.” For this reason, I suggest the maintenance of a “core” package synchronized with each release of Blender. “The Core” will contain only those scripts of the highest quality and functionality; scripts that meet or surpass all of the standards created by the BPyC committee. Each script in The Core must be specially reviewed and approved by the committee (or a member of the committee at least).
  1. The authors. Anyone can become an author in the BPyC. All that is necessary is that you create a login account. Additional restrictions may be imposed by the committee (such as the requirement that one submit an approved script within 30 days of their account’s creation). The authors are responsible for updating and maintaining the scripts on the BPyC database. The BPyC committee will not ensure that the scripts on the database are the most up-to-date version available.

  2. The users. The users are the Blender community at large. From their perspective, the BPyC will be a great big treasure chest of scripts. Mechanisms will be supplied to enable them to download individual scripts, download entire script packages (such as The Core), and update previously downloaded scripts.


And this is the conclusion of my initial proposal. Although it is fairly “high-level” in detail, I do have some lower, implementation-level details that can be presented later.
Initially, I wanted to get some feedback on the feasibility of such a project.

I will need the following feedback and support:
Committee - Although I am willing to initially be a member of the founding committee, my skills in Blender-Python programming are limited (although I do make an effort), and I will need support from several “scripting gurus.” The more people we can add to the committee, the easier the load will be on each individual. Do I have support from any of you “gurus?”

Blender Foundation - I would love to see this integrated as a part of the Blender Foundation, but have not attempted to make any roads in there yet. We can always make the BPyC a separate organization than the Foundation, but I think that the closer we can get to Blender, to more accessible the BPyC will be. What are the possibilities of having this integrated with the Foundation?

Authors - Without dedicated authors, the main purpose of the BPyC (a central script database) will never be realized. It will be your responsibility to maintain your scripts on the BPyC server. Are you willing to do that, or would you rather continue to work independently?

Web site - I had initially been planning to get this up and running myself. However, I am a newbie to web programming, and have had almost no experience with maintaining a full-blown web site or renting a server. I’ve never even personally rented a domain name before. Although I am willing to start the work and have done some initial design, I will need support from web programmers and developers. There may be some advantages in this aspect if the BPyC is integrated with the Foundation and made a part of the Foundation’s website. Will I have support from web programmers/developers? Will we be able to acquire the funds necessary to host the database?

Advertisement - This venture can only succeed if it is publicized properly. How can we ensure that every author and potential script user be made aware of the BPyC’s presence?

Download manager - Basically, my ideas for a “download manager” stem from such systems as the cygwin setup program or the Firefox extension manager. A system that will enable users to view installed scripts, view and download new scripts, and update previously installed scripts. I believe that SamAdam has made a few strides in this area, but I could use feedback from other programmers as well.

Feedback, feedback, feedback. I need to hear from you. I am a busy person (aren’t we all), and although my vision for this project is strong, without support I will have no choice other than to pass on the legacy, or let it die.

Thanks!
Levi

Yet tested years ago (when blender was named “publisher”) : it did not work at all .

Hmm. I don’t remember that. Was it made available to the community? Or was it just kind of an “in house” thing for publisher owners?

BTW, jms, since you have had an extensive background in both python and blender, your input on the feasilbility of a system such as this is valued highly. Also, your website is something of a mini python database in itself. If a system such as the BPyC would take off, would you be willing/able to contribute as an author? Or would you prefer to remain independent and keep all of your scripts in one place?

Thanks!
Levi

I like the motivation here, we need a way to keep track of scripts. But I think the most important thing is to have a script repository at www.blender.org, with some volunteers to maintain it, who can be replaced by new volunteers as the old ones move on.

The list that was maintained here in the forum was good, but the scripts need to be stored on blender.org, and be named consistently and displayed nicely on a web page. The new menu-metadata at the top of new scripts will help a lot in making an automated web page. There could be a place on the repository you can “submit” a script for inclusion in the repository, where it’s uploaded and stored in a “pending” section until a volunteer checks it and moves it into the main section with the rigtht author, copyright, category, version number, blender version, date, etc.

Then scripts will exist forever at blender.org and never vanish.

Many scripts have dedicated projects at projects.blender.org, but it’s not really the purpose of projects.blender.org to have a project dedicated to each and every little tiny script. Maybe a “special” project could be created to host the repository? Or a new section of the blender3d.com CMS?

reed

I’m going to put together and post a summary. That post is just too long.

Anyway, reed, one of the major functions (in fact, the main function) of the BPyC will be a central script repository. Not a system of links, but rather the permament storage of every script uploaded to the database. That is the only way to do it, IMO. A system of links is too hard to maintain (although it is cheaper, simpler, and easier to host). Coupled with the repository will be the ability for the user to synchronize and update a customized script list. This will enable them to keep up to date on the scripts that they use.
The question is where to host such a beast.

The trick will be getting this thing off the ground with enough support so that we can keep it in the air. If done right, I see the BPyC as being second only to the Blender project itself.

Levi