Fabric Engine 2: Discussion, Videos & News

Thanks for the info. This stuff is way over my head and I have no real interest in researching it at this point. But it is an interesting topic.

I think the FE is a revolutionary idea.

No hassles and I agree FE is a fantastic concept which their dev team has pushed much further than the “sales concept demo” stage. I think it has a bright future… if not as the future of cross-platform / cross-software animation pipelines, than as an acquisition target for AutoDesk. Nothing screams “Buy me out!” more than making the large hurdles supporting AD’s monopoly irrelevant :wink:

In other words, BTolputt doesn’t have a credible source to back up his interpretation. I suggest people take this as a warning to not take take legal advice from him (or me, for that matter).

Of course not, but that’s besides the point. How am I supposed to link from Blender (or any other GPL application) to your DLL which is not compatible with the GPL (by virtue of linking against a proprietary API) without breaking the GPL for my program? Usually you link to some object code at compile time, not at runtime.

Even if you linked purely at runtime at the ABI level, you would still have to use those “proprietary” names and datastructures defined in the headers (or otherwise) in the GPL code, arguably making it a derived work. I guess you could argue that your wrapper really defines a “generic interface” to any possible backend, but that would be a very poor argument when the facts are that you only have a single proprietary backend that is FE. These are really murky (as in: legally untested) waters we’re treading in here and I haven’t ever seen another program do what you propose, but if you have any applicable example (i.e. not the one covered below), please enlighten me.

Proof can be obtained by simply looking to the Nvidia drivers in Linux. They are, without question, a proprietary library. They are, without question, being linked into GPL software on the end-user’s machine. They are, without question, not made GPL by dint of that fact. It doesn’t matter that they exist in a “union” with GPL software on the end-users machine as long as they are not distributed as a union with the GPL software.

This example is far less uncontroversial and simple than you make it look. The NVIDIA driver has a GPL part (written against the Linux Kernel) and a “binary blob” part. They are not in fact linked to the GPL Kernel in the way you would link ordinarily link DLLs. Quoting Torvalds:

"Note that there is no such thing as “dynamically link into the kernel” in Linux. Instead there are “loadable modules”.

Now the above may strike some people as nit-picking, but there is one rather important thing about loadable modules: they can not link themselves against any random kernel routine. And the routines they can link against are routines that I consider to be “logically independent” of the kernel implementation.

Essentially, the kernel module interface is a “library” interface to the kernel, and kernel modules are considered to be under the GNU Library license. In fact, due to the way kernel modules work, you automatically do it according to the LGPL, so this isn’t explicitly stated anywhere, but that’s the way you should think about this.

Another way to look at this — using the legal rather than the moral viewpoint — is to just see module loading as “use” of the kernel, rather than as linking against it. I prefer to explain the rationale behind it using the moral reason to do it, though:

The reason the kernel is exposed in such a LGPLd way when using modules is simply that there are a lot of kernel device drivers for Unix available, and they were not all written under Linux. If somebody wants to port his SVR4 driver to Linux but doesn’t want to GPL it, I feel that he should have the right to do that, using modules. After all, the driver wasn’t actually derived from Linux itself: it’s a real driver in its own right, so I don’t feel that I have the moral right to force him to switch copyrights."

[SUP][SUB]

  • Yeah, I accidentally viewed one of the blocked posters. That’s what happens when you’re browsing Google News in an anonymous session and click on a link showing BPR’s post in your email. Live and learn.
    [/SUB][/SUP]

    Oh, give it a rest already…

Is anyone else here actually using FE2 Beta? I’m having a hard time wrapping my head around how it works, in particular in how canvas interacts with Maya Nodes.

So far, I’ve got a sphere out of FE2. And that’s about it.

Actually, I do.

The Free Software Foundation’s FAQ. Note it does not state it is against the GPL (as it does with other questions). It simply states it is not “fully usable in a free environment”. As they are quite happy to point other actions as a clear violation, it is odd that they do not here wouldn’t you say?

Also, Lawrence Rosen (as in OSI General Counsel) states explicitly:

The meaning of derivative work will not be broadened to include software created by linking to library programs that were designed and intended to be used as library programs. When a company releases a scientific subroutine library, or a library of objects, for example, people who merely use the library, unmodified, perhaps without even looking at the source code, are not thereby creating derivative works of the library.

Derivative works are not going to encompass plugins and device drivers that are designed to be linked from off-the-shelf, unmodified, programs. If a GPL-covered program is designed to accept separately designed plugin programs, you don’t create a derivative work by merely running such a plugin under it, even if you have to look at the source code to learn how.

