Apache Incubator Project Explorer (APEX) is a long-term research project, in which models and algorithms to integrate and advance the analysis and visualization of social networks and technical networks are being developed. APEX is the design and implementation of a software tool intended for research in OSS projects, especially for ASF incubator projects.
- d3 v3
- d3 v4
- Bootstrap 3.3.5
- jquery 1.9.2 or 2.1.3
cd <downloaded project folder>
#run a local host server
python -m http.server
#or
python3 -m http.server
Since APEX is designed to so as to understand the the socio-technical aspects of a Open Sourced Project it can be used in the following way.
- First Use the input drop down menu/selector to select a the desired project
- Once the project is selected all the windows will be populated with data or visuals
- The visuals show are:
- Graduation Forecast Visual:
- Which shows a forecast value associated with each project time period.
- The current month for all the visuals can be also changed here by hover over the desired month and clicked to change the month
- Current month is indicated at all time by a red dot
- Social Network:
- Allows us to visualize the select project and the current months email exchange between developers working for that particular project
- Visual has two sides , the sender nodes and the receiver nodes
- Both have a the names of the developers who participated in selected project and month . Also shows a percentage based on the number of replies in the receiver side or the number of emails sent in the sender side by that particular developer.
- On hovering over a particular developer on can drill through to further understand the developer habits and the email patterns based on who the email more often.
- On clicking on a particular developer . On can find their name available in the Social Network Nodes button where upon further clicking on will find a popover window all their emails sorted by the time.
- Technical Network:
- All the functionality is the same as the social network. But instead it shows developer and the files that they have committed
- Graduation Forecast Visual:
- Below both the social and technical network visuals we shows some stats associated with the project for that month . Like Number of emails exchanges for that month , etc
- Some other functionality include the ability to resize windows to better understand the data /visuals/text. Also the social and technical networks have buttons to help control their size.
Select the Project using the the Selector
├── resetAll()-- called inside the updating.js function --(https://github.com/anirudhsuresh/APEX/blob/main/updating.js)
│ └── this resets the current month and the months in whole dashboard
│ └── updateAll() is also called after this
│ ├── getMonth();
│ │ └── get the current month for the projects reports
│ ├── make_reports();
│ │ └── calls the projects reports to be added
│ ├── $("#chk").prop("checked", false);
│ │ └── ensure range slider is closed at this point
│ ├── $("#make_range_slider").prop("checked", false);
│ ├── $("#hideableDiv").hide();
│ ├── $("#hideableDiv2").show();
│ │ └── closes the range slider
│ └── UpdateprojectInfo();
│ ├── updates the project information
│ ├── UpdateEmailNet()--(https://github.com/anirudhsuresh/APEX/blob/main/social_net.js)
│ │ └── updates the social network
│ ├── UpdateTechnicalNet() --(https://github.com/anirudhsuresh/APEX/blob/main/tech_net.js)
│ │ └── updates the technical network
│ ├── reducing zeros in email / commit network
│ │ ├── function removes people who contirbute less than 1%
│ │ └── --(https://github.com/anirudhsuresh/APEX/blob/main/thresholds_for_networks.js)
│ └── event handling inside both networks
│ ├── mouseover
│ │ └── make the particular dev bold
│ ├── mouseout
│ └── click
│ ├── on click grab the developer name
│ └── calls call_table_commits/emails()
│ └── build the popover and the links for the email and commit deep dive
│ └── --(https://github.com/anirudhsuresh/APEX/blob/main/email_links~orcommit_links.js)
└── make_chart()
└── builds the graduation forecast
└── ---(https://github.com/anirudhsuresh/APEX/blob/main/graduation_forecast.js)
Range Slider
├── click the checkbox
└── updateAll_for_range_slider() is triggered --(https://github.com/anirudhsuresh/APEX/blob/main/updating.js line 22)
├── creates the no ui html slider --(https://github.com/anirudhsuresh/APEX/blob/main/no_ui_slider.js)
└── aggregate__network_stats()
├── which works on calling other functions that aggregate the network and the statistics
├── we have various functions that aggregate the social network , technical network, and the stats
├── create the current date range and then feed it to other functions
└── make buttons in the project window component
└── updateSliderRange(min, max)
└── get the max incubation of the current project and update the range slider
UPDATED DATA
├── new
│ ├── commits_measure : Data about the commit measurements
│ ├── email_measures :Data about the email measurements
│ ├── new_about_data : Data about the various projects
│ ├── new_emails : Data for social network
│ ├── grouped_new_commits :Data for tech network
│ ├── new_forecast : Data for forecast viz
│ └── new_month_intervals : Data about the dates
├── new_monthly_commits
│ └── Commit Links Data : Data about the commit links
├── Takeout
│ └── Drive
│ └── new_deep_dive_email_data
│ └── tester_monthly_emails
│ └── Emails Links Data : data about the email links
└── data1
└── report data