Giter VIP home page Giter VIP logo

grimoirelab-sigils's Introduction

Generic Dashboards for GrimoireLab

Each of the files found in this directory are a JSON file that contains all of the information related to a Kibana dashboard. This usually has information about the following artifacts:

  • Original indexes where the information come from.
  • Searches on those indexes that provide a sub-set of the information.
  • Widgets either built on top of the original indexes or on top of the searches.
  • Final panels that are an aggregation of several widgets.

There are Dashboards for Kibana 6 right now stored in panels/json

Panels

A panel is composed by the several widgets this contains. So far the panels proposed as generic are a mix of the several data sources available in a project. Those could be only focused on Git, but there are others such as review systems like Gerrit, IRC channels, mailing lists, etc.

The structure for naming files should be:

  • For data sources:
<data_source>[_<panel_name>].json

Examples:
git_<panel_name>.json
gerrit_<panel_name>.json
  • For other panels not focused on particular data sources we just use the name of the panel:
<panel_name>.json

Examples:
about.json
overview.json
git.json
git_pair_programming.json
gerrit.json
gerrit_timing.json

To give some examples, below there is a list of some panels that can be found in this directory:

  • git.json: provides aggregated information about all of the gits in the analysis.
  • gerrit.json: provides aggregated information from all of the gerrit projects.
  • gerrit-backlog.json: provides specific widgets to track the backlog of the project.
  • mailinglists.json: provides information about the discussions that take place in the several mailing lists.
  • about.json: provides some widgets detailing this information and how to interact with the panels.
  • overview.json: provides a generic view of the dataset with some widgets that help to drill down the information from the whole list of data sources.

All panels will provide widgets for filtering information by project, domain, organization, etc. depending on the availability of that information in the corresponding index.

Widgets Naming

 <data_source>_<metric_used>

 Example: git_top_authors
 Example: git_authors

Where data source could be git, gerrit, mbox, etc.

Widgets Title Naming

In general, titles should follow the same naming scheme as the widget itself, substituting underscore characters by single spaces and adding capital letters. Nevertheless, widgets title depends on the name of the panel in which the widgets are located:

  • If the panel shows information for several data sources, then the name of the data source must be included. For example, it's the case of Data Status Panel, because it contains the same information per data source, so using data source name in title is mandatory.

  • If the name of the data source is included in the title of the panel, then the name of the data source shouldn't be included in widgets' title, except in cases where it could help understand what the widget contains.

 <data_source> <metric_used>
 
 Example: 
   Same visualization for top authors would be named: 
 
   - 'Top Authors' in 'Git' panel, as the panel is giving us context.
   - 'Git Top Authors' in 'Overview' panel where we could have similar visualizations for other data sources.

Of course this is a general rule, just have context into account with naming widgets to know if data source is clear or not.

Searches Naming

Search:_<field>:<search>

Example: Search:_pull_request:true

Indexes Naming

Notice that optional date is included to allow keeping several copies of the same data source when needed.

Raw indexes should use suffix -raw:

<data_source>-raw[_date]

Example: git-raw
Example: gerrit-raw
Example: stackoverflow-raw
Example: jira-raw
Example: bugzilla-raw

Enriched indexes:

<data_source>_enriched[_date]

Example: git_enriched
Example: gerrit_enriched
Example: stackoverflow_enriched
Example: jira_enriched
Example: bugzilla_enriched

Aliases Naming

Finally, an alias should be created pointing to the enriched index. This allows to easily modify the data used under the hood in a transparent way from the point of view of panels. Its name should be just the name of the data source, but sometimes we need different indexes for the same data source. In that case we would add a suffix to indicate the functionality of that alias.

<data_source>

Example: git
Example: gerrit
Example: stackoverflow
Example: jira
Example: bugzilla

For each index there could be as many aliases as needed. The most usual use case is using aliases for building panels or visualizations based on different time series. E.g.:

<data_source>_<field_name>

Example for git index and metadata__timestamp:
git_metadata__timestamp

Example for git index and metadata__updated_on:
git_metadata__updated_on

Example for jenkins and created_at field:
jenkins_created_at

Index Pattern Naming

Index patterns in Kibana should follow the same naming scheme as aliases in ES (see Aliases Naming section). This way, is easy to know what alias is being used by a given index pattern. Besides, it makes easier to select index patterns from kibana, because their names include the field configured for time series in that index pattern.

