Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index




On 08 Apr 2016, at 17:52, Mohit Kumra <mohitkumra95@gmail.com> wrote:

Reference: to the mail on 25th of March 2016

This is to bring to your notice that I have applied for GSOC 2016 with Project 
Title-Output-Device use a Compilation Firewall for Libreoffice for  ORG:Libreoffice, under your 
Mentorship.

Kindly provide with the technologies to be used and a brief description of the work to be done.So 
that I could start working on the Project right away and showcase you the basic layout and some 
constructive work for the Project.With this you will be able to decide whether you would consider 
opting me for the Project.

Please look at the GSoC timeline, we are in a different phase now.

rgds
jan i

We can have a Skype session if you would feel suitable for an interactive session.

Link to Application: 
https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing

On Fri, Mar 25, 2016 at 1:31 PM, Mohit Kumra (via Google Docs) <mohitkumra95@gmail.com> wrote:

Mohit Kumra has invited you to comment on the following document:

GSOC_2016_proposal_Compilation_Firewall
     I am extremely interested in working for the OutputDevice class Compilation Firewall 
project I have C,C++,Java,scripting,Python,and have working proficiency of STL.

It is requested to review the Proposal for Output-Device use a Compilation Firewall for 
Libreoffice.

Thank you for the consideration.A quick reply is appreciated!!
Open in Docs
Snapshot of the item below:
Output-Device use a Compilation Firewall for Libreoffice
MOHIT KUMRA
MARCH 23rd 2016
MENTOR: Chris Sherlock
Student Name: MOHIT KUMRA
DATE: MARCH 23rd  2016
TITLE: Compilation firewall for Libreoffice and Modularizing the Output-Device class.
SYNOPSIS:
Data abstraction refers to, providing only essential information to the outside world and hiding 
their background details.With the introduction of this concept programs and developers now could 
easily write the code and had lesser chances of depiction of all the features to all thus 
minimizing the threat of code corruption.
I would recommend to make the compilation firewall for the Output-Device class and to split the 
functionality of the Output-Device class. This would minimize the massive load due to 
functionality being encapsulated into a dense form in the Output-Device class, thereby enabling 
programs to run faster with inclusion of the Compilation Firewall.
The Project:
In any programming language writing code does not imply that it is in alignment with the 
guidelines but one needs to ensure that the code is protected and secure against 
corruption/malwares thereby having zero or minimal code smells.
The concept of Data abstraction provides us with the feature of hiding the details and depicting 
only the essential details to the end user. For this we use the PIMPL Idiom (Pointer to 
IMPLementation) is a technique for implementation hiding in which a public class wraps a 
structure or class that cannot be seen outside the library the public class is part of. This 
hides internal implementation details and data from the user of the library.
These are the Benefits of using PIMPL Idiom:
Benefits:
Changing private member variables of a class does not require recompiling classes that depend on 
it, thus make times are faster, and the well known Fragile Binary Interface Problem() is reduced.
The header file does not need to #include classes that are used 'by value' in private member 
variables, thus compile times are faster.
This is sort of like the way Small Talk (a well known unusual syntax based language) 
automatically handles classes... more pure encapsulation.
The Implementation of making the Compilation Firewall file with the help of the pmlpl idom 
format is as follows:
How to do it:
Put all the private member variables into a struct.
Put the struct definition in the .cpp file.
In the header file, put only the Forward Declaration of the struct.
In the class definition, declare a (smart) pointer to the struct as the only private member 
variable.
The constructors for the class need to create the struct.
The destructor of the class needs to destroy the struct (possibly implicitly due to use of a 
smart pointer).
The assignment operator and Copy Constructor need to copy the struct appropriately or else be 
disabled.
To study for Compilation file links are:
http://c2.com/cgi/wiki?PimplIdiom
http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used
http://herbsutter.com/gotw/_100/
Example:
#include <iostream>
using namespace std;
class Adder1{
   public:
      // constructor
      Adder1(int i = 0)
      {
        total1 = i;
      }
      // interface to outside world
      void addNum1(int number)
      {
          total1 += number;
      }
      // interface to outside world
      int getTotal1()
      {
          return total1;
      };
   private:
      // hidden data from outside world
      int total1;
};
int main( )
{
   Adder1 a;
   
   a.addNum1(10);
   a.addNum1(20);
   a.addNum1(30);
   cout << "Total " << a.getTotal1() <<endl;
 system("pause");
   return 0;
}
The Output is : Total 60
Above class adds numbers together, and returns the sum. The public members addNum1 and getTotal1 
are the interfaces to the outside world and a user needs to know them to use the class. The 
private member total1 is something that the user doesn't need to know about, but is needed for 
the class to operate properly.
Road-Map: 
For Project Development, following steps would be followed:
1. Review: On acceptance of the proposal for the project I would review the code provided by the 
Mentors and try to analyse and familiarize with the Data members and Data functions being used 
in the code. (May 23rd - May 30th 2016)
2. Refactor: After reviewing the code, I will use my skillset for refactoring the code. Thus 
making the code more effective and efficient in terms of complexity( Time + Space ) and would 
modularize the code as much as possible. This would take less than a week to complete.(June 2016)
3. Step 2 would help in achieving the goal of reducing the massive Output-Device class code into 
modules and subclasses.
4. Develop: Parallel to modularizing the Output-Device class code I would deduce and implement a 
methodology for making the compilation firewall for the Output-Device class of the 
LibreOffice.(June 20th - July 20th 2016 ) 
Design Strategy: 
Abstraction separates code into interface and implementation. So while designing the component, 
I will keep interface independent of the implementation so that if I change underlying 
implementation the interface would remain intact.
Steps to be followed would include:
a. Put all the private member variables into a struct.
b. Put the struct definition in the .cpp file.
c. In the header file, put only the Forward Declaration of the struct.
d. In the class definition, declare a pointer to the struct as the only private member variable.
e. The constructors for the class need to create the struct.
f. The destructor of the class needs to destroy the struct (possibly implicitly due to use of a 
smart pointer).
g. The assignment operator and Copy Constructor need to copy the struct appropriately or else be 
disabled.
5. Reconcile:On achieving the goal of the project would Reconcile the work and provide the 
Mentor with all possible updates and features of the development with the help of DFD (Data flow 
Diagrams) and all the documentation required by the Mentor.(Last week of July- August 2016)
Conclusion:
When the Project would achieve the goals it would be suitable for implementation to the system. 
The Output-Device class would then be modularized and its compilation firewall would also be 
implemented effectively.
Proficiency:
I am proficient in C,C++,JAVA and have worked on developmental projects undertaking these 
languages.
Resume link: https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp=sharing
University Information:
University Name: JAYPEE INSTITUTE OF INFORMATION TECHNOLOGY
Major:COMPUTER SCIENCE ENGINEERING
Current Year and Expected Graduation date: 3rd YEAR & 31-06-2017
Degree (e.g. BSc, PhD):B.Tech
This is a courtesy copy of an email for your record only. It's not the same email your 
collaborators received. Click here to learn more.     

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.