# What is the backwards compatibility of blender?

At what point does the backwards compatibility of blender break, and for what features? I know if I open a 2.49 blend file in 2.7x it will not have the animation data. I heard that 2.7x would break some features of old blender files, so is there a list anywhere of feature compatibility?

The mesh format has changed. 2.6+ uses BMesh and allows for N-gons (i.e. polygons with more than 4 vertices). 2.49 has only quads. If you don't save with Save Legacy option, you will get only edges, no polygons! N-gons will be deleted in 2.49.

The whole API, interface and the major version of Python have changed. No scripts are compatible between 2.5+ and 2.49. (Still, I'm suprised how many 2.x concepts in the API were considered good and made its way further to 2.5+ )

Linked libraries between 2.6+ files actually work in 2.49! You can append and link things from 2.6+ files :)

Many new modifiers were introduced in 2.6+. If used, you won't get any 'Unknown' warning in 2.49. No, they will be anihillated instead. The same is (sadly) true about new types of nodes...

Names (of objects, materials) in 2.49 have length limits: 16 characters plus the .001 suffix. Also, no international characters are allowed. If you leave a long name in a 2.6+ file, it will end with [] symbol in 2.49. Editing such name in UI and pressing Enter will 'normalize' it.

2.6+ has no options per polygon (mostly game-related, but not only: like Collision, Invisible, alpha blending mode). In 2.6+ you need to set them per material and use "Blender Game" as the rendering engine. 2.49 will not recognize these settings. Also, 2.6+ will break the per-face mode (a bit field). You have to reset the bit field first:

polygon.mode = 5


to be able to use bitwise operations again, like:

polygon.mode &= ~(Mesh.FaceModes.INVISIBLE)


You will need these operations to recover per-polygon flags with Python.

2.6+ names new UV channels "UVMap" by default, while 2.49 uses "UVTex". It's not an actual compatibility issue, but remember to name the two objects' channels identically before you join them (Ctrl+J). Otherwise, you will lose UV mapping on one of the objects!

The compatibility is quite good IMO :) taking into consideration how much has changed since 2.49.

What you're talking about is forward compatibility. Backward compatibility is the ability to open files in older versions of the product.
The release notes should give you a hint as to both, but it's always safest to assume neither exists.
AFAIK the Blender team doesn't guarantee either between even minor releases, let along the large step from the 2.4 branch to the 2.7 branch.

• I've opened a simple file from blender 1.0 in 2.7, so there is certainly some effort to support this.. – gandalf3 Jul 10 '14 at 10:04
• @gandalf3 effort or plain old luck? Just because some things haven't changed doesn't mean there's an active program to limit change... – jwenting Jul 10 '14 at 10:13
• It's a philosophical answer ("better not to have to deal with compatibility!") rather than a proper research ;) Surely Blender developers had the compatibility on their priority list for 2.5+. Just look how many things work between the two major versions, despite a total codebase rewrite. – Oskar Świerad Jul 10 '14 at 14:25
• Just to clarify, quoting from wikipedia "backward or downward compatible if it can work with input generated by an older product or technology." – David Jul 10 '14 at 14:47
• I wasn't able to find any solid sources, but I'm convinced it isn't "luck". Some things I did find: wikipedia, blendernation. And from the dev blog: "For 2.7x projects we will allow forward and (minor) backward compatibility breakage". That implies that it normally isn't allowed. – gandalf3 Jul 12 '14 at 0:27