-
-
Notifications
You must be signed in to change notification settings - Fork 18
Contribution Distribution Engine (CDE) #164
Comments
Here's my first example of file specific info gathering. I am using git blame to extract all the (hopefully) useful information of local files and their "touches" (aka who changed how many lines at which point in time). My script + git blame outputs the following:
heres my example:
and here's the output CLICK ME TO SEE OUTPUT
for now git blame fu** up when dealing with binary files (which is not unheard of). And apparently while testing this I've had non-committed files inside my directory, meh :) |
Nice @kikass13 I think it is a really good approach. I went through the git blame and it is indeed a good indicator.
When you replace / takeover the existing architecture try to keep the existing functionality or even enhance it. The uniform weights and activity weights are quite important even if they are not that complex. I will today start to build some demo script to get into the coordination weights. I think the names file weights and coordination weights are quite good. @krux02 @cornerman @fdietze What is your opinion? |
@Ly0n to make my thought process clear:
as you can see, I am a little confused about how metrics play their role here. I don't really know (right know I don't even have a slight clue) how we will configure, declare & apply metrics to a contribution domain. If someone has an idea, please give me some insight |
…haves in a proper manner so that the engine can be tested; CDE now accepts optional and mandatory args for domains, actions etc; only email addresses will be used as keys (identifieing contributors) from now on, we could add algorithms for username<>email aggregation later; protontypes#164
… now access the global libreselery configuration object via self.getGlobals(), which is used by the gitFile plugin to identify the directory to look for files; Added file filter into gitFile plugin so that only files matching the given patterns will be blamed for information protontypes#164
DisclaimerTo document what I did the last two days, here's a diagram depicting the data flow: What happens:
... here is where the config fun starts ...
... what happens with all this? ...
... now the
|
I am wondering about one additional aspect: historical perspective. Initial figure shows use of
Then that "combined" split is what would be used to decide on how/whom to split current funds allotment.
|
general@yarikoptic Me and other folks talked a little bit about it in here: Regarding the current developmentThe example i coded (for the CDE) which is currently free for review and further improvements (see my fork here: https://github.com/kikass13/libreselery/tree/cd_engine) includes a plugin based scoring system (small example) of git blame. It gathers
So with that plugin, it is technically possible to score newer contributions better than older ones. That's just an example though as the concept of "time" is a difficult one to configure properly. postIn case you have any suggestions or want to help me putting a little example of what you said into code, I would be happy to get some help <3 |
Meeting Note: |
…connectors; added plugin which gets all remote contributors and scores them with a base uniform score (whatever selery did before in the main class); selery functionality is now restored up until the split() function and works as expected - CAREFULL, i did not add all the weight and split functionality back as as plugin, only some placeholder stuff; Contributrs are now a class used by all plugins, this makes their handling easier and uniform across the code; all actionns now have a generic <params> arg which is parsed from the selery.yml and can be used to express all sorts of stuff; restructured and repaired plugins a little bit; connectors can now be used in plugins, this functionality required some restruecturing and event handling with the CDE object from the LbreSelery main class using updateGlobals() functions protontypes#164
Update from commit 31601a4: I changed some of the internal stuff, bit the most important thing is that there is a plugin which does the same as the previous Whats in there now:
Whats not in there:
|
in case you want to look into it (@fdietze @cornerman) (my fork is here: https://github.com/kikass13/libreselery/tree/cd_engine) |
…proper git dir; also fixed a bug there, where non committed authors would not be deleted properly protontypes#164
…ath and .git dir protontypes#164; added missing dep to setup file
…a plugin alias helper function which uses the filename as plugin name; removed unnecessary plugin test code protontypes#164
…ing all steps into one single dict; helper function for splittgn dict into key-val-lists added for convenience; normalize_ step added after merge_ step in the engine, to be more transparent protontypes#164
…; Configuration and conenctors given to plugins now exist with plugin initialization (and will probably not change, although they could); reworked parameter set for domains and activities to be of a consuming nature, which allows us to spot wrong user config params and report them (we do raise an exception); Removed unnecessary code; Cleanup preps for PR into main repo devel branch; protontypes#164
After the successful little meeting with @cornerman and @fdietze I changed some of the internal behavior and cleaned up the code. The main talking points were: Domains
Plugins
Contributor Data
Engine
It was decided that all bold formatted points are relevant prior to a first PR. |
* added cde first impl with configuration and a lot of magic ... stuff is commented out for testing so dont use this #164 * refined plugin based system; implemented first real plugin for local file contributions scanning; 'blacked' my code as far as possible; still work in progress #164 * git lines of code action plugin works now, its not finished but it behaves in a proper manner so that the engine can be tested; CDE now accepts optional and mandatory args for domains, actions etc; only email addresses will be used as keys (identifieing contributors) from now on, we could add algorithms for username<>email aggregation later; #164 * Reworked gitFile plugin so that it does not suck anymore; Plugins can now access the global libreselery configuration object via self.getGlobals(), which is used by the gitFile plugin to identify the directory to look for files; Added file filter into gitFile plugin so that only files matching the given patterns will be blamed for information #164 * Updated plugins and their handling of globals(); plugins can now use connectors; added plugin which gets all remote contributors and scores them with a base uniform score (whatever selery did before in the main class); selery functionality is now restored up until the split() function and works as expected - CAREFULL, i did not add all the weight and split functionality back as as plugin, only some placeholder stuff; Contributrs are now a class used by all plugins, this makes their handling easier and uniform across the code; all actionns now have a generic <params> arg which is parsed from the selery.yml and can be used to express all sorts of stuff; restructured and repaired plugins a little bit; connectors can now be used in plugins, this functionality required some restruecturing and event handling with the CDE object from the LbreSelery main class using updateGlobals() functions #164 * added include_deps to remote action plugin #164 * fixed bug in test of file_contributions_plugin, it will now find its proper git dir; also fixed a bug there, where non committed authors would not be deleted properly #164 * small bugfix in file contributions plugin regarding current project path and .git dir #164; added missing dep to setup file * renamed actions to activities; cleaned up plugins a little and added a plugin alias helper function which uses the filename as plugin name; removed unnecessary plugin test code #164 * contribution engine will now work with proper dicts instead of gathering all steps into one single dict; helper function for splittgn dict into key-val-lists added for convenience; normalize_ step added after merge_ step in the engine, to be more transparent #164 * Changed plugins to be stateless (at least for the relevant user code); Configuration and conenctors given to plugins now exist with plugin initialization (and will probably not change, although they could); reworked parameter set for domains and activities to be of a consuming nature, which allows us to spot wrong user config params and report them (we do raise an exception); Removed unnecessary code; Cleanup preps for PR into main repo devel branch; #164 * removed stale code and reapplied black #164 * Update README.md * Fix some typos in README.md (#188) * @Ly0n and @KikAss running LibreSelery on a complete awesome list * improved to work with pip install and further awesome improvements * added project url to coinbase message * linter now works * reviewed and tested changes to run LibreSelery in Docker with @kikass13 Co-authored-by: Tobias Augspurger <[email protected]> Co-authored-by: Tobias Augspurger <[email protected]>
after our latest meeting, I was playing around with the future weighting stuff and some random git helper scripts regarding git blame.
I will continue the stuff I have visualized in my newest fancy draft - it's not really representing anything but it should show my intentions and definitions while moving forward.
SORRY FOR SPELLING MISTAKES IN THIS TEXT, IT's 3 am DAMMIT! :D
following definitions were used:
Contribution Distribution Engine (CDE)
Contribution Type (probably 1:1 with metrics, but I'm not sure)
Contribution Domain
how does it work:
The text was updated successfully, but these errors were encountered: