Week 2 summary

Over the last week, I created a structure for the reference implementation modules. It look a long time, but I learnt a lot on how to effectively design a project. I had four tasks for this week, but they more or less revolved around Task1.

Tasks for Week 2

  • Create the root class
  • Modify the Code_Changes-git implementation
  • Discuss creating reference implementation without pandas
  • Create implementations for the next few metrics (2 in number)

Summary for week 2

  • Create the root class(#7)

    After several iterations, me and the mentors have agreed on a simple layout. The layout is as discussed in previous posts, to a great extent, but will be elaborated below.

  • Modify the Code_Changes-git implementation(#7)

    Code_Changes-git metric has been completed and updated regularly along with the iterations of the Root class. A pull request to wg-evolution will be created soon.

  • Create a reference implementation of Code_changes-git without pandas

    This point was not discussed properly due to lack of time and priorities of other tasks. The iterations of the class structure took a lot longer than expected, due to different ideas and understanding between me and the mentors.

  • Create implementations for the next few metrics (2 in number)

    Most of the implementations have been completed. The constant iterations of the structure and functionality of the root class meant that I had to keep changing the metric implementations to work with the changes. The last few changes are yet to be implemented for these two implementations but will not take long.

$ \ $

Meeting details

Today, I had the regular weekly meet with my mentors regarding my progress. The meeting is summarized below.

Agenda

  • New Implementation structure
  • Tasks for the next week

Summary

  • The new implementation structure
    After spending a significant amount of time discussing the structure and layout of the new reference implementations, we finally agreed to go with the following:

      class Metric
          convert data_list to dataframe
    
      class Commit (inherits from Metric)
          - clean the dataframe from Metric class
          - remove commits outside the mentioned (since, until) period
          - remove commits decided to be outside the source code
    
      class CodeChanges (inherits from Commit)
          - compute metric
          - compute metric for a regular timeperiod
    
      class SourceCode
          - provide different implementations to decide how "source code" is defined
          - naive implementation (assuming everything is a part of source code)
          - path exclude (excluding entire directories, like "tests/")
          - extension exclude (excluding particular file types, like "py")
    
      utils.py
    
      tests/
    
    
  • Tasks for the next week

    • Finish Code_changes-git completely (with analysis). Everything except a little explanatory documentation is left. The main purpose of reference implementations is to help in understanding. At the end of the notebook, an explanation of how the metric is computed will be added.

    • Create a pull request for Code_changes-git in wg-evolution, after completing the above task.

    • Create a pull request for Open_issues_Age, which is similar to the above, except that it would require the creation of an Issue class, just like Code_changes-git has a Commit parent class.

    • Create a pull request for Issue-Response-Time. Just like the previous task.

    • Decide a structure and layout for non-pandas implementation during the week. This will be similar to the discussion that took place this week, the only difference being that this implementation will be done without the use of Pandas.

The log for this meeting can be found here.

The next meeting will be on June 14th.
For older GSoC posts, please click here.