Difference between revisions of "User:Ksuzee/Proposal"

From BRL-CAD
Line 85: Line 85:
 
I think the tool "Simian" is really useful and easy in use. Also it works rather fast. If I am involved into this project I want to use it specifically. But, of course, if my mentor advises me something else, I will improve my skills in other tool
 
I think the tool "Simian" is really useful and easy in use. Also it works rather fast. If I am involved into this project I want to use it specifically. But, of course, if my mentor advises me something else, I will improve my skills in other tool
  
to be continued
+
= Deliverables =
 +
The main expectation is much clearer code with much fewer lines with no bugs or errors after reduction. My personal aim is getting useful experience and knowledge which could help me in my future and, maybe, would give me a chance to work with this company even after this project
 +
 
 +
= Development schedule =
 +
*before 23.04 - continuing to get familiar with project
 +
*23.04 - 21.05 - active communication with mentor(s), asking questions, getting ready for start
 +
*21.05 - 1.07 - coding. Working with the first part of the project
 +
*1.07 - 9.07 - bugs fixing, review to be ready for submitting
 +
*9.07 - 13.07 - submitting
 +
*13.07 - 13.08 - coding the second part of the project
 +
*13.08 - 20.08 - bugs fixing, review to be ready for submitting the final result
 +
 
 +
= Time availability =
 +
I will not have any other jobs or project during participation in the project. My exams ends on the 18th of May because of EURO-2012, so I will have a lot of free time. All trips or vocations I am going to have in the end of August (after GSoC).
 +
I am going to work almost every day (6 days per week; not 7 - because, I am sure, every person must have a weekend for effective working) and 8 hours per day (for example: 8-00 - 14-00 and 19-00 - 21-00). If it is necessary for me to go somewhere during working on the project, I will work longer and harder before it to compensate this time.
 +
 
 +
= Why BRL-CAD =
 +
Recently, I have started being interested in computer graphic and modeling, so I would like to improve my skills with the help of this company. But I am not so good at these things yet, so I decided to try to take part in the project where my skills are better.
 +
Also it is really pleasantly that I always get sensible answers from mentor (Sean Morrison) for my questions. All the responses are totally complete. It seems people are interested in success of their project, therefore, there is also a moral reason of my desire to work with BRL-CAD.
 +
 
 +
= Why I =
 +
I would not like to tell that I am "excellent" programmer or something like that. I want only to say that I am ready to work hard and to study new important knowledge. And I hope, BRL-CAD will help me with it. Studying and getting experience are on the first place of this period of my life.

Revision as of 16:30, 2 April 2012

Project title

Code Reduction

Brief summary

BRL-CAD has the really huge project. There are a lot of libraries and different files, so there is such problem as code duplication. The sources must be cleaner and smaller. The code must be easy to read and understandable. This reduction will help new developers to make their work more effective and faster. So, the main aim is to shorten the count of lines of code without disrupting the project. Special tests will help not to disrupt the project after reduction.

Detailed description

I decided to choose this project, because, I am sure, I have enough knowledge in c/c++ for doing it. I've been working with it since 19.03.2012. Unfortunately I have a lot of subjects (about 12) this year, so I don't have enough time for working with BRL-CAD and patches every day. Nevertheless, after the 1-5 of May I will be absolutely free and ready to work hard.

Proposes for reduction

BRL-CAD has quite useful Virtual Machine, which helped me to do my first steps with it. Mentor Sean helped me to become quite familiar with it. After several tests with "Simian" I understood that the work for reduction will be really huge. There are a lot of duplications (e.g. just copy-pasts). After testing I can propose such ideas:

  • Duplication in one file.
 Example:
 int
 bu_strcmp(const char *string1, const char *string2)
 {
   const char *s1 = "";
   const char *s2 = "";
   /* "" and NULL are considered equivalent which helps prevent
    * strcmp() from crashing.
    */
   if (string1) s1 = string1;
   if (string2) s2 = string2;
   return strcmp(s1, s2);
 }
 int
 bu_strncmp(const char *string1, const char *string2, size_t n)
 {
   /* the same body */
   return strncmp(s1, s2, n);
 }
 int
 bu_strcasecmp(const char *string1, const char *string2)
 {
   /* the same body */
   return strcasecmp(s1, s2);
 }
 int
 bu_strncasecmp(const char *string1, const char *string2, size_t n)
 {
   /* the same body */
   return strncasecmp(s1, s2, n);
 }

These functions are situated in file src/libbu/str.c. All these functions have the same bodies. So I propose to change these four functions and have function with such body:

 int
 bu_strcmp(const char *string1, const char *string2, size_t n, unsigned char cases_cmp)
 {
   const char *s1 = "";
   const char *s2 = "";
   /* "" and NULL are considered equivalent which helps prevent
    * strncmp() from crashing.
    */
   if (string1) s1 = string1;
   if (string2) s2 = string2;
   if (cases_cmp)
    {

if (n == 0) return strncasecmp(s1, s2);

       return strncasecmp(s1, s2, n);	
    }
   if (n == 0) return strcmp(s1, s2);
   return strncmp(s1, s2, n);
 }

The next step is to find functions' calls and correct them

  • Duplication in one directory but different files

In such situation I suggest to make file like "utils.c" which would be common for this directory. I have already done the patch for such situation: my first patch

  • Duplication in different directories

Such duplication must be the most careful and difficult, because every change can influence working the whole project. Common functions will be situated in the libraries.

Tests and patches

I am sure, it is necessary to make tests as much as possible to avoid mistakes or to find them before big changes. I think that simple unit tests would be the best way in this situation.

As for patches, I think, they must be doing very often during the whole period of working for the same reason as tests.

Simian

I think the tool "Simian" is really useful and easy in use. Also it works rather fast. If I am involved into this project I want to use it specifically. But, of course, if my mentor advises me something else, I will improve my skills in other tool

Deliverables

The main expectation is much clearer code with much fewer lines with no bugs or errors after reduction. My personal aim is getting useful experience and knowledge which could help me in my future and, maybe, would give me a chance to work with this company even after this project

Development schedule

  • before 23.04 - continuing to get familiar with project
  • 23.04 - 21.05 - active communication with mentor(s), asking questions, getting ready for start
  • 21.05 - 1.07 - coding. Working with the first part of the project
  • 1.07 - 9.07 - bugs fixing, review to be ready for submitting
  • 9.07 - 13.07 - submitting
  • 13.07 - 13.08 - coding the second part of the project
  • 13.08 - 20.08 - bugs fixing, review to be ready for submitting the final result

Time availability

I will not have any other jobs or project during participation in the project. My exams ends on the 18th of May because of EURO-2012, so I will have a lot of free time. All trips or vocations I am going to have in the end of August (after GSoC). I am going to work almost every day (6 days per week; not 7 - because, I am sure, every person must have a weekend for effective working) and 8 hours per day (for example: 8-00 - 14-00 and 19-00 - 21-00). If it is necessary for me to go somewhere during working on the project, I will work longer and harder before it to compensate this time.

Why BRL-CAD

Recently, I have started being interested in computer graphic and modeling, so I would like to improve my skills with the help of this company. But I am not so good at these things yet, so I decided to try to take part in the project where my skills are better. Also it is really pleasantly that I always get sensible answers from mentor (Sean Morrison) for my questions. All the responses are totally complete. It seems people are interested in success of their project, therefore, there is also a moral reason of my desire to work with BRL-CAD.

Why I

I would not like to tell that I am "excellent" programmer or something like that. I want only to say that I am ready to work hard and to study new important knowledge. And I hope, BRL-CAD will help me with it. Studying and getting experience are on the first place of this period of my life.