X-Plane / XPlane2Blender

Scenery & Aircraft export addon for Blender and X-Plane
GNU General Public License v3.0
196 stars 67 forks source link

Attract contributors and Pull Requests! #453

Open tngreene opened 5 years ago

tngreene commented 5 years ago

Recently, XPlane2Blender has gotten a lot more involvement with the community - from #397's request for samples to discussions about 2.8's use of collections (#450) and more, and also private testing of the converter. I've also seen in increase in users helping users (thanks @arb65912 and @lehthanis and a few others I've seen popping up recently if I am remember who is who correctly [forgive me if I'm not]). This has been joyous to see and a huge time saver! But, it isn't code, and we have a ton of features and documentation to write!

Most recently someone e-mailed two patches. Only one was added, but the other is sitting in my inbox because I don't have time to look at it, explain why it isn't pythonic enough to meet project standards rather than saying "try again and don't make the thing that... um... it isn't a good solution yet even though it works", or point to some formatting guideline besides "um... PEP8". Another person recently e-mailed and said "how can I help?" and I told them to go write tutorials on the forums and answer questions.

This. Sucks.

Between the converter and 2.8 I don't have time for Open Source development, and yet it would help so much to have code contributions and people I could talk with on Guest Slack every few days. Or even to simply write the unit tests for these features which is extremely time consuming and tedious, but has templates readily available and doesn't require much programming knowledge.

Otherwise the 2.49 converter and 2.8 support will stretch on forever.

Things I need to help automate the inclusion of community support

General needs

(I, infact, feel like I'm wasting time writing this thing I feel like won't come to anything but more questions over how fast I can get it all done and why the code has to be so good if it could just work. Yes it has to be professional, yes we need unit tests, yes we need design decisions or the slippery slope begins and code-tumors fester and it isn't fit for payware developers, Laminar Research employees, and regular users anymore. No discussion unless you're also a professional software engineer please.)

Increasing ease of contributions to the docs

But of course, with 2.8, we'd have to redo all the screenshots we take of the UI... Is any documentation better than no documentation? Developer.xplane.com is a good test case. It has a bunch of docs that are more technical than the average user can ever comprehend them, and even I have to ask Ben what he meant by something, but, eventually you figure it out - kinda.

Increasing ease of contributing code

Increasing ease of unit test creation

self.assertTrue("bpy.data.objects["01_has_blend_glass"].material_slots[0].material.xplane.blend_glass)

Increasing ease of people handling support cases

Things that I'm absolutely never going to accept

or anything else found in the Python Anti-Patterns handbook

Another alternative would be politely petitioning Laminar Research to hire me an intern or junior dev I could tell what to do everyday instead of asking for an angel to fall out of the internet and put up with the above right now for free.

2.49 converter and 2.8 is ending up to be more than one person can handle in a reasonable amount of time at a professional grade quality people rely on - These features need to go right and go right the first time. The converter will likely only be used a few times per people by people and its sets up their project for the future forever and it will be difficult or impossible merging changes between conversion attempts. 2.8 is the start of a new chapter of the program. After everyone sets up their Collections that is what we're stuck with until 2.9. There are no shortcuts to be taken here.

</concerned plea for help and understanding>

arb65912 commented 5 years ago

I, infact, feel like I'm wasting time writing this thing I feel like won't come to anything but more questions over how fast I can get it all done and why the code has to be so good if it could just work. Yes it has to be professional, yes we need unit tests, yes we need design decisions or the slippery slope begins and code-tumors fester and it isn't fit for payware developers, Laminar Research employees, and regular users anymore. No discussion unless you're also a professional software engineer please.

Ted, I think it is important you took time and wrote that. I have read all 3 times, yes, to understand the best I can and not to miss things and here is my input.

  1. Keeping in mind that documentation will probably used for people like me who had to learn the basics hard way by asking you, Ben and other friendly pro developers, I am willing to write step by step tutorial with screenshots on how to use bones for animation with axis of rotation not orthogonal with XP coordinate system. I would do it after I test myself that all bones animations work properly in 2.80 exporter of course. I know that the coding is the most important but without good documentation it would weed out many potential users.

Another alternative would be politely petitioning Laminar Research to hire me an intern or junior dev I could tell what to do everyday instead of asking for an angel to fall out of the internet and put up with the above right now for free.

That would obviously make things easier and progress faster but only LR bosses know how much they would want to "invest" in exporter. I would definitely ask , maybe it could be just a temporary position for a skilled professional.

2.49 converter and 2.8 is ending up to be more than one person can handle in a reasonable amount of time at a professional grade quality people rely on - These features need to go right and go right the first time. The converter will likely only be used a few times per people by people and its sets up their project for the future forever and it will be difficult or impossible merging changes between conversion attempts. 2.8 is the start of a new chapter of the program. After everyone sets up their Collections that is what we're stuck with until 2.9. There are no shortcuts to be taken here.

I am sorry to repeat myself as I expressed that opinion at the beginning of the "2.80 setup" discussion but I still believe that below points are crucial to success and timely release of the 2.80 exporter

  1. the main objective of the exporter is to export objects from blender to XP8 format with attributes NORMAL_METALNESS and GLOBAL_specular 1 We all know how great would be to see in Blender what we will see in XP and be able to incorporate various workflows etc. BUT keeping in mind what Ted explained, we just need to make the minimum work first, objects , animations and animations with bones.
  2. Keeping things simple will assure the professionalism and ease of sometimes necessary changes during the exporter development process.

I am sorry if others disagree with me but that is the point of discussion, to exchange ideas on things.

Thank you all for a great work and contributions.

kbrandwijk commented 5 years ago

I am a beginner X-Plane aircraft modeler (not a beginner in Blender), and as such, have a obvious big interest in XPlane2Blender. As with many tools, once you really start using them, you start running into issues and wishes. Some minor, some bigger (think 2.8 support). I was vaguely aware that XPlane2Blender was OSS, and that led me to this repo a little while ago.

I am also a software developer, so one of the first thoughts I had was (just being honest here), I'll just fork it and do what I want with it. Then again, I'm also a big OSS enthousiast, so my second thought was, let's have a closer look at the current state of the project (a.k.a. the issues), see if they more or less align with mine, and see how I could contribute. I've done this with many an OSS project in the past.

Then I came across this issue, and the situation you describe made me almost want to go back to the 'fork it' idea. I would really like to see this addon make it to 2.8, as well as some other fixes and improvements, and I would be willing to spend some serious time making that happen, but just open sourcing something doesn't immediately turn it into a community project, and if this is not, then that would not be time well spent.

I guess the two things I wonder about most are:

I hope you are willing to shed some light on these questions.

tngreene commented 5 years ago

Hi @kbrandwijk !

For some clarification: I am a contractor for Laminar Research and this repo is financially backed by the company, but they give me wide latitude for how to run it.

Who directs X-Plane/XPlane2Blender? Laminar Research or the artists?

I'd say we balance the needs of everyone well. Laminar Research considers the addon and content community as a central pillar of its business model - 3rd party artists are part of X-Plane itself - therefore in a way XPlane2Blender's community direction is itself the companies direction and vis-versa. Such is a healthy symbiotic relationship!

Does Laminar Research use XPlane2Blender differently than anyone else?

We have always used GPL license. We have no internal version, no payware artist version, and there is only 1 LR specific feature that's snuck in (and it is very very very very minor for an automation script we have. It wasn't my call.) We use the same tools as everyone else uses. We try to keep it balanced between everyone's needs. The only time Ben and I put down a foot is for large workflow requests or features that only benefit specific artist's needs.