Common Index Fields

Following fields that should be included in any index pattern:

  • id
  • url
  • metadata__timestamp
  • metadata__updated_on
  • author_bot
  • author_name
  • author_org_name
  • author_uuid
  • author_domain
  • author_user_name
  • origin
  • grimoire_creation_date

Data model

Each of the indexes are based on a previous definition. This is declared in CSV format with two columns: name and type.

More information at the Schema directory.

How this info was retrieved

These json files were retrieved using Kidash.

Example of how to run this:

$ kidash -g -e <elasticsearch-url> --dashboard <dashboard-id>* --export <local-file-path> --split-index-patterns

example: 
$ kidash -g -e https://admin:admin@localhost:9200 --dashboard overview --export overview.json --split-index-patterns

More information: Kidash - Usage.

grimoirelab-sigils's People

Contributors

abhiandthetruth avatar aklapper avatar alpgarcia avatar canasdiaz avatar dicortazar avatar dlumbrer avatar dpose avatar georglink avatar imnitishng avatar inishchith avatar jgbarah avatar jjmerchante avatar jsmanrique avatar mafesan avatar rcheesley avatar sduenas avatar valeriocos avatar vchrombie avatar vsevagen avatar zhquan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grimoirelab-sigils's Issues

Update directories and file names to be more meaningful

First of all, is it a repository of one collection of panels, or several collections? It seems it's growing to several panels collections, isn't it?:

  • json (current GrimoireLab standard panels). These are the ones installed also through PyPi packages (see panels directory used in the package)
  • dashboards-cauldron. The legacy panels used in Cauldron.io. They should be deprecated at some point
  • chaoss-gmd-cde. The upcoming CHAOSS GMD Code Development focus area panels

There are also code and tools related with panels management, that are stored here too:

  • import_panels.sh
  • src directory

