From Fedora Project Wiki

Utkarsh Anand

Utkarsh.jpg

Personal Information

Time Zone:

IST (UTC+5:30)

Gmail ID:

uanand009@gmail.com

LinkedIN:

https://www.linkedin.com/in/utkarsh-anand-02a953115/

Github:

https://www.github.com/utkarsh009/

Badges! (13)

Paranoid Panda White Rabbit Let Me Introduce Myself Origin Involvement Crypto Panda In Search of the Bull (Tester I) Crypto Badger Curious Penguin (Ask Fedora I) Nuancier F26 Associate Editor Junior Badger (Badger I) Junior Editor

Supplementary Proposal for dnf-plugin-pip and 389 Directory Server: developing administrative tools

About me

  • Education

  • I completed my primary, secondary and senior secondary education from Delhi Public School, Ranchi. It was here that I realized my true potential as a geek and coder. The teachers were cooperative and always kept informing me about events related to computer science that used to take place. Currently, I am a second year undergraduate student studying Physics at Indian Institute of Technology, Kanpur. I will graduate from here in April, 2019.

  • University Information

University

Indian Institute of Technology, Kanpur

Major

Physics

Current Year

Second Year

Degree

Bachelor of Science (B.S.)

  • Do you have any past involvement with the Fedora Project or another open-source project as a contributor? What kind of contributions have you made (code and non-code)? Please share any public contributions you have made (urls, etc.)

  • Here are two of the projects that I have worked on (one of them is related to Fedora Project:
    • I have just finished working on creating a slack bot/app and hosting all of its code on Amazon web services. This includes authorizing the app via OAuth 2.0 and fiddling with the events API and the Web API. For authorizing, I made request (via “add to Slack” button) to pass through Amazon API Gateway in order to map the code query parameter into json format and pass it as the event argument to the AWS Lambda function. Later, the access token is persisted to DynamoDB. The bot converts one currency to another. The file events.py is used to handle the events sent by Slack and invoke actions.py. actions.py later sends a request to fixer.io to get the data and then performs conversion and sends the result back to the channel. I have used python runtime for it, and the code has been uploaded on my github profile under the repository: SlackBot_utkapp. All this is achieved using the AWS Serverless framework.
    • I also managed to create a script for switching to Intel IGP on laptops with hybrid graphics. Although, the script is pretty simple, there was a lot of work involved. I had to deal with numerous system crashes and reinstall the OS altogether. I managed to recover the system a few times by chrooting into it from a live cd (of some other linux distribution), but the cases related to uninstalling packages using dnf often resulted in broken dependencies. Once the system was recovered, I had to reinstall the packages and then uninstall them properly. For more details, visit my blog



  • What are you studying?

  • I study B.S. Physics at Indian Institute of Technology, Kanpur.

  • What motivates you to do your best? How do you stay focused? Briefly describe how you organize your work.

  • "To excel at what I do" motivates me to do my best. I don't have to do anything to maintain my focus. If there is something that I enjoy doing, it automatically attracts me. As for organising work, "Need" is what governs it and the best part is, "The lesser the time, the greater the speed".

Why Us? - Consider these questions

  • Why do you want to work with the Fedora Project?

  • I started my Linux journey all the way back in october 2009 with ubuntu 9.10. Back then I was looking for an alternative to windows because I was fed up by the fact that I had lost all my data due to virus and malware infection. At that time, I only knew about one linux distribution, “RED HAT ENTERPRISE LINUX”. When I googled about it, I found out that fedora was what I need to download for desktop. Upon googling a bit more, I found out that the most user friendly Linux distribution at that time was Ubuntu. So, I decided to download the ubuntu netbook-remix version for my 11” netbook (which I got as a prize in an olympiad). Of course I encountered many problems, in particular because wifi was not working. I googled and found out that I needed the proprietary bcmwl driver for it. Slowly and slowly I started enjoying fixing things on linux. Finally, I decided to have a dual boot configuration with 2 linux systems and remove windows xp completely from my device. It was then that I started using Fedora alongside Ubuntu. I started my fedora journey from fedora 13 “Goddard”. And then, there was no looking back. Since then, I am using Fedora and ubuntu as my primary OS'es. I tried various other distributions like OpenSuse, PCLinuxOS, Mint etc. but none of them managed to replace these two. Currently, I am running Fedora 25 alongside windows 10. I chose Fedora 25 because my new laptop has 6th generation Intel “Skylake” processor (i5 6300HQ) with nvidia GTX950M (that supports optimus technology), so I wanted to have kernel 4.4.x for skylake to be stable. I want to use GSoC as an opportunity, to contribute to Fedora through code.

  • Do you plan to continue contributing to the Fedora Project after GSoC? If yes, what sub-project(s) are you interested with?

  • Yes,I would like to continue contributing to Fedora Project after GSoC. I'm interested in all the projects related to project-atomic and other operating system related tasks.



Why This Project?

  • Which specific project interests you? If you are proposing your own project, do it here. If you are proposing the project, explain why it benefits the community.

  • I am interested in two projects:
    • dnf-plugin-pip (This was an idea on the ideas page but has been taken off, so I propose it as my own idea)
      The aim of this project is to provide users with a tool (in the form of a dnf plugin) to enable them to install as many python modules/packages as possible, via rpm. This would eliminate the need to install packages via pip, which currently, doesn’t integrate properly with fedora, often leading to unwanted errors. For, example the errors may arise from dependency issues for certain packages. But, since PyPI is such a large repository of python packages, most of the programmers rely heavily on it. Packages in fedora are not always named the same as their name in PyPI, so this plugin would require the user to input the name of the package/module on PyPI and it would automatically search for the corresponding rpm package and install it. This would save a lot of time that users generally waste searching for the right package. So, this project is of prime importance and would make life much simpler for my fellow programmers. The plugin will use Changes/Automatic_Provides_for_Python_RPM_Packages to find the appropriate packages to install. The plugin will be able to search for the appropriate rpm package by taking as an input, their “popular name” (name on PyPI).
      • Final Deliverable:The final deliverable will be a dnf plugin which can be accessed via the command
        dnf pip <command> <module_name> <options/flags> <requirements file>
      • Tentative List of Commands:
        • install: Install a module
        • unistall: Uninstall a module
        • freeze: Output installed packages in requirements format.
        • list: List installed packages
        • show: Show information about installed packages.
        • search: Search PyPI for packages.
        • wheel: Build wheels from your requirements.
    • 389 Directory Server: developing administrative tools(Since this is not my own idea, an explanation is provided in one of the sections below)


  • Have you contacted the mentor(s) listed for the project?

  • Yes, I've talked to both Miro Hrončok and William Brown. Although, Miro took the proposal off the site, William was happy to review my proposal.

  • What relevant experience do you have for this project?

  • Here are two of the projects that I have worked on (one of them is related to Fedora Project:
    • I have just finished working on creating a slack bot/app and hosting all of its code on Amazon web services. This includes authorizing the app via OAuth 2.0 and fiddling with the events API and the Web API. For authorizing, I made request (via “add to Slack” button) to pass through Amazon API Gateway in order to map the code query parameter into json format and pass it as the event argument to the AWS Lambda function. Later, the access token is persisted to DynamoDB. The bot converts one currency to another. The file events.py is used to handle the events sent by Slack and invoke actions.py. actions.py later sends a request to fixer.io to get the data and then performs conversion and sends the result back to the channel. I have used python runtime for it, and the code has been uploaded on my github profile under the repository: SlackBot_utkapp. All this is achieved using the AWS Serverless architecture.
    • I also managed to create a script for switching to Intel IGP on laptops with hybrid graphics. Although, the script is pretty simple, there was a lot of work involved. I had to deal with numerous system crashes and reinstall the OS altogether. I managed to recover the system a few times by chrooting into it from a live cd (of some other linux distribution), but the cases related to uninstalling packages using dnf often resulted in broken dependencies. Once the system was recovered, I had to reinstall the packages and then uninstall them properly. For more details, visit my blog



  • What do you want to gain from this project?

  • The main reason I'm applying for these projects is that I want to start contributing to Fedora Community through code. This will give me an opportunity to understand the working of fedora community.

  • Describe this project in your own words. What does it mean to you? What do you think the final deliverable is?

  • This project aims at improving the recently introduced python administration framework to replace the legacy perl tools. Lib389 is a python base library for managing Directory servers. It was initially created to help writing tests of DS. It can also be used to create new administration CLIs. Lib389 already has all the parts needed to make an administrative toolkit. dsconf and dsadm are just wrappers on this. dsconf is the tool to manage “configuration of Directory Server instances”. By the end of this project, the functionality of dsconf will be extended to support enabling/disabling/ configuration of modules in Directory Server. The legacy perl tools currently in use are designed following the philosophy of “one task per script” which can be piped as and when required. However, this approach can lead to a lot of confusion and is generally difficult to maintain. By extending dsconf we can provide a unified interface to the users and developers alike. As python support objects and provide an easy way to write functions, it makes it much easier to interpret and maintain the code. For the users, running commands is simpler.
    The Final Deliverable: A new version of dsconf wherein the functionality of dsconf will have extended to support enabling/disabling/configuration of modules in Directory Server.



  • Why should we choose you over other applicants?

  • I believe there are many reasons for selecting me over others:
    • I have an experience of almost 8 years working with several linux distributions.
    • I am comfortable tweaking around with system files and stuff like that.
    • I started programming in C++ and C even before I started using Linux. [Initially I started with LOGO (Language Of Graphics Oriented) and BASIC and then moved on to C++]
    • Currently I’m familiar with many programming languages like python, Go, javascript etc. to name a few.
    • I’m familiar with the idea of “schema” (I had to write one for my API Gateway) and Regex pattern matching (I saw these being used in some of the perl scripts), which other candidates might not be familiar with.
    • I am a fast learner and I can grasp things pretty fast. “Speed” is what really distinguishes me from others.
    • I like solving puzzles and I'm very curious.
    • I can code all day long. That’s something I really enjoy and love to do. :)

  • Courses

  • ESO207A: Data Structures and Algorithms
  • ESC201A: Introduction to Electronics
  • LFS151x: Introduction to Cloud Infrastructure Technologies
  • LFS152x: Introduction to OpenStack



  • Achievements

  • National Talent Search Examination Awardee, 2009-10 (Organised by Government of India)
  • All India Rank 1, Unified Cyber Olympiad 2011-12 (Organised by Unified Council)
  • All India Rank 2, Unified Cyber Olympiad 2008-09 (Organised by Unified Council)
  • All India Rank 3, National Cyber Olympiad 2008-09 (Organised by Science Olympiad Foundation) (Final Round)
  • International Rank 4, National Science Olympiad 2010-11 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 7, National Science Olympiad 2009-10 (Organised by Science Olympiad Foundation) (First Round)
  • All India Rank 12, National Science Talent Search Examination 2004-05 (Organised by Unified Council)
  • All India Rank 15, National Science Olympiad 2008-09 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 18, National Science Talent Search Examination 2009-10 (Organised by Unified Council)
  • All India Rank 18, National Science Talent Search Examination 2005-06 (Organised by Unified Council)
  • All India Rank 19, Delhi Public School, Science and Maths Talent Search Examination 2010-11 (Final Round)
  • All India Rank 20, National Cyber Olympiad 2005-06 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 22, Unified Cyber Olympiad 2010-11 (Organised by Unified Council)
  • All India Rank 22, National Cyber Olympiad 2005-06 (Organised by Science Olympiad Foundation) (First Round)
  • International Rank 26, National Cyber Olympiad 2012-13 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 29, National Science Talent Search Examination 2010-11 (Organised by Unified Council)
  • All India Rank 32, National Science Olympiad 2004-05 (Organised by Science Olympiad Foundation) (First Round)
  • International Rank 34, National Cyber Olympiad 2010-11 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 34, FIITJEE Talent Reward Exam, 2009-10
  • International Rank 38, International Mathematics Olympiad 2009-10 (Organised by Science Olympiad Foundation) (First Round)
  • All India Rank 39, National Cyber Olympiad 2007-08 (Organised by Science Olympiad Foundation) (Final Round)
  • All India Rank 41, National Science Talent Search Examination 2007-08 (Organised by Unified Council)
  • All India Rank 44, National Science Talent Search Examination 2008-09 (Organised by Unified Council)
  • All India Rank 44, National Science Talent Search Examination 2006-07 (Organised by Unified Council)
  • All India Rank 45, National Cyber Olympiad 2007-08 (Organised by Science Olympiad Foundation) (First Round)
  • All India Rank 47, National Cyber Olympiad 2009-10 (Organised by Science Olympiad Foundation) (Final Round)
  • 1st Rank (Overall, amongst all participating Schools) in Aryabhatta Mathematics Competition, 2009-10
  • 1st Rank (at School Level) in Aryabhatta Mathematics Competition, 2006-07
  • City Rank 1, Computer Society of India (Ranchi Chapter) Quiz, 2011
  • City Rank 1, Inter School Quiz Competition (Oil and Gas Conservation Fortnight), 2011
  • City Rank 2, Inter School Quiz Competition (Oil and Gas Conservation Fortnight), 2010
  • Link for Certificate verification



  • Propose a rough schedule for this project. Ideally you will have regular deliverables throughout the entire period.

  • For 389 Directory Server: Developing Administrative tools

Period

Milestone

May 5 - May 30

Community Bonding period. I’ll spend time learning more about the fedora community and investigate more on how they work.

May 31 - June 15

Deploy a 389 Directory Server and learn some functions of 389 DS (account policy, plugin management etc.).

June 16 - June 20

Read and interpret the code for current perl tools and shell scripts.

June 21 - June 25

Start extending the functionality of dsconf

June 26 - June 30

Evaluation

July 1 - July 15

Continue adding support for enabling / disabling / configuration of modules in Directory Server.

July 16 - July 23

Debugging/Checking for errors/Testing

July 24 - July 28

Evaluation

July 29 - August 20

Add other functionalities if required

August 21

Submit final code

  • For dnf-plugin-pip

Period

Milestone

May 5 - May 30

Community Bonding period. I’ll spend time learning more about the fedora community and investigate more on how they work.

May 31 - June 15

Create a barebones plugin

June 16 - June 20

Implement the commands install and uninstall

June 21 - June 25

Debugging/Checking for errors

June 26 - June 30

Evaluation

July 1 - July 15

Implement the functions list, show, search and wheel

July 16 - July 23

Debugging/Checking for errors

July 24 - July 28

Evaluation

July 29 - August 20

Add other functionalities if required

August 21

Submit final code



  • What are you specific plans from May to September (eg: Exams in university, internships, vacations..etc). We need to know if there are periods of time where you are likely to be unavailable. We are better at accommodating these periods if we know of them in advance.

  • NOTHING OTHER THAN CODING FOR GSoC :)