Rosen was a lecturer in Law at Stanford Law School, is the author of the Academic Free License and the Open Software License, a member on the board of the Open Web Foundation, and was a director of the Apache Software Foundation from 2011 to 2012. But hey, let’s ignore what he’s been saying since 2003 :rolleyes:

This has all been discussed (at length) before on the forums & elsewhere. Being late to the party doesn’t make you right.

You don’t know much about plugin code do you?

Let’s define a REALLY basic plugin API consisting of only two functions:
char* getPluginName();
double doPluginWork(double numberOne, double numberTwo);

Let’s license that basic API under the BSD license so Blender can use it. Now I write code in Blender that loads any library in a given directory and adds it to a list. I also write code that allows Python to loop through this list, find one of a given name, and then call the “doPluginWork” function. The result is compiled and distributed by the Blender Foundation with the BSD licensed API made available with the source code to users as per the requirements of the GPL. None of this violates the GPL.

Now let’s say developer Paul reads this thread, gets a hold of my BSD licensed plugin API above, and writes a plugin implementing the defined functions. He doesn’t use any GPL code at all to create it, but for the sake of argument, he includes a proprietary library he is licensed to use in the code implementing their version of the “doPluginWork” function. He uploads this to his website. No violations to the GPL there because there isn’t ANY GPL code involved, only my BSD licensed API & the proprietary library he is licensed to use and distribute in binary form only.

Now let’s say end-user Mary downloads & installs the version of Blender with the plugin API & Python extension implemented (as she is legally entitled to do), downloads & installs Paul’s library to the specified directory (as she is legally entitled to do), and runs Blender. Blender looks in the specified directory, finds a library implementing the interface it knows how to use, and adds the result of “getPluginName” to the list of possible “doPluginWork” implementations it can call.

No laws have been broken, no licenses (GPL or otherwise) violated, and yet Blender is in a “union” with a proprietary plugin. Simple example, but it scales because the same legal principles are involved.

Which is why, if you took the time to read the proposal properly, you would have noticed that I stated the plugin API as implemented by Blender would need to be licensed permissively, allowing it’s use in GPL and non-GPL implementations of plugin host & library.

As long as the code common to both plugin host and plugin library is licensed permissively (as in compatible with both GPL & proprietary distribution) - both host & library are derivative of the INTERFACE, not of one another.

And you wonder why you ended up there in the first place. :rolleyes:

it looks like you can use it’s ui and (no tutorials yet?) paid docs?

or do you have maya?

If you had bothered to follow the link at the bottom of that entry, you would’ve been given the following clarification:

“If you want your program to link against a library not covered by the system library exception, you need to provide permission to do that. Below are two example license notices that you can use to do that; one for GPLv3, and the other for GPLv2. In either case, you should put this text in each file to which you are granting this permission.”

It is further made clear that this requires permission from all copyright holders, which is the same problem Blender faces if it was to be changed to a more permissive license like LGPL.

Also, Lawrence Rosen (as in OSI General Counsel) states explicitly:
[…]
Rosen was a lecturer in Law at Stanford Law School, is the author of the Academic Free License and the Open Software License, a member on the board of the Open Web Foundation, and was a director of the Apache Software Foundation from 2011 to 2012. But hey, let’s ignore what he’s been saying since 2003 :rolleyes:

This is his legal opinion based on the definition of derivative work in copyright law, but it’s not uncontested.The GPL FAQ is not quite as lenient in its wording, and the whole compatibility issue is also not just about whether something is a derived work or not.

This has all been discussed (at length) before on the forums & elsewhere. Being late to the party doesn’t make you right.

Yes, it has been discussed. We’re discussing it right now. It hasn’t been tested in court.

Let’s define a REALLY basic plugin API […]
Let’s license that basic API under the BSD license […]
Now let’s say developer Paul reads this thread[…],
Now let’s say end-user Mary downloads & installs the version of Blender with the plugin API […]

This story involving Peter, Paul and Mary (and you) is not the DLL-linking scenario you described (and that I objected to). Yes, if you just define a completely dynamic plugin interface (no object code whatsoever) in a vacuum and someone else just happens to implement it for FE, I don’t see a problem.

If however you create and distribute both the interface and the implementation for FE and there is no other use for them, incorporating the interface into a GPL program is arguably a deliberate circumvention of the GPL terms. What then stops anyone from providing a patched version of any GPL program and their own proprietary code as separate downloads? What would stop the BF from providing an FBX importer as a separate download on blender.org? Why isn’t your approach the de-facto answer to this not-so-uncommon problem? Again, I would like to see an example for someone else doing what you have described.

These issues simply aren’t as clear-cut as you make them look, otherwise there wouldn’t be so much discussion and confusion about it.

Let’s define a REALLY basic plugin API consisting of only two functions:
char* getPluginName();
double doPluginWork(double numberOne, double numberTwo);

Let’s license that basic API under the BSD license so Blender can use it. Now I write code in Blender that loads any library in a given directory and adds it to a list. I also write code that allows Python to loop through this list, find one of a given name, and then call the “doPluginWork” function. The result is compiled and distributed by the Blender Foundation with the BSD licensed API made available with the source code to users as per the requirements of the GPL. None of this violates the GPL.

Now let’s say developer Paul reads this thread, gets a hold of my BSD licensed plugin API above, and writes a plugin implementing the defined functions. He doesn’t use any GPL code at all to create it, but for the sake of argument, he includes a proprietary library he is licensed to use in the code implementing their version of the “doPluginWork” function. He uploads this to his website. No violations to the GPL there because there isn’t ANY GPL code involved, only my BSD licensed API & the proprietary library he is licensed to use and distribute in binary form only.

Now let’s say end-user Mary downloads & installs the version of Blender with the plugin API & Python extension implemented (as she is legally entitled to do), downloads & installs Paul’s library to the specified directory (as she is legally entitled to do), and runs Blender. Blender looks in the specified directory, finds a library implementing the interface it knows how to use, and adds the result of “getPluginName” to the list of possible “doPluginWork” implementations it can call.

No laws have been broken, no licenses (GPL or otherwise) violated, and yet Blender is in a “union” with a proprietary plugin. Simple example, but it scales because the same legal principles are involved.

Thanks for this explanation. I think Audacity does exactly this with the lame plugin for example. And has quite a few more extra downloads to offer.

I would just wish that the Blender institute would do the same for the FBX SDK. There’s really nothing stopping the Blender developers from doing it this way, except their interpretation of the GPL. And this interpretation is unfortunately more at the hardcore side of things.

Wasn’t there even a plugin attempt already to plug in the fbx sdk into Blender? Can’t find the link here in the forums. But i think it was Blenderfbx http://blenderfbx.render.jp/

Hi guys - I got pointed to this thread so I thought I should jump in to say hello. I hope it’s ok to post here - if I’m breaking etiquette then it is through ignorance rather than malice, so my apologies if that’s the case.

I’m not going to get into the licensing side of this discussion beyond stating our current perception (that would be run past an IP lawyer before we ever consider working on something like Fabric for Blender) of the license obligations: the plugin part of Fabric - the part that works with the host DCC application to push and pull to/from Fabric - would probably have to be OSS, but that wouldn’t create any issues regarding Fabric itself. Most of our code is in open repos anyway, so it’s purely an IP licensing issue.

A few other comments:

  1. I’m pretty sure we would need the Blender devs to work with us - none of my team has familiarity with Blender and when that’s the case we work directly with the vendor to make sure we can integrate. Navigating someone else’s SDK for this kind of work is a nightmare without guidance, “oh it’s not-documented but you just do X” comes up more than you would think. So the MODO and C4D integrations are both being built with the support of those companies.
  2. we are in crunch on getting FE2 out after Siggraph. Then we have to get Fabric for MODO, Houdini, Max, C4D and Unreal out as well. So although we are interested in this project, it’s not something we can take on at the moment. At this point we have not had any conversations on the Fabric for Blender front. If someone on the Blender dev side would like a chat, PM me, I’d like to get in touch.
  3. as someone else said, we don’t have studios asking for this so it hasn’t been a priority. However, as someone in this thread already noted - the really interesting space for Fabric is for people building universal plugins that they want to give away or sell. This is something we are working towards after Fabric 2.1, and will actually extend to standalone applications as well. Whilst we are running a commercial software business, we are also want people to use Fabric for non-commercial things. i.e. if someone releases a paper at Sigg, it would be awesome if they could implement it in Fabric and distribute it freely. Yes, it’s a great way to get Fabric adopted and seed the market - but we started Fabric because we wanted to build customer/user relationships that are more than merely transactions. That and we thought we could build something really cool :wink:
  4. if you’re on the beta and having trouble, my apologies. We are working hard on getting to feature complete and now we’re in Siggraph crunch mode. Docs/training material are all coming over the next month or so. Eric Mootz has also been building various high-level presets that should make the ‘what the hell am I doing?’ phase of learning a bit more palatable.

If you’re at Siggraph then come and say hello - our user group is all day next Tuesday (details on our website) and you can get in for free if you register for the free Exhibit Hall pass using our code EXHFS2964. You don’t need the Exhibit Plus ticket.

I will check in on this thread, but I’m in L.A seeing customers/preparing for Siggraph so I might take a day or two to respond. I’ve enjoyed reading the comments and I look forward to not discussing licensing :wink:

Cheers,

Paul (CEO at Fabric)

Paul just uploaded a quick demo tied to Modo.

https://vimeo.com/135558017

Ah right, I always forget that unlike other DCCs Blender doesn’t have a C/C++ API you can build extensions against without rebuilding the entire application. Ugh.

And if you bothered to read the scenario properly, you would notice that Blender is not being linked against the library. The compiled and distributed version of Blender is linked only to code licensed in a GPL or GPL-compliant manner. That’s the point. As the GPL can only apply to copying & distribution, being a copyright license and not a contract, it does not apply restrictions to activities outside copying & distribution. How it is used once copied onto the end-user machine is outside the bounds of a copyright license - which is why further restrictions commercial companies want to impose are done via “end-user license agreements” (contracts) & not copyright licenses.

Well, I’ll go with a respected leader in open source and lecturer of law over your “contestations”. Especially as the vast majority of those “points of view” don’t actually apply. I don’t argue, and have never argued, that at the time the commercial plugin is linked to Blender, the combined “union” is a derived work. However, unless & until that derived work is copied or distributed, the copyright license has no effect. Download Blender from the Blender Foundation (legal), download Plugin X from Website X (legal), and combine on the end user machine (legal). If you tried to distributed that combined work (i.e. Blender executable and Plugin X DLL together) then you would be in violation of GPL, but not before.

A great many legal things haven’t been tested in court. That’s because people will, in general, not challenge legal activities in court when they’re aware they’ll lose and have to pay court costs. The legality of me hopping on one leg in front of the Queen of England whilst singing “I’m a little teapot” hasn’t been tested in court either, but that doesn’t stop it being legal (if admittedly somewhat bizarre).

I’m happy to trust Rosen on this matter (as are many others). You don’t have to, but you then again, you don’t need to install any plugins you don’t want either.

Actually, yes it is. I was pretty explicit about there needing to be a middle layer between the two (and described how that would be a performance & maintenance hit). This FabricEngine thread isn’t the first time a discussion was held on this subject and I’ve always been an advocate of a cleanroom specification that others would build upon.

Perhaps when I put you on the ignore list, you stopped reading my posts. Or perhaps you’re still just spoiling for the same kind of fights that had me add you to the ignore list in the first place. Either way, you have proven it was a mistake to assume you had any actual value to add, even if only for this thread. I’m not interested in your tit-for-tat BS. Find someone else for that @#$%. :rolleyes:

Deliberate circumvention does not a legal issue make, especially in regards to copyright infringement. So long as my interface and implementation for FE do not include or derive from GPL code, there is no GPL violation.

TiVo is a perfect example of this. There is no argument that they circumvented the GPL, yet they were completely within their rights & fulfilled their responsibilities according to the actual terms of the license. Just because that’s not how you would like the license to be used does not make it illegal.

  • Aqsis library (GPL) that implements the Renderman specification and has been used with Maya via the Liquid plugin (proprietary license).
  • Audacity (GPL) is an executable that loads VST plugins (variety of licenses, including proprietary).
  • Photoshop (proprietary license) is an executable that can, and does, load filters that have been made with GPL code (examples here).
  • VLC ActiveX component (GPL) is designed to (& does) load/run in proprietary programs like Internet Explorer.
  • VLC Media Player (GPL) loads & runs commercial codecs when required to do so.

The common theme is that the GPL & non-GPL components of these combinations are downloaded & installed legally on the same machine and the combination only occurs at runtime. One cannot hold a library or application developer responsible for how others may use their perfectly legal distributions. And so long as the user doesn’t distribute their combination of the two together, there is no action on which the GPL’s terms engage.

There isn’t that much conversation about them and there really isn’t any confusion. There is a difference of opinion between the Free Software Foundation & a variety of experts in the field. TiVo demonstrated that FSF’s opinion & desires don’t actually extend to them being a legal authority on the matter. When FSF actually takes someone to court on the matter, let us know. Until then, the situation I described IS used in the real world and has not been shut-down (or even challenged) in a court of law.

Thank you for taking the time to answer questions,
Nice to see this level of customer support.

Definitely not breaching any kind of etiquette, its just like any other forum you have been posting at, whether its Polycount or the modo forums. Direct communication and just getting involve is a good thing.

I’m pretty sure we would need the Blender devs to work with us - none of my team has familiarity with Blender and when that’s the case we work directly with the vendor to make sure we can integrate. Navigating someone else’s SDK for this kind of work is a nightmare without guidance, “oh it’s not-documented but you just do X” comes up more than you would think. So the MODO and C4D integrations are both being built with the support of those companies.

If someone on the Blender dev side would like a chat, PM me, I’d like to get in touch.

Cheers,
Paul (CEO at Fabric)

@BlenderDev/Foundation
This needs to happen, no more feet dragging like with what occurred when Valve initiated contact.

I don’t get this. You’ve been here a while. Development in projects like blender is driven by the motivation of the developers. If nobody is motivated to do something, it won’t happen. “Then get the paid developers to do it” doesn’t fly either - the pay is nowhere near enough to force someone to work on something they don’t want to work on. Their talents are much better paid elsewhere, so they’ll just leave. So how can anyone here say anything like “Devs, Foundation, this needs to happen, no more feet dragging” ?!

It wasn’t foot dragging. Simply put, just as with before, the Blender Foundation doesn’t have the resources to dedicate to something like this. The idea/preferred route is a similar route that the Linux kernel and other larger open source project uses. That is, we need to have development done by “stakeholders” (studios, companies, etc… groups outside of the core Blender development team) who have a vested interest in developing and maintaining a feature like this. Those stakeholders should hire developers to commit to the feature.

That’s how development gets done in bigger open source projects and that’s a model worth following in Blender’s development. Otherwise, you have to wait until the BF’s meager resources have enough bandwidth.

So in your mind, Blender’s success and improved capability or appeal within a larger pipeline isnt grounds for “motivation”? Seriously think about what you just said. Motivation is abit of a silly word, as it can be applied to anything or nothing at all based on the whims of the individual. However, once its applied to the question of “is there motivation to make Blender a better more professional tool?” then that dynamic changes. Not just that, it can free up the developers to focus more on what their “whims” dictate (regardless of what they are paid by the BF) since tools created by artist using FE2 with Maya, Modo, Max and C4D can also be used in Blender.
Do you understand this? How this plays into feature/tool request going forward? How it plays into Blenders more annual release cycle for big developments?

Additionally, if you think its just mere motivation… then why the hell are you surprised when someone is motivating them to do it? Gain think about what you are typing.

I have to call disagree on that first part. It was quite literally foot dragging (message board just added to that), and as for resources it was the Steam Workshop sending over $10,000 (more than once) to the BF. How are these not “resources” much less incentive to work with Valve? This is why some of us are saying the BF has their priorities either ass backwards or are just really slow in doing things that actually matter.

Even Ton said in his “blog” that the workshop donations have the potential to much bigger… well in that case, ACT on it. Its not a one way street… Blender isnt in a position where everyone else has to do all the work while they get the reward. They have to react to opportunities and platforms which can grow Blender further, whether its in usage, development revenue or just out right capability. Its also about building those connections…

I would agree with your second part if Blender was in a position to take that stance, but its not, nor is every opportunity/interaction going to be the same or carry the same weight.

Given what was discussed, why would Blender need to go to Siggraph if the Foundation cant act on it or expects everyone else to do the work for them? Its a bit odd. They will invest money to go to Siggraph, set up a booth, enjoy LA… but not do the same for key developments which would aid the software itself?

changed a few words to be more neutral and less insulting, first poster set the tone for the second quotes response

If you think you are motivating someone by telling them “This needs to happen, no more feet dragging”, then I hope you’re not managing projects anywhere. That is exactly what I have an issue with in your post.

In my mind, FE is big and I’d like to see it in Blender as much as the next guy. That doesn’t mean I assume any developer should feel the same way and use whatever free time they have to make it happen. It’s their free time.

Gee SaintHaven, why are you not vacinating children in Africa? How can that not motivate you? No more feet dragging.

So basically you want to argue semantics and your negative emotional response tied to saying “This needs to happen, no more feet dragging like with what occurred when Valve initiated contact.”? Got it. If you have anything else to needlessly complain about, send me a PM. I probably will not respond, but its better than publicly showcasing why some people dont take Blender & their users seriously. =)

I’m not arguing semantics, I’m saying you have no idea how things work. That is what gives blender users a bad image.