- Raffaele: Creating gadgets
- Raffaele: Elput & Wayland
- Stefan: EFL tree maintenance & cleanup
- Daniel: Eolian status and future
- Taehyub: How to develop with EFL
- Xavi: Documentation
Meeting notes for the Enlightenment Developer Days
Giving an overview on how to write E gadgets
AI: make sure we mention E in a Xephyr session for E develpment on the E development docs (probably in https://www.enlightenment.org/contrib/enlightenment-debug.md)
Writing a auto-rotate gadget from gyroscope input for a convertible laptop
AI: add a boolean type to eet for storing, which is just using the T_UCHAR enum?
Misleading that we have docs on sandboxed gadget but not the normal ones. Need to clean this up.
How to bring the safetly (crashes) and security fetaures from sandboxed gadgets into the normal ones?
Talking about use cases for E gadgets that can be fed with data from scripts (e.g. I3 monitor bar, gkrelm, etc) its on the E TDOD ist
Rotate the touchpad (and touch screen) once the screen has been rotated.
Settings for which keyboard to use (internal, external), disable touchpad and keyboard, etc
We also have geture detection on the evas level
More work is needed on the kms/drm handlig in our wayland compositor for multi-monitor stuff
EFL tree has about 1M LOC which must be maintained.
Some of them are not in use (have been disabled for 6 months and nobody complained) so it is worth studying the possibility of pruning the tree.
Candidates for removal:
- Elocation: Needs a rewrite anyway (AI: Drop it)
- Gst 0.10 support for Emotion: AI: Drop it
- Escape: PS3 support. Broken since ancient times. AI: Drop it.
- Esensor: Part of Eeze (public API). Relies on Tizen API. There's also a working udev backend. AI (Stefan): find out the state of the udev backend.
- Ecore_audio: needs a rewrite of the API and a refactor of the implementation. Used by multisense.
- Xgestures: Tizen2-specific. No longer around. AI (Stefan): Drop it.
- JS Bindings: Not in meson, and nobody complained. Felipe is the only one currently pushing to keep this. Leave the choice to Felipe.
- C++ Bindings: Takes ages to build the examples. Either we fix this or disable these bindings by default. Let's wait on Felipe's opinion.
- Ephysics: Nobody is using it. AI: Disable by default.
- ElmComboBox: AI: Find out if anybody in Tizen is using it. It's the last widget using multiclass inheritance. It could at least be refactored to use single inheritance.
- ElmCode: AI: Talk to Andy Williams (only known user of ElmCode)
- Ecore_drm & Ecore_wayland: AI: Deprecate the API and remove on a case-by-case basis.
Code duplication: Tools to detect it (Duplo, Symian, SonarCube). Everybody agrees it would be good to remove it.
AI: Talk to Mike about this since he already did some.
AI: Get numbers about the actual amount of code duplication we have in tree with these tools
Latest work: Eolian Units (similar to Translation units in C), Dependency handling, State validation (growing complicated), Error handling, Build dependencies (which eo files depend on which ones), Beta checks, Class syntax refactor, Removal of global variables, Error objects, Legacy API removal, "Free" function removal.
Removing ptr(): to be removed with @by_ref (which attaches to the API call, not the type). Maps more nicely to all languages.
Ownership transfer: own() and @owned are confusing. Replaced by @move: ownership is moved (transferred).
Versioning: mitigate screw-ups with file versioning.
Idea to solve threading issue with error integration: Use _init: as the point where to init all the classes and errors, this way we do not need locking for error creation nor class creation.
TODOs: Mapping eo files to libraries, Enforce documentation checks, Custom tags, Auxiliary API.
Native vs EFL# usage examples
Developer experience with MOnoDevelop IDE, Visual Studio
Examples of expanding functions
Demonstration on EFL# development with MonoDevelop: autocompletion, inline docs, customization,
Visual Studio used for EFL# Tizen app development with the SDK
Describing the documentation generation toolchain: doxygen for C and legacy, DocFX for C# and Dokuwiki
AI: update Dokuwiki API docs from last EFL release (DONE: https://www.enlightenment.org/develop/api/start)
Website split for muggles/powerusers, app developers and EFL contributors. Split accessible on the top menu and maybe use three different color schemes per section
AI: update our website dokuwiki installation and see what breaks
CI changes in 2019: Windows cross build, Coverity, meson-only, Spec tests
What happens when you git push: mirror on github -> Travis -> 6 jobs (OSX, Windows, 4 different linux configs) -> ~20 minutes
CI daily cron: same 6 jobs + 5 more (release, 3 linux distros, Coverity)
Think of meaningful aditional distro on which test builds beside Ubuntu (LTS) and Debian
Plans: Exactness integration, 32bit docker images for testing, run Travis for phab diffs, native windows compilation on Travis.
AI: Look at very long (over 60 minutes) builds ON OSX
Keep Travis IRC notifications in the #edevelop channel.
AI: Send daily Coverity reports to the edevel mailing list too.
Single machine at the Oregon State University (OSUOSL), 18.104.22.168, Free DNS provided by EasyDNS
e5.enlightenment.org, 8x Intel Xeon @ 2.20 GHz, 48Gb, 53Gb SSD x2 RAID (root & home), 1.8Tb HDD x4 RAID (/data), Ubuntu 18.10
e6.enlightenment.org (backup server fully controlled by Beber).
/srv -> /data/srv
/srv/web (ci, docs, download, git, lists, phab, www)
/usr/local/bin/certs-renew.sh -> renews all certifications, which expire after 3 months
/etc -> etckeeper
No backups yet.
IPMI console access requires VPN to OSUOSL, only Raster has access right now.
There's a README at /root describing the system.
Merged .so file: Marcel has a proof of concept (with poor disk savings)
We can use this as a first step to explore saving with reduced symbol tables (less external visibility) and link time optimization
EO assumes inheritance tree is known and stable at runtime, and private data is in linear order.
-> efl_super() is constant and could be calculated at compile time instead of runtime
calls like efl_gfx_position_set(efl_super(), ...) could be replaced with direct_call_to_parent(), removing the need for the efl_super() calls.
Worth exploring to see how much things will bring us in the end
As long as we support gcc and clang we should cover a big enough base to make this a worthwhile idea.
Model - View - ViewModel
JSON -> C code -> Compiled into the application (No runtime loading)
File format json or something more compact when humans write it?
Fuzzy testing for all kind of input for one widget for generated json files describing the range of inputs
Need soem customer inside the tree before we can really merge it
Raster insists of having a UI editor together with it when the json format should stay. That will make it hard or impossible to get merged anytime soon
Might stay out of tree to gain more interest and users first
Legacy API is awkward for most bound languages.
Current implementation is hard to maintain (full of #ifdef, 6000 LOC, conversions in place all over, NO TESTS, lots of Coverity warnings)
Move platform specific code to ecore_evas as platform specifc modules
Content coversion APIs to refator out these part from cnp (have a content object to pass around)
USe the content object also for unit testing
Explaining history of genlist. How it moved from a nice widget to being problematic :-)
For things like SQL model we would like to have some clear use cases (e.g. apps) that use it before we really want to allow it in tree and have to maintain it
Header & Footer proposal for ListView. Maybe part of the scroller?
People stopped saying "Hi" on IRC. That built community.
Not everybody is using Enlightenment as their daily desktop ("eat your own dog food").
Barcelona is a nice place, conveniently located, not very expensive, compact, not bad weather.
Round-table meeting rooms were nice, better than classrooms.
University and rooms were nice. Having users POV has been nice. Samsung sponsorship of meals has been nice.
Hacking sessions were missed.
Churros were also missed.
Maybe provide slides beforehand, so it's easy to follow explanations.