Discussion about development priorities between a mod and a user

Started by Audionut, July 09, 2014, 05:38:03 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Audionut

I've been having a PM discussion with a user, and figured that my response is probably useful to the greater community also.

This is my personal opinion only, and may not accurately reflect the stance of the core development team.

Feel free to continue the discussion.  Obviously, there is some divide between pure consuming users, developers, and those in between.  Lets try and reduce that divide.





Quote
I always had the impression that ML was started with a purpose to play with code for a good productive and usable reason.
Thats what the films show when ML gets introduced usually to the public.
Reading here and there on threads i see without exceptions, everyone is trying to solve challeges for the purpose to have a functioning code for filming with a canon at the end of the day.
Not once i read here on ML , that a coder would say, he was happy coding or hacking something without any purpose or usability after .just for the sake of practice his skills or ego.

Yeah sure.  There are plenty of development projects around, millions probably, so we need some way to entice developers to ML, right!  Added functionality is one way to help entice developers to the project, a clean codebase would be another for example.

If you haven't been clicking the links I have been sending, please, read this to gain a better understanding of a developer mindset.

Take a look at this post.  The opening few sentences is somewhat of an appeal to the masses.  "Hey, check out this cool feature I just created".  However, that post quickly turns into development discussion.  The developer describes the processes involved in using the code, what is needed to port this code to other cameras, etc.  Notice there is no download link (for the masses)?  There (probably) won't be until the codebase for that development work is somewhat completed.

If you venture more into the development side of the project, you might find more references to that development side then there otherwise appears to be.

Quote from: a1ex on May 15, 2014, 09:44:11 PM
If you look at the number of ML downloads (it exceeded 1 million downloads, without counting the 5D3, 7D and most recent ports), you will realize right away that relaxing the license for my postprocessing code would be like saying "here you have the perfect recipe to make a small fortune from my work, just take it, it's all free".

Unfortunately for some of you, this is not exactly my intention, and GPL is just a tool to prevent such situations from happening. I could have given this code away as public domain, but I chose to protect my work from being used without giving back.

Instead, I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours. I'm quite far from this utopian goal though, but this is the direction I want ML to go.

My bold for emphasis. 




Quotefrom my point of view as a user, so far everything is exactly that: 80% are half finished projects.....

Raw recording based projects, yeah probably.  ML development as a whole, 80% or more is polished and finished projects.

Let me requote from the above.

Quote from: a1ex on May 15, 2014, 09:44:11 PMWe gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours.

There is a very important part that needs emphasis.

Quote from: a1ex on May 15, 2014, 09:44:11 PMand let us build upon your work

So, it's not a case of just developing for the sake of developing, providing polished functions, and increasing ones skills.  It actually involves enticing other developers to the project.  Only taking development work to 80% completion, is but one way to entice others to actively participate in the development process.

Consider this development work.

Some new functions in Canon firmware have been found, some friendly wrappers were created, and now it's the turn of the community to drive that development further.

You could say, "But hang on Audionut, a1ex went on holidays, that's why it's been left to the community".  And I would say, "that is a poor attitude to have".

Let me add a few more quotes, to help drive home the point.

Quote from: a1ex on June 27, 2014, 08:08:04 AM
There is a reason why I'm asking for people to compile this test themselves. The test results are not the only thing I'm looking for - I'm also looking for potential contributors, to keep the project alive.

Quote from: a1ex on August 04, 2013, 07:38:08 PM
Well, there's no hard "end goal", it's more like a hobby project where we try to push the cameras beyond their limits, while also sharpening programming skills and sharing knowledge. Everybody here is working on their spare time (and I happen to have a bit more time because my daily job is not a 9 to 5 one). Also, everybody is free to work on whatever he feels like; there's no hard to-do list.

I come from a research background, so I like to experiment with cutting edge techniques. And of course, I like sharing these tools with other people that may find them useful and can improve these things.

.....

Anyway. For me, the end goal is not to provide a finished product that everybody can consume. I'd rather see it as an open software platform where others can program their own enhancements and share them with the community (which actually happens to some degree). I prefer it to be a little on the nerdy side and attract knowledgeable people and enthusiasts; after all, ML is a tool for power users.

Quote from: a1ex on March 06, 2014, 07:56:57 AM
Keep in mind that Magic Lantern is a hobby project for all of us; everybody is free to come and go, and if anybody does anything, it happens because he is personally interested in doing that (finds it interesting, needs that feature, whatever).

I'm seeing a trend of statements involving, "Collaboration", "Project", "Development", "Contribution".  I don't see a trend of statements involving, "Lets make ML the next camera of choice for Hollywood directors", "Lets make ML popular for the masses"!

I've concentrated on the opinions of a1ex specifically, and neglected the other developers.  I can comment on the development interaction between a1ex and g3gg0 as I know it.

AFAIK, g3gg0 does a lot of backend stuff, digging into the firmware and things like this.  Backend work isn't a popularity contest.  In fact, I would go as far to say, that very little people at these forums have any true idea of the amount of work that g3gg0 actually does.

Anyway, it's this backend work that finds the useful functions.  Take raw recording for instance.  It was g3ggo who found the necessary functions in the firmware, it was then a1ex who took this discovery, and coded it into the raw recording module that we all know and love.

Collaboration!

I am very confident that this work happens between these two developers very often.  And of course, ML would not be where it is today, without all of the other contributions from all of the other members of the community, be they small or large.

The members that created this forum, the users who test features and provide feedback, etc, etc, etc.




Quotewhy?...ML has gained popularity really only when the RAW access was opened up , and i am sure the coder numbers must have increased then as well.

I can't comment specifically on how many new developers the project gained directly as a result of raw recording.  I can say with certainty, the ratio of consuming users, to useful contributors, increased significantly.


QuoteOne of the 2 biggest bugs are, that the very main RAW access , on 80% of all clips shot, always containing at least one corrupt frame........which can be fixed in editing software ,so not many people think its worth fixing in ML.  But wastes so much time after and messes up time codes in pre-edits etc etc.

The biggest problem, is that even when things are asked by developers, even when no development knowledge is needed, the developers receive very little feedback.

So when a developer doesn't specifically use that function, why should the developer expend effort there, when it's users couldn't be bothered helping?


Quoteeven wedding photographers or hobby filmers using ML for Raw filming try external monitors to view better the recordings. but if that very external Monitor view is defect, then what... then they are forced to use their small built in monitor, or an external low res one , which doesn't really show it better but only ads weight.and even a ML aficionado  , after carrying for hours such monitors and not really seeing it better, will say screw this, off with ML, and lets shoot without ML, and then a monitor which works on normal canon firmware.shooting video without raw, means there is no need to use ML, for it complicates the shooting 10 folds,with so many feature to preset correctly, one can do the same without installing ML.

That is their choice to use the camera without ML instead.  Instead of being consumers, they could actively participate in the development process instead.

Since our conversation started with the monitoring issue, lets discuss that directly.

First was the bug report.

Which was then translated into a forum post  with specific instructions on how to provide the necessary data for the developers.

This is a good development process.  It may not be happening at the speed you desire, but since this is a hobby project for all of us, the progress is often not as fast as the developers would like either.  Fast or slow, progress is still progress.

Simply saying "Screw this, off with ML", is useless at best, a poor attitude, and exactly the sort of members that I can confidently say, myself, useful members of the community, and the development team do not want here.  For all of the reasons which I have tried to convey here.


Quoteso even if that desire is to finish these parts of the whole puzzle, it looks from my POV, that there are 30'000 people who cant get logistically together well enough ,to actually finish individual parts first , before they move on to the next one.

As I mentioned, the consuming user, to useful contributor ratio increased significantly with raw recording.  This is not conductive to development health, despite how popular the project becomes.  And your POV confirms this.  Even with the project becoming popular, development still lacks.

Hopefully you can start to understand why I call ML a development project first and foremost.  It doesn't matter how popular the project becomes, or in what field the project becomes popular.  Without development progress thanks to contribution from community members, the project goes no where.

So hopefully you can also see, how from a user standpoint, functions only completed to 80% may initially appear to be nothing but a nuisance, when in actual fact, they are an attempt to keep the project alive and healthy, so that users can continue to enjoy the project far into the future.


Quotei had 3 response from twittering myself out............i had  twitter for a while , but never used it , and  dont really know yet how to use it,.... but i am trying to get more people's attention any way i can ...

hopefully this helps here.

Excellent.  This is an excellent example of how a user without development knowledge, can help the project more forward.

Thanks.

Audionut

Quote from: Audionut on July 09, 2014, 05:38:03 AMI can't comment specifically on how many new developers the project gained directly as a result of raw recording.  I can say with certainty, the ratio of consuming users, to useful contributors, increased significantly.

I am probably focusing to much on the negative points on an increased userbase, instead of simply being happy with any positive contribution from an increased userbase.

ItsMeLenny

I like GPL for the fact that it does attach itself to something (as described by others before (not on ML but in the wild) "like a virus") and cannot seem to be unattached. That I believe is half of the point of it.

If ML didn't have such a GPL it would end up back at square one where new features will appear and not be able to be built on or fixed, much like the actual canon firmware, everything is a struggle to reverse engineer because there's no docs or source code.

RAW recording has become a hype word and a hype format itself, that's why users shot up when it was opened.

One question I constantly see is "when will there be another stable release?" and I answer it the same every time; if they create a new stable it means just squashing bugs, where as if they continue to work they constantly find new features. In addition to the squashing bugs, they can only be squashed if people report them.

romainmenke

About bug reports:
I have a background in html,  css, objective-c, javascript,... But those are also more a hobby to me. So the main reason why I have never reported a bug in the last 2 years using nightly builds is because I have no way of knowing what a bug is, or I never encountered one. (I don't push every button and try every setting)

Maybe it would be helpful (but very time consuming) to create guidelines for users on what bugs are. Not just the obvious bugs where something does nothing, but also small UI bugs,.... I also have the bad habit to just turn it off and on again and if it then works I just forget about it all together.

Another thing I noticed and I'm also guilty of myself. Alex has been asking for tests with the the new ISO's with very little respons. I never played around with these because they required a little more effort/brainpower to compile, so I have just been reading the thread and cheering for the dev's.
But maybe a separate section on the forum could be created for dev's to ask users to test something. This way the more tech savvy users can easily find stuff to help with. Like feature requests where users can ask for stuff, a test request where the dev's get to ask the users. If this does not lead to duplicate threads and more work in general.


LRF

First of all, i think this (in such form or another) should be put on the front page of ML site:

"I'm trying to build a community that does not just consume whatever we give to them, but I want this community to actually participate in the development process, help each other, and share the knowledge. We gave you some free software, we gave you a proof of concept that you found useful, and now we expect you all to take this software at the next level, and let us build upon your work, in the same way as you have built upon ours. I'm quite far from this utopian goal though, but this is the direction I want ML to go."

Audionut, I agree with every point you made. Seriously. Even despite I'm not an active forum member and I don't bring much to the community, I observe the whole process of developing Magic Lantern with great interest. When ML seemed to need some backup, I helped a bit to raise the temp in Alex's thermometer ;) because I thought it was one of those moments, when development might go on or fail.
I don't use my camera (5D2 before and 5d3 now) for commercial purposes and I didn't try RAW, yet, but I'd like to help somehow anyways. And here's the point: seriously, I didn't know that I'm even remotely expected to compile stuff by myself. Sorry, I can't do this and there's slim chance I'm going to learn programming, even if continuity of the project depends on that. Please understand, that it doesn't mean I want to be a parasite who mindlessly uses other people's work, but right now I can't allocate time and energy to do it. And I think it's the case with many of the users. It's not about being lazy. It's about being able to do it.

Another thing is that form many of you, guys, who are experienced in reverse engineering, coding and stuff, testing new builds and new functions is the most trivial thing on earth. BUT for majority of users (I mean those who read warnings and disclaimers before using stuff) risk of bricking the camera, which in some cases was acquired at cost of many denials, is something that really matters. No risk, no fun - maybe, but at the end you might end up with a brick. Of course there's no doubt that many people on the forum will do everything to help with the (potential) issue, but without any practical knowledge about what you do, you end up with a brick in your hands. Trust me, having few ERR 70 messages and hang-ups during recent tests was really scary for me.

Please don't get me wrong. I can't describe how impressed I am with your work, guys. It's truly unbelievable. And while I understand that sometimes lack of expected feedback from user base can be really frustrating, please keep in mind, that besides passive users, there are those willing to help, but some of the tasks are simply beyond their reach.
I wish everybody was happy with the outcome of this project: developers, because of time and effort spend on it, and average users because of having new, incredible tools in their hands, but how to do it, I don't know.

Maybe it's time to simplify the forum somehow, and make ONE place for stuff that needs to be tested? Without all those "scary" programing terms and notions that make average users feel they are not being able to deal with stuff on such level of complexity? Just simple description in layman's terms.

Anyways, good luck. Just wanted to share user's point of view with you.

ItsMeLenny

Quote from: romainmenke on July 09, 2014, 12:37:50 PM
because I have no way of knowing what a bug is

A bug is anything that it shouldn't be.
Spelling mistakes are bugs (which is also a good way for non-programmers to get into "programming" and bug squashing; create a fork, fix the typo, push back to the main repo, congrats your first bug fix and first addition to the code base).
Anything that doesn't work like it's meant to (from modules to button presses).
Anything that doesn't work on your camera (it may work on one camera but not on another).

In addition, when filing a bug report, there are priority settings, so if you find something and think "well that's not really a problem" but it is a "bug" then you can tag it as a minor bug.


Audionut

I've been thinking for some time now, of providing a build sharing service, where I compile some stuff, and users can test it.

All the fun toys from the branches for instance, and any other stuff that is being developed, but not pushed to the nightly builds.

I think there are some users who for whatever reason, cannot compile, however, they would still be able to provide useful feedback to the development process.  This would be a way for users who cannot develop, to help.  Like a bug finding process by users.

Guess now is the time.  I'll look at setting things up tomorrow.

barepixels

that would be awesome.  I do not know how to compile mo file but would love to try full res silence on my 5d2.  thank you
5D2 + nightly ML

romainmenke

Quote from: barepixels on July 09, 2014, 05:46:19 PM
that would be awesome.  I do not know how to compile mo file but would love to try full res silence on my 5d2.  thank you

I don't think that was the point ;)

Quote from: ItsMeLenny on July 09, 2014, 04:25:23 PM
A bug is anything that it shouldn't be.
Spelling mistakes are bugs (which is also a good way for non-programmers to get into "programming" and bug squashing; create a fork, fix the typo, push back to the main repo, congrats your first bug fix and first addition to the code base).
Anything that doesn't work like it's meant to (from modules to button presses).
Anything that doesn't work on your camera (it may work on one camera but not on another).

In addition, when filing a bug report, there are priority settings, so if you find something and think "well that's not really a problem" but it is a "bug" then you can tag it as a minor bug.

I know what the concept of a bug is, but finding bugs in ML is not always that easy.
There are typo's and obvious bugs when something is broken beyond use.
Smaller glitches can be hard to spot because I have no idea what the software is supposed to be like without the glitch. Not all bugs are visible in the UI and they often only happen once because you did a number of steps in a precise order.

I also don't think there is need for a new way of bug reporting. When something is really broken the users will be quick to report it.

However when going to a new stable release all the tiny little glitches need to be found too. These things get ignored by users because everything still works and well we are users ;)



Quote from: Audionut on July 09, 2014, 05:38:51 PM
I've been thinking for some time now, of providing a build sharing service, where I compile some stuff, and users can test it.

All the fun toys from the branches for instance, and any other stuff that is being developed, but not pushed to the nightly builds.

I think there are some users who for whatever reason, cannot compile, however, they would still be able to provide useful feedback to the development process.  This would be a way for users who cannot develop, to help.  Like a bug finding process by users.

Guess now is the time.  I'll look at setting things up tomorrow.

Exactly what I had in mind. A place where users like me can easily find a way to help. This might also help to keep some threads more focussed on actual dev work without too many questions about timeframes, next stable releases, how to compile,...

I think a lot of users like me want to help but just don't know where or how to start. Maybe it should also be very defined in what it is that needs to be done. If it is just a place where compiled stuff can be tested freely, it will become a new nightly (lot's of users using and asking when it will make it into the next stable)

Audionut

Quote from: romainmenke on July 10, 2014, 04:04:59 AM
Exactly what I had in mind.

Done.


Quote from: romainmenke on July 10, 2014, 04:04:59 AMI think a lot of users like me want to help but just don't know where or how to start. Maybe it should also be very defined in what it is that needs to be done.

The development section has all of the tools you need.  Including threads for specific development progress, development based tutorials and such.

a1ex provides excellent OP', and these contain the information needed to help him develop those features.