Remember the table from the old wiki, which was showing what features were enabled on what cameras, and was impossible to maintain?
Here's a script that generates such a table from features.h files:
https://bitbucket.org/hudson/magic-lantern/src/tip/features/features.py
1100D 40D 500D 50D 550D 5D2 5D3 5DC 600D 60D 650D 6D 7D EOSM
AF_PATTERNS * * * * * * * * * *
AGC_TOGGLE * * * *
ANALOG_GAIN * * * * *
ANAMORPHIC_PREVIEW * * * * * * * *
ARROW_SHORTCUTS * * * * * * * * * *
AUDIO_METERS * * * * * * * * *
AUDIO_REMOTE_SHOT * * * * * * * *
AUTO_BURST_PICQ * *
AUTO_MIRRORING_HACK * *
BEEP * * * * * * * * * * *
BULB_RAMPING * * * * * * * * * * * *
BULB_TIMER * * * * * * * * * * * *
CLEAR_OVERLAYS * * * * * * * * * * * *
COLOR_SCHEME * * * * * * * * * * * *
CROPMARKS * * * * * * * * * * * *
CUSTOM_ICON * * * * * * * * * * * *
DEFISHING_PREVIEW * * * * * * * *
DIGITAL_GAIN * * * *
DIGITAL_ZOOM_SHORTCUT_600D *
DONT_CLICK_ME * * * * * * * * * * * * *
EXPO_APERTURE * * * * * * * * * * * *
EXPO_ISO * * * * * * * * * * * *
EXPO_ISO_DIGIC * * * * * * * * * * *
EXPO_ISO_HTP * * * * * * * * * * * *
EXPO_LOCK * * * * * * * * * * * *
EXPO_OVERRIDE * * * * * * * * * * * *
EXPO_PRESET * * * * * * * * * * * *
EXPO_SHUTTER * * * * * * * * * * * *
EXPSIM * * * * * * * *
EYEFI_TRICKS * * * *
FALSE_COLOR * * * * * * * * * * * *
FLASH_TWEAKS * * * * * * * * * * *
FOCUS_PEAK * * * * * * * * * * * * *
FOCUS_PEAK_DISP_FILTER *
FOCUS_STACKING * * * * * * * * * * *
FOLLOW_FOCUS * * * * * * * * * * *
FORCE_HDMI_VGA * * * * * * * * * * * *
FORCE_LIVEVIEW * * * * * * * * * * *
FPS_OVERRIDE * * * * * * * * * * *
FPS_RAMPING * * * * * * * * * * *
FPS_WAV_RECORD * * * * * * * * * *
GHOST_IMAGE * * * * * * * * * * *
GLOBAL_DRAW * * * * * * * * * * * * * *
GRADUAL_EXPOSURE * * * * * * * * *
HDR_BRACKETING * * * * * * * * * * * * *
HDR_EXTENDED *
HDR_VIDEO * * * * * * * * *
HEADPHONE_MONITORING * * * * *
HEADPHONE_OUTPUT_VOLUME * * * * *
HISTOGRAM * * * * * * * * * * * * * *
IMAGE_EFFECTS * * * * * * * * * *
IMAGE_ORIENTATION * *
IMAGE_POSITION * * * * * * * * * *
IMAGE_REVIEW_PLAY * * * * * * * * * * *
INPUT_SOURCE * * * *
INTERMEDIATE_ISO_INTERCEPT_SCR *
INTERMEDIATE_ISO_PHOTO_DISPLAY * * * *
INTERVALOMETER * * * * * * * * * * * * * *
KEN_ROCKWELL_ZOOM_5D3 *
LCD_SENSOR_REMOTE * *
LEVEL_INDICATOR * * *
LV_3RD_PARTY_FLASH * * * * *
LV_BRIGHTNESS_CONTRAST * * * * * * * * * * * *
LV_BUTTON_PROTECT * * * * * * *
LV_BUTTON_RATE * * * * * *
LV_DISPLAY_GAIN * * * * * * * * * * * *
LV_DISPLAY_PRESETS * * * * * * * * * * * *
LV_FOCUS_BOX_AUTOHIDE * * * * * * * * * * *
LV_FOCUS_BOX_FAST * * * * * * * * * * *
LV_FOCUS_BOX_SNAP * * * * * * * * * * *
LV_SATURATION * * * * * * * * * * * * *
LV_ZOOM_SETTINGS * * * * * * * * * * * *
MAGIC_ZOOM * * * * * * * * * * * *
MIC_POWER * * * *
MLU * * * * * * * * * * *
MLU_DIRECT_PRINT_SHORTCUT *
MLU_HANDHELD * * * * * * * * *
ML_AUTO_ISO * * * * * * * * * * * *
MONO_MIC * *
MOTION_DETECT * * * * * * * * * * * *
MOVIE_LOGGING * * * * * * * * * * * *
MOVIE_RECORDING_50D *
MOVIE_RECORDING_50D_SHUTTER_HA *
MOVIE_REC_KEY * * * * * * * * * * *
MOVIE_RESTART * * * * * * * * * * * *
NITRATE * * * * * * * * * * * *
NITRATE_WAV_RECORD *
OVERLAYS_IN_PLAYBACK_MODE * * * * * * * * * * * *
PICSTYLE * * * * * * * * * * * *
PLAY_422 * * * * * * * * * * *
PLAY_COMPARE_IMAGES * * * * * * * * * * *
PLAY_EXPOSURE_ADJUST * * * * * * * * * * * *
PLAY_EXPOSURE_FUSION * * * * * * * * * * *
PLAY_TIMELAPSE * * * * * * * * * * * *
POWERSAVE_LIVEVIEW * * * * * * * * * * * *
QUICK_ERASE * * * * * * * * * * *
QUICK_ZOOM * * * * * * * * * *
RACK_FOCUS * * * * * * * * * * *
REC_INDICATOR * * * * * * * * * * * *
REC_NOTIFY * * * * * * * * * * * *
REC_NOTIFY_BEEP * * *
REC_PICSTYLE * * * * * * * * * * * *
SCREENSHOT * * * * * * * * * * * * *
SCREENSHOT_422 * * * * * * * * * * * *
SCREEN_LAYOUT * * * * * * * * * * * *
SET_MAINDIAL * * * * * * * * * * * *
SHOW_CMOS_TEMPERATURE * * * * * * * * * * * *
SHOW_CPU_USAGE * * * * * * * * * *
SHOW_FREE_MEMORY * * * * * * * * * * * * *
SHOW_GUI_EVENTS * * * * * * * * * *
SHOW_IMAGE_BUFFERS_INFO * * * * * * * * * * * *
SHOW_SHUTTER_COUNT * * * * * * * * * * * *
SHOW_TASKS * * * * * * * * * * *
SHUTTER_LOCK * * * * * * * * * *
SILENT_PIC * * * * * * * * * * * *
SILENT_PIC_HIRES * * *
SNAP_SIM * * * * * * * * * * *
SPOTMETER * * * * * * * * * * * * * *
STICKY_DOF * * * * * * * * * * *
STICKY_HALFSHUTTER * * * * * * * * * * * *
SWAP_MENU_ERASE *
TRAP_FOCUS * * * * * * * * * * *
UNIWB_CORRECTION * * * * * * * * * * * * *
UPSIDE_DOWN * * * * * * * * * * * *
VECTORSCOPE * * * * * * * * * * * * * *
VIDEO_HACKS * *
VOICE_TAGS * * * * * * * * *
WARNINGS_FOR_BAD_SETTINGS * * * * * * * * * * * *
WAVEFORM * * * * * * * * * * * * * *
WAV_RECORDING * * * * * * * * * * *
WHITE_BALANCE * * * * * * * * * * * *
WIND_FILTER * * * *
ZEBRA * * * * * * * * * * * * * *
ZEBRA_FAST * * * * * * * * * * * * *
ZOOM_TRICK_5D3 *
What about making this look a bit better (html) and place it on a web page (maybe on nightly build page)?
0xAF has some more nice ideas about this, so I'll let him update the post.
only downside is we'll have to keep updating it.
It's a script, so it can be updated from the nightly builds.
Nice idea :)
Mix it up with http://www.makotemplates.org/, add it to the nightly makefile target and we are ready to put it on the nightly builds page
Yap, who offers to make a nice design for it?
Hi,
I have a friend which was interested in each camera state so he can decide what camera to buy.
I spoke with Alex about this and the idea came.
It would be nice to have such page which will show each camera completeness in percents (or any other means). So a newbie can decide what camera to buy based on budget/likeness/completeness.
We can base the completeness level on the (possible) features implemented or not for each model.
i.e. there are 10 features possible for model X so it's features will count for 10% each.
(the idea is not clear on how exactly to count it and should the features be equal in weight)
Alex suggested this (in case some feature needs to be changed):
If some dev changes feature X and this affects all (most) cameras, this feature is marked as dirty, then in the bugtracker there are "bugs" (testcases) for each camera/feature combination. Then the users can confirm if it's working or not and if it's working it's marked as clean for that camera again.
There are perhaps many way to complete this so you suggestions are welcome.
The ultimate goal was quite bigger than that, though.
We can have voting there (on our completeness page), so each user can put his preferences on the feature for each model.
Then we (the devs) can see what will be preferred an do that feature first.
We should have a way to put our base points for each feature, this way we are forcing the vote in some direction. Like Alex said, we can force the "scripting" feature, since the most users are not familiar with it's powers and wont vote for it, but once it's done it will be of big profit for most advanced users.
As for the web interface to the user, I can do some, but in Perl, if this is acceptable. Though a designed would be needed, since I suck big time in design.
Please comment the idea, so we can clarify it.
I like that idea, should make bug triaging easier.
As far as the web interface is concerned, I can make something quick in python+mako+bootstrap in an hour so. I'll provide you with a demo ASAP
I can do the design. Any rules or wishes?
Oki, in that case I'll just wait for nanomad and improve the HTML if needed.
I think that for camera being ported 100% feat should be something like last stable feat set (limited to carea capability). For general feature added to ML at all the voting system could be a great idea.
Quote from: scrax on January 22, 2013, 04:39:13 PM
I think that for camera being ported 100% feat should be something like last stable feat set (limited to carea capability). For general feature added to ML at all the voting system could be a great idea.
May be we should leave some percents for the leading dev (let's say 30%) in which he can increase the core porting as he advances ...
Or we can have 2 meters (bars or whatever) for each camera, showing:
1. Core completeness: 100%
2. Features completeness: 50%
Thus Overall Completeness: 75%
I'd actually skip the percentages, because I'm bad at assigning them. Rather, I'd compute some sort of a score or status automatically somehow from user feedback.
1% pointed it out well, it should be something very easy to maintain (self-maintaining if possible).
The end result can be, at the same time, some sort of todo list for us (showing what parts need more attention or fine-tuning, what parts were tested and what parts were not tested at all) and also a guide for users who are looking for a camera. It can be a central page from which you can go to porting threads, to give or view testing feedback, report bugs and so on.
From what I've noticed, some developers enable features without trying them at all (understandable, since it's quite boring to try every single thing from the menu). So, quite a few things that are not widely used end up in the menu, but not working at all, because nobody tried them.
Having a central page that lists what others tried and what needs testing should help a lot here IMO.
Quote from: a1ex on January 22, 2013, 05:09:40 PM
I'd actually skip the percentages, because I'm bad at assigning them. Rather, I'd compute some sort of a score or status automatically somehow from user feedback.
Yeah, I agree, perhaps the percentages are not the best option. I like the dynamic score idea. As the max score should be generated automatically too...
Quote from: a1ex on January 22, 2013, 05:09:40 PM
1% pointed it out well, it should be something very easy to maintain (self-maintaining if possible).
Of course, if we have to update this, it wont work for more than few weeks/months.
Quote from: a1ex on January 22, 2013, 05:09:40 PM
Having a central page that lists what others tried and what needs testing should help a lot here IMO.
I have doubts about this, we cannot easily get the test results (as a count) from the bug tracker and show them on that page. Another problem would be the timeframe... since when a change happens to some feature, we have to forget the tests so far and start over with test counting. And if we start implementing it on our page this would mean that we are making a custom tracker ??
Demo page: http://nanomad.magiclantern.fm/feats.html
Design sucks, but it's a huge table so there's not much i can do
QuoteI have doubts about this, we cannot easily get the test results (as a count) from the bug tracker and show them on that page.
Yes, the existing bugtracker doesn't have enough info (each bug should be assigned to a camera / feature).
Quote
Another problem would be the timeframe... since when a change happens to some feature, we have to forget the tests so far and start over with test counting.
We can "forget" the test results in a fuzzy way (e.g. when some change is introduced to feature X, the old test results get a lower weight than new ones). Or maybe just a flag saying there were code changes since last test.
QuoteAnd if we start implementing it on our page this would mean that we are making a custom tracker ??
Are there existing trackers that do something similar? I'm not familiar with them.
@nanomad: looks good to me. You may want to check the alignment, as there are dots right between 5DC and 600D (exactly in the middle).
What about using a checkmark (✓) instead of star?
Quote from: nanomad on January 22, 2013, 05:43:26 PM
Demo page: http://nanomad.magiclantern.fm/feats.html
Can you make a table only version without the container?
Also could be possible to have features linked to man/wiki pages?
Check it out now
- I've removed the container and added a bit of margin that you can easily override (as it's in the body)
- Linked features to the wiki (wiki.magiclantern.fm/wiki/FEATURE_X)
- Removed scrollable header, as it's the one causing allignment issues.... :(
Quote from: a1ex on January 22, 2013, 05:54:43 PM
Are there existing trackers that do something similar? I'm not familiar with them.
We are using Trac (http://trac.edgewall.org/) @work for internal use only. I've installed plugin for test cases, but is it possible to export data of it, I cannot answer, though I suspect it should be possible.
Quote from: nanomad on January 22, 2013, 06:08:40 PM
Check it out now
- I've removed the container and added a bit of margin that you can easily override (as it's in the body)
- Linked features to the wiki (wiki.magiclantern.fm/wiki/FEATURE_X)
- Removed scrollable header, as it's the one causing allignment issues.... :(
Looking quite good ;)
EDIT:
I liked the header. Cant it be done with "fixed" position ?
EDIT2: though fixed position would need alignment too.
One more thing, we should distinguish between features not done and features impossible.
And perhaps put different icons for impossible and not done in the table...
If 5Dc had all that it can it will still look poor on features compared to other cameras. So the rest features should be marked as impossible.
Well, somebody has to judge whether is possible, or not, or maybe possible but with a lot of effort... not so easy to solved.
The links to wiki gave me an interesting idea. We can use the FEATURE ifdef's for the docs too, and have those pages generated by a script. I don't think anyone likes to create all those wiki pages manually. Besides, every documentation entry can have a small line telling what cameras have that feature (so maybe there will be fewer people asking why they can't find HDR video on 500D and so on).
If we can't use the headers, maybe some tooltips can do the job.
The 7D column is missing.
I've grouped the features by menu name, and also linked to porting threads.
http://a1ex.magiclantern.fm/bleeding-edge/features.htm
Is a script or you changed it by hand?Can we have a div for each menu table if is a script?Maybe not needded for what I want to do, will post something later...
found out last code, will try to made another template.
pip install Mako
*reminder
http://bitbucket.org/hudson/magic-lantern/src/tip/features/
If you run it locally, edit the html, there are some missing http's. Not sure why.
It generates only a Other title and the all camera models and all feat selected on one line without features list, seems it can't find features.
did: python features-html.py from features folder. It generates a -dM file