So, my proposal would be:

  • provide meaningful names to the .json panels files directories. I would recommend to avoid acronyms. So they could become:
    • rename json folder to sigils: standard set of GrimoireLab panels. It would be needed to rewrite the symbolic link in panels directory (or improve the way the package manages the panels collections), and maybe it could have some undesired effects in current Bitergia deployment infra (but that's Bitergia issue, not GrimoireLab Sigils issue).
    • rename dashboards-cauldron to cauldron: set of panels used in Cauldron.io
    • rename chaoss-gmd-cde to chaoss-gmd-wg-code-development
  • move the tools and scrips to a utils directory, with its own README.md or set of .md files for documentation
  • use docs folder for GrimoireLab Sigils and its collections documentation. This mean, that there could be several docs or pages in that folder, and a set of collections with the same names that the ones used in the root directory for the directories of .json files.

Gerrit panels uses name and it must use author_name

In the Gerrit panel for measuring the number of authors, in the metric visualization the field used is author_uuid, which is correct. But in the submitters table, the field used for bucketing the authors is name (Descending), which is not correct. It must be author_name to be in sync with the metrics vis. And in general, the author information must come from SortingHat, the fields starting with author_.

Add Areas of Code analysis as a new panel

The goal of this panel is to produce an overview of the areas of code modified by each developer/organization in a given repository.

This helps to understand how people are interacting with each other, how they evolve in the several areas of code (first level folder for instance), and the usual filepaths modified by those.

The code to produce the indexes is ready to go at Grimoire-ELK, so the panel should be added at some point.

[about.json] Needs release field

It seems about.json needs a release field:

sirmordred.task_panels - ERROR - panels/json/about.json does not include release field. Overwritten it always.

If you can point me to some documentation on how to add it, I could submit a pr fixing that.

New Git Performance panel PoC

I have created a panel to showcase average files and lines of code changed by commit (total and evolution over time) Thanks to new gauges visualizations in Kibiter 6.x and Timeline, I've put some thresholds that allow to check if they are passed and how the trend evolves:
imagen

The panel includes authors and repositories tables to make easy to filter by author and repository.

Here goes the .json file zipped: jsm_git_perfomance.zip

The panel has been exported with Kidash.

If you find it useful, feel free to add it to the default platform or modify it for your needs

Check index patterns and mappings

  • Whether or not an index pattern uses the specified time field.
  • Analyzed fields in index patterns not configured as aggregatable (they couldn't be used in buckets).
  • Text fields in mappings not having fielddata:true (they will be not aggregatable in Kibana)
  • Check gelk version (we need Kidash to add gelk version to panel JSON). If there is some document in ES which gelk version is older than panel's one, then that panel could be partially broken when visualizing those old data.

Add support for importing ES mappings from CSV files

Definition of enriched indexes are stored in schema folder. We need to use them to compare those definitions against ElasticSearch mapping generated by Gelk, that is, real mappings.

In order to do that we need to add a from_csv() method that works in the same way as from_json() does in ESMapping class. It should load a CSV file and use the add_property method to create the Index Pattern.

Add testing for panels

Index patterns included in panels should be compared with ES mappings to make sure they will work once imported by Kidash.

  • Input: JSON file, index name, mapping dictionary.
  • Output:
    • differences between index pattern and mapping dictionary, if any.

Other tests that could be added on each side:

  • Panels only:
    • Whether or not they use the specified time field.
    • Analyzed fields not configured as aggregatable (they couldn't be used in buckets).
  • Mappings only:
    • Text fields not having fielddata:true (they will be not aggregatable in Kibana)

Use directories instead of branches for different versions of the panels

Right now, panels for Kibana5 and Kibana6 are in different branches in git. Instead of that, I think having them in different directories would be better, and would scale better for the future.

Having different directories allows for the pip package of panels (or anyone cloning the repo) to have available in a single checkout all the panels, and then decide which version they want to use. This could be easily done with the option of kidash to upload a certain directory, or with a new version to select a collection (each collection could be a directory).

In the future, if we decide to have different "collections" (eg, panels for a certain kind of use), we could just open a new directory.

In any case, we can still have the "default collection" in a certain directory. This would be uploaded by kidash by default.

If you want, I could send a pr with all of this.

Use Painless to compute delays on the fly

Currently we are pre-computing delays. This introduces a point of failure to some panels and also makes data not as fresh as it could.

We have tested a short painless code to compute these delays on the fly that could be included in our Kibana index patterns when needed:

LocalDateTime creation = LocalDateTime.ofInstant(Instant.ofEpochMilli(doc['grimoire_creation_date'].value), ZoneId.of('Z'));

LocalDateTime closed;

if (doc.containsKey('state')) {
  if (doc['state'].value == 'closed') {
     closed = LocalDateTime.ofInstant(Instant.ofEpochMilli(doc['closed_at'].value), ZoneId.of('Z'));
  } else {
     Date now = new Date();
     closed = LocalDateTime.ofInstant(Instant.ofEpochMilli(now.getTime()), ZoneId.of('Z'));
  }

  return Duration.between(creation, closed).toDays();
} else {
  return 0;
}

IMPORTANT: This code has been tested and solves the problem, however some tests are needed to guarantee its performance when dealing with big indexes before including it in production.

Closing condition: when tests are done and, in case of good performance, index patterns are updated to use it. In the case we are unable to get good performance (for instance, not using variables [1]), discard this option.

[1] This code contains variables. It may be a bad idea because the script would be compiled each time the field needs to be solved. Number of compilations per minute is limited to 15 by default, so maybe removing closed and creation vars could improve performance if needed. See:
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-using.html#prefer-params

[chaoss-gmd][code_development] Build a panel for Lines of Code Changed

CHAOSS GMD working group has defined several metrics related to code development efficiency

Taking Lines of Code Changed metric definition from there, build a panel around this metric. Ideally, this panel should contain:

  • No more than 5 widgets, to avoid overwhelming the user.
  • A markdown widget below with some basic explanations about what we are looking at.

Pull Request Merged panel can be used as an example of the structure we would like to follow:
https://chaoss.github.io/grimoirelab-sigils/chaoss-gmd-cde/pull_requests_merged/

For more info on how to contribute, please read:
https://github.com/chaoss/grimoirelab-sigils/blob/master/CONTRIBUTING.md

[chaoss-gmd][code_development] Build a panel for Pull Request Merged

CHAOSS GMD working group has defined several metrics related to code development efficiency

Taking Pull Request Merged metric definition from there, build a panel around this metric. Ideally, this panel should contain:

  • No more than 5 widgets, to avoid overwhelming the user.
  • A markdown widget below with some basic explanations about what we are looking at.

Efficiency panels can be used as an example of the structure we would like to follow:
https://github.com/chaoss/grimoirelab-sigils/blob/master/doc/gerrit-review-efficiency.md

Index patters and panels using wrong creation date time field

Some index patterns and panels are using creation_date field instead of grimoire_creation_date, which is the official field used to build time based panels and visualizations.

The list is the next one:

jira_backlog.json:                    "creation_date",
jira_effort.json:                    "creation_date",
jira_timing.json:                    "creation_date",
maniphest_backlog.json:                    "creation_date",
maniphest-index-pattern.json:                "timeFieldName": "creation_date",
maniphest_timing.json:                    "creation_date",
overview.json:                "timeFieldName": "creation_date",
overview.json:                "timeFieldName": "creation_date",
redmine_backlog.json:                    "creation_date",
redmine.json:                    "creation_date"

Create some doc to guide people about how to create panels


This proposal has been moved and rewritten in #467


The goal of this task is to specify the usual process we follow to create widgets or panels.

There are at least three steps that comes to my mind:

  • Creation of searches. This helps to produce final widgets as tables, or to be later used by other widgets to visualize subsets of the original index pattern.
  • Creation of widgets. Those might be created on top of a Search of filtering the information directly in the widget with specific filters.
  • Creation of panels. This is an aggregation of panels.

And some guidelines:

  • Use donuts instead of full pie charts
  • Try to create a panel that does not need any scroll
  • Try to create widgets without scrolling (this may happen in tables).

PR related: #188

Common fields as csv

Since we´re trying to describe all fields with a certain CSV format, i think we should do the same for the fields in README.md, section "Common Index Fields".

Add styles to GitHub pages

Current GitHub pages project site is more than poor: https://chaoss.github.io/grimoirelab-sigils

Some CSS magic and layout configuration is needed.

An interesting suggestion by @jsmanrique is including panel screenshot in the template, so users don't need to manually add it to their Markdown content (of course, they always can include more screenshots in content if needed)

[chaoss-gmd][code_development] Build a panel for Maintainer Response to Merge Request Duration

CHAOSS GMD working group has defined several metrics related to code development efficiency

Taking Maintainer Response to Merge Request Duration metric definition from there, build a panel around this metric. Ideally, this panel should contain:

  • No more than 5 widgets, to avoid overwhelming the user.
  • A markdown widget below with some basic explanations about what we are looking at.

Pull Request Merged panel can be used as an example of the structure we would like to follow:
https://chaoss.github.io/grimoirelab-sigils/chaoss-gmd-cde/pull_requests_merged/

For more info on how to contribute, please read:
https://github.com/chaoss/grimoirelab-sigils/blob/master/CONTRIBUTING.md

Add Crates.io data status panel

The current version of the panel does not have any piece of information related to how fresh the data is. That info should be part of the Data Status panel.

[Documentation] Modify repo structure to render it using GitHub pages

As a first step towards having collections of panels, @jsmanrique proposed to document repositories using the following structure:

.
├── docs
│   ├── assets
│   │   └── images
│   ├── panels
│   ├── _config.yml
│   ├── index.md
│   └── panel.md
├── panels
├── CONTRIBUTING.md
├── LICENSE.md
└── README.md

Beyond the obvious .md files:

  • panels has the set of .json files for all the panels.
  • docs folder has an structure to be rendered as static web with Jeckyll (GitHub does it directly):
    • _config.yml is the config file for the Jekyll page, and it must indicate that there is a collection of items in panels. See collections docs for Jekyll
    • index.md is the default website the user will see in bitergia.github.io/{panels-collection-name} (as we have https://chaoss.github.io/grimoirelab, that is rendering the content in https://github.com/chaoss/grimoirelab/docs)
    • panel.md is the default template for a panel documentation.
    • assets/imageshas panels screenshots.
    • panelshas one .md file for each panel that document the metrics and charts in that panel.

This is related to #296

Align nomenclature with Kibana upstream

While working with Kibiter via Bitergia, we've been struggling with using the right names to refer to the web UI components.

Some names are exclusive to Kibiter (e.g. widget), whereas others (e.g. Dashboard) have different meanings in Kibiter and Kibana. There are some hints as to the differences in the Sigils README, but there is not a canonical list with the definitions.

To add to the confusion, the Kibiter UI uses the Kibana terms (e.g. Visualization instead of Widget).

These are the terms we've been able to figure out so far (please feel free to correct where there is a mismatch):

Kibiter 6.1.x Kibana 6.1.x Notes
Widget Visualization Upstream documentation
Panel Dashboard Upstream documentation. Referred to as dashboards on https://bitergia.com/products/dashboards/
Dashboard N/A A whole set of panels. I believe this corresponds to the top-level navigation menus on the Bitergia platform (e.g. "Git", "Community", "Data status", etc.)

A proposal would be to update the documentation to align the terms to upstream.

The benefits for users would be less confusion, easier learning curve, and the ability to use Kibana upstream documentation directly. The benefits for maintainers would be the removal of the differences with upstream, preventing a mismatch between UI and documentation.

Output for comparison is misleading

There are two issues mentioned by @acs:

  1. When last property doesn't appear in both schemas, output shows something like:
 -  'utc_commit': {'agg': True, 'type': 'date'},
 ?                                             ^
 +  'utc_commit': {'agg': True, 'type': 'date'}}
 ?                                             ^
 -  'uuid': {'agg': True, 'type': 'keyword'}}

That means uuid is not present in the former schema, that ends with utc_commit. This is difficult to parse and even difficult to understand by a human.

  1. Comparison should take order of schemas into account, because we usually need that properties in first schema are included in the second one, but it is fine if the second one has more properties not included in the first one. That is, if the second one includes everything we find in the first one, then the second one is "compatible" with the first one. Right now differences are always shown in both sides.

Add aggregatable fields and index name to CSV Schema definition

From #117:

  • CSV files needs a way to define when text fields should be aggregatable. By default all fields are aggregatable by default except text fields. I added a workaround considering that in our current CSVs, text implies being aggregatable. This should be removed when CSVs are improved.
  • CSV files are not specifying index names. As a workaround, I used file name without file extension for this.

Remove directory dashboards5

Remove or rename directory dashboards5 which does not contain the latest version or the dashboards for Kibana 5 and which misleads end users or even bitergians like me ;)

Configure project to use Travis

@jsmanrique proposed the following check:

for each <collection_name>/<panel_file_name>.json there must be a docs/_<collection_name>/<panel_file_name>.md and docs/assets/images/<collection_name>/<panel_file_name>.jpg

After reading this I think you are the right person to review #304. @sduenas do you know if this check could be hooked somewhere?

@sduenas said:

With Travis would be possible. It would be like a check that is run by the tests - in the same way it is done with flake8 in other repositories.

So we need to configure Travis and add that check.

Rename gitlab index pattern

This is a follow up to https://gitlab.com/Bitergia/c/gitlab/support/issues/44#note_166532787

GitLab-specific panels use two index patterns in Kibiter:

  • gitlab => points to a gitlab-issues_* index
  • gitlab_merge_requests => points to a gitlab-mrs_* index

The naming is confusing here, as it would seem that gitlab is a general index pattern that encompasses both issues and MRs. In reality, gitlab only points to the issues index.

For consistency's sake, the gitlab index pattern should probably be renamed to gitlab_issues, and the default panels be updated accordingly to use the new name.

[chaoss-gmd][code_development] Build a panel for Pull Request Merge Duration

CHAOSS GMD working group has defined several metrics related to code development efficiency

Taking Pull Request Merge Duration metric definition from there, build a panel around this metric. Ideally, this panel should contain:

  • No more than 5 widgets, to avoid overwhelming the user.
  • A markdown widget below with some basic explanations about what we are looking at.

Pull Request Merged panel can be used as an example of the structure we would like to follow:
https://chaoss.github.io/grimoirelab-sigils/chaoss-gmd-cde/pull_requests_merged/

For more info on how to contribute, please read:
https://github.com/chaoss/grimoirelab-sigils/blob/master/CONTRIBUTING.md

Create indexes schemas for documentation and proper testing

We need a place where the data model is defined. CSV format sounds like a reasonable and easy format to parse. Typically in ElasticSearch mappings some information is specified. For instance, the name of the field, the type, if that's aggregatable, and others.

I require answers from @jgbarah , @alpgarcia and @sduenas in the following questions as they were commenting in the #99 pull request. What we get from this will be then re-implemented in another branch and the current one will be dismissed.

Question: Does CSV format fit your needs?

  • Answer: I prefer to use JSON as this is closer to the current technology and even in this case this is technology independent (this basically define field names and types). But CSV works for me as well.

Question: For the first iteration and for a standard data model, how many fields do we want to have and which ones?

  • Answer: I have initially added the name and the type that are the ones that could be standard in any platform. Fields such as aggregatable are technology dependent.

Question: If we have the software to produce the CSV/JSON files, do we need to currently have those?

  • Answer: there is a clear need to have the CSV/JSON files to show to others how the data model is, let them know that this can be updated and add a description to all of those that help to identify this.

Question: Do we want to produce software as the same time that we produce documentation and CSV/JSON files?

  • Answer: as initially the software was producing the CSV files, it sounded reasonable to me to have both in the same commit.

Explicity state what's the time unit for "Lead time" in Efficiency Help

The files github_issues_efficiency.json, json/gerrit_efficiency.json, json/github_pull_requests_efficiency.json (and files proposed in #302 for Gitlab) have a string
**Lead time**: the time between the initiation and completion of a production process, in this case, a review. Shown in average.

As a user, in the web browser, I see numbers on the y axis like 200, 400 but I do not know if those numbers are days or hours or minutes or something else. The help string above should explicitly cover this.

Gerrit-Backlog panel is displaying wrong list of organizations in the pie chart

How to reproduce this:

  • Open the Gerrit - Backlog panel. Then compare the number of changesets in the pie chart for a given organization to the number of changesets in the Summary widget.

Those are different because in the pie chart the number of changesets should be only the changesets opened as this is filtered in the rest of the panel.

Create GitLab efficiency panels

Similar to GitHub and Gerrit efficiency panels, we need to create GitLab panels.

These panels should follow these guidelines:

  • No more than 5 widgets, to avoid overwhelming the user.
  • A markdown widget below with some basic explanations about what we are looking at.

Add onion / community structure analysis as a new panel

The goal of the onion analysis is to produce a panel where core, regular, and casual developers can be tracked.

This panel gives an overview of the structure of the community by order importance and helps to understand how this evolves over time.

The code is ready to go in Grimoirelab-elk project.

Help usage messages in Demographics panel

Time picker in Demographics panel does not work because it doesn't use live data. Data are pre-calculated. It would be useful to add some kind of markdown box (like the ones in Efficiency panels) to inform about this issue. Otherwise, the behaviour of the panel would be weird.

Require DCO sign-off for new commits

This issue is to activate protobot/dco (or similar bot) to check that all commits have a sign-off in this repository.

The CHAOSS Project Charter section 8.2.1 requires that all contributions are signed-off. The CHAOSS project has been piloting the use of DCO sign-offs. Once contributors know how to do it, sign-offs are easy to do with little overhead.

For users of the git command line interface, a sign-off is accomplished with the -s as part of the commit command: git commit -s -m 'This is a commit message'

For users of the GitHub interface, a sign-off is accomplished by writing Signed-off-by: Your Name <[email protected]> into the commit comment field. This can be automated by using a browser plugin like scottrigby/dco-gh-ui

To-Do for repo maintainers: Please inform your contributors about DCO sign-offs and comment on this issue when your are ready for the DCO bot to be activated on this repository.

Add custom exclusion list to Schema class

Schema class should allow to define a list of custom exclusion fields to let the user decide what not to compare. By default we should exclude ES internal fields, but in some cases adding more fields could be interesting to get a cleaner output.

My proposal is using a new argument in construction for this that would be empty by default.

New GitHub Performance panel PoC

I've created a panel to show time to solve (Lead Time for some people) issues and pull requests (you can filter by one or the others) average and evolution over time and the relation between closed and opened issues or pull requests (AKA Backlog Management Index, or BMI). Using gauges visualization and Timeline I've set some thresholds to allow visual check if they are over passed.
imagen

Here goes zipped the panel .json file generated with Kidash:
jsm_github_performance.zip

If you find it interesting, feel free (as freedom) to use, reuse, modify and redistribute it!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.