Decision making for X-Plane/XPlane2Blender?

Because we've never had more than one developer really working on this, we haven't had much decision making questions about pull requests and such. We read every bug report, feature request, and e-mail that comes our way and make a decision. We have never had another developer make a serious fork, so we've never had a splitting of the community. I greatly want to avoid that.

Given that I have an admin account, it gives me near total control, but I certainly don't want to act like that with new volunteers, and I think a history of engaging with people in deep conversations on here and in the forums shows that isn't the type of developer I am.

Going forward I'd like to continue the feeling we have now, just with more like minded programmers on the team instead of just artists giving feedback.

Do you time to grow an OSS garden anyway?

I think I have time to manage 1.5 people's small pull requests, but not so much for training them. I'm hoping that developing some nice on-boarding docs can help that. I don't currently have time for developing new features that haven't already been developed or training the code base. I think a good software engineer will be able to trace their way around and know what style we go for (pep8, snake_case, no anti-patterns, mypy type annotations, and common sense!) and figure it out. This codebase is not full of pot-holes and unpythonic code tumors and I'm determined that it won't start growing them with new people even if I'm busy. A little problem compounds and grows bigger!

Being a maintainer of an OSS project would be new, but online collaboration is something I have a lot of experience in.

Stay and help or go and develop?

If you wanted to fork and have fun, go for it. Maybe you'll develop some cool things and I'll merge a pull request! If you're willing to deal with a rocky onboarding progress and a OSS community that is just getting off the ground (maybe), you'll be helping all of X-Plane's Blender artists and hopefully having fun getting in on the ground floor of the next chapter of XPlane2Blender.

Above all....

I would love, at the very least, to see this across all forks if the project got more popular:

  1. We can work together to define some core data model that stays the same across all forks so people's projects work partially are the same.
  2. We continue of have Test Driven Development for anything that calls itself professional enough to call itself a release build. (X-Plane/XPlane2Blender will always strive for 100% unit test coverage, we have templates)
  3. Every developer takes extreme care with backwards compatibility or labels the dangers of their version
  4. Other forks state that they aren't associated with Laminar Research and .blend files made wit h it aren't supported by the company
  5. Good will towards all!
tngreene commented 4 years ago

This bug is too much............ wall of hopeful/hopeless ness. If anything is to be done, it'll be done with hope! (on #594)

tngreene commented 4 years ago

Re-opening so these thoughts don't get lost being pushed way down the bug list. If you have more long form thoughts, please put them here. Just know this is a slow process right now, but, every idea is still read and appreciated!