GSOC_2016_proposal_Compilation_Firewall - Org:Libreoffice

Mohit Kumra mohitkumra95 at gmail.com
Fri Apr 8 15:52:57 UTC 2016


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.

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 at gmail.com> wrote:

> Mohit Kumra <mohitkumra95 at gmail.com> has invited you to *comment on* the
> following document:
> GSOC_2016_proposal_Compilation_Firewall
> <https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&ts=56f4f059>
> [image: Sender's profile photo]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
> <https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&ts=56f4f059>
> Snapshot of the item below:
> Output-Device use a Compilation Firewall for LibreofficeMOHIT KUMRAMARCH
> 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:
>
>    1. 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.
>    2. The header file does not need to #include classes that are used 'by
>    value' in private member variables, thus compile times are faster.
>    3. 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:
>
>    1. Put all the private member variables into a struct.
>    2. Put the struct definition in the .cpp file.
>    3. In the header file, put only the Forward Declaration of the struct.
>    4. In the class definition, declare a (smart) pointer to the struct as
>    the only private member variable.
>    5. The constructors for the class need to create the struct.
>    6. The destructor of the class needs to destroy the struct (possibly
>    implicitly due to use of a smart pointer).
>    7. The assignment operator and Copy Constructor need to copy the
>    struct appropriately or else be disabled.
>
> To study for Compilation file links are:
>
>    1. http://c2.com/cgi/wiki?PimplIdiom
>    <https://www.google.com/url?q=http://c2.com/cgi/wiki?PimplIdiom&sa=D&ust=1458896488814000&usg=AFQjCNF92l549sJWoCrSXIdcjzGOWKYZ9A>
>    2.
>    http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used
>    <https://www.google.com/url?q=http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used&sa=D&ust=1458896488815000&usg=AFQjCNGbw8lwAK_xGSfz8PQkt_iL0k8GOg>
>    3. http://herbsutter.com/gotw/_100/
>    <https://www.google.com/url?q=http://herbsutter.com/gotw/_100/&sa=D&ust=1458896488816000&usg=AFQjCNF8I_uyZuyRssarUN-e7p4gzM98DQ>
>
> 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
>    <https://www.google.com/url?q=https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp%3Dsharing&sa=D&ust=1458896488834000&usg=AFQjCNGCsIQTt1B3q22MvUy1UsNT4Wuq8g>
>
> 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
> <https://support.google.com/drive/?p=courtesy_copy> to learn more. [image:
> Logo for Google Docs] <https://drive.google.com>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20160408/3a48eba7/attachment.html>


More information about the LibreOffice mailing list