From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

How users can get features in Blender

This document is a guide for users with no knowledge of programming, to get new features added into Blender3D.

Initial Steps

Follow these steps before getting too serious, in many cases this is all you will need to do.

  • The feature you're interested in may already exist in the development version, in a branch of this code, as a script, patch in the tracker or work in progress. Before getting too far, try the search forum function on blenderartist.org, ask on IRC chat or join the bf-funboard functionality mailing list.
  • The http://www.blenderstorm.org page was started so users can suggest ideas and have others (including blender devs) give feedback, see if your idea has been requested here.
  • Your idea may be on a developers TODO list. In this case you can still help in their planning with discussion, examples and implementation suggestions.
  • If a similar feature or tool is already available, take the time to learn how to use it, maybe it can be extended to do what you want.

At this point you should know whether you need to do a lot of planning or not. Sometimes you'll suggest something and it will be in blender's subversion repository the next day, but more often then not the low hanging fruit has been picked.

A small feature may end up on a developers TODO list and you need not do any more work, but larger features will need some planning, read on!

Planning

Now that you know that your feature is non trivial and doesn't already exist you'll need to do some planning. Be prepared to spend some time talking to users and developers.

While talking and networking with interested developers, you may find you end up in the role of project manager (depending on the complexity of your feature). This takes time and effort on your part.

Be prepared to write a document describing the implementation of this feature, make necessary changes as others discuss and evaluate.

Not everybody has the necessary knowledge to plan complex features. In this case you're better off seeing if somebody else can help as a volunteer.

Considerations

  • Blender has its own way of working, just copying a feature from another application may be impossible or undesirable.
  • Blender is used for animation/sculpting/architecture/simulation/games - features in blender need to be versatile and ideally span across many work-flows, not only the usage you have in mind.
  • Be prepared for rejection, for various reasons, not all tools/features belong IN Blender, maybe it is better implemented as a script, or external tool.
  • Adding seemingly straightforward features may involve adding/rewriting or extending underlying parts of blender that weren't designed with your feature in mind. Don't assume your addition is easy.
  • Even if you feel very strongly about something, try not to come across as negative or overly pushy, most developers are volunteers, often aware of areas for improvement but need to take time to add them.

Funding Projects

Contracting developers can work on a specific feature but throwing money at a developer to write a feature doesn't work as well as you might think.

First of all, many of the Blender dev's are busy students/professionals who work on blender for fun. Accepting money is only pressure to fulfill a task they may have trouble committing time to. So money isn't necessarily that much of an incentive.

You may find a developer who is interested in accepting payment for writing a feature, this in its self isn't a total solution. We don't just want the feature by itself, we need high quality well commented code as well as somebody to maintain this feature and fix any bugs that might arise later. For this reason, asking amongst people in the blender community is the best place to start.

Make sure the feature is well specified so the developer knows exactly what to do. Choosing to be less involved may be ok but, it's far better to become involved in the planning phase and work out something with clear specifications. A developer can estimate development time to quote a price.

Code Bounty

From my experience code bounties don't work that well, even though they attract attention. You end up having to deal with developers who are not that experienced and are only interested in the money (not maintaining their work) or developers from other projects who don't understand Blender's codebase and may end up spending longer on a small project than an existing developer.

In short, you're better off finding the right person for the job and working with them to get the project complete.

If this doesn't work, a code bounty might since it has the advantage of attracting new developers. Id suggest only trying this if finding an existing developer fails.

  • Features that need new code added (smoke/flame for instance), can be done by new developers who can write this and learn Blender's internals on the way (like some Google Summer of code projects - Sculpt tool)
  • Features that require extensive knowledge of Blender's codebase are better given to existing developers.

Example Proposals

http://www.harkyman.com/animprop/caproposal.html