From Fedora Project Wiki
No edit summary
Line 45: Line 45:


===How do you intend to implement your proposal===
===How do you intend to implement your proposal===
There are various tools which can be used to determine if the rollback is necessary or not like- systemd timer, sanity checks, reading the kernel ring buffers for boot messages, journalctl. Initially I will use these tools to decide which one aptly determines that an upgrade has failed or not. Then if necessary, the rollback (atomic host rollback) will be performed and the error messages or the cause of the rollback shall be logged.
 
I shall implement the proposal as per the timeline given below along with weekly documentation of the work. If the automatic upgrade mechanism is to be implemented, then we also need an automatic rollback mechanism which will identify if an upgrade is successful or not and rollback if necessary. There are various tools which can be used to determine if the rollback is necessary or not like- systemd timer, sanity checks, reading the kernel ring buffers for boot messages, journalctl. Initially I will use these tools to decide which one aptly determines that an upgrade has failed or not. Then if the rollback (atomic host rollback) is be performed, the error messages or the cause of the rollback shall be logged.


===A rough timeline for your progress===
===A rough timeline for your progress===

Revision as of 16:31, 24 March 2016

GSoC 2016- Automatic Atomic Host Updates

Contact Information

  • Email Address: sacredlight2709@gmail.com

Questions to answer

Why do you want to work with the Fedora Project?

Fedora was the first Linux Distribution I used after hearing about Linux when I joined my Diploma in Computer Engineering Course. Since then, Fedora has been my primary OS for almost 7 years now. Fedora helped me understand how concepts like OS, Networks, Memory Management, etc. are actually implemented while I was learning them as a part of my Engineering Curriculum. I feel very grateful to Fedora and the Fedora Community with whom I could learn so much and I want to work with Fedora so that I can use the skills I have developed for giving back to the community with whom I grew up.

Do you have any past involvement with the Fedora Project or another open-source project as a contributor?

Yes, I have contributed to CernVM technology by CERN as a part of GSoC 2014.

Have you participated in GSoC in the past? If so, what year(s) and which organization(s)?

GSoC 2014 - Project: Streamline CernVM Contextualization Plugins, Organization: CERN-SFT

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 keep contributing to Fedora all year round, even after GSoC. I am interested in Automatic Atomic Host Updates and the Anerist project.

Why should we choose you over other applicants?

Having prior GSoC experience I am aware of the process, the efforts needed and I am familiar with the teamwork involved while working with the community and project mentors. I also have the passion and determination to learn and successfully complete the mentioned project. Specific to the Project, I have the both the required skills and the bonus skills mentioned for the project and the work is similar to my project at CERN.

Proposal Description

Overview and The Need

To implement a service that automatically upgrades the system when a new image is available. If the system is not restarting correctly, the rollback to the previous working version.

Any relevant experience you have

Relevant Experience:

  • GSoC 2014 - CERN- SFT, Project: Streamlining CernVM Contextualization Plugins (Languages: Shell, Python, C | Technologies: Public Clouds, Virtualization, Kernel Development)
  • Taken the Artificial Intelligence, Machine Learning and Image Processing Courses during the degree in Computer Engineering(Language- Python 3).
  • Completed Udacity's Machine Learning Engineer Nanodegree (Language- Python 2.7).
  • Engineering Degree Capstone Project - Business Intelligence - Data Driven Hedging (R Language, Forecasting and Machine Learning)
  • Basic Experience with Google Tensorflow Python API
  • Good Problem Solving and Debugging Skills.

How do you intend to implement your proposal

I shall implement the proposal as per the timeline given below along with weekly documentation of the work. If the automatic upgrade mechanism is to be implemented, then we also need an automatic rollback mechanism which will identify if an upgrade is successful or not and rollback if necessary. There are various tools which can be used to determine if the rollback is necessary or not like- systemd timer, sanity checks, reading the kernel ring buffers for boot messages, journalctl. Initially I will use these tools to decide which one aptly determines that an upgrade has failed or not. Then if the rollback (atomic host rollback) is be performed, the error messages or the cause of the rollback shall be logged.

A rough timeline for your progress

The summer coding period spans for about 12 weeks which I would like to plan as follows:

  • Community Bonding Period: Gather as much information as possible about the current issues and the needs of the project. Interact on the IRC and the mailing list to discuss potential solutions and get more inputs.
  • Week 1-8: Complete the development as per the discussed solutions and test them to check if they function as per the requirements.
    • Week 1: Check different tools and compare which ones offer a consistent upgrade and the best rollback decision. Document the pros and cons of each tool for future use. Select a couple of the best ones.
    • Week 2: Begin with the prototypes for Automatic Upgrade and Rollback Mechanism (Basic framework and flow of operations)
    • Week 3,4: Implement the basic automatic upgrade mechanism.
    • Week 4,5: Implement the basic prototype of Automatic rollback mechanism.
    • Week 6,7: Test and Fine tune the rollback mechanism, part 1: under packaging related problems- failed dependencies, inconsistent packages, etc.
    • Week 8: Test and Fine tune the rollback mechanism, part 2: under various conditions- incomplete upgrade, aborted upgrade, power failure, etc.
  • Week 9,10: Modify the code for production environment and conduct tests to find out if there are any bugs. Integrate the code with Fedora.
    • Finalize the Code and restructure if needed to follow Fedora's coding standards.
    • Integrate with Fedora and run more tests.
    • Collaborate more with the community to know if any additional changes are needed and implement them.
  • Week 11,12: Make any new changes if needed or suggested by the community and documentation. One week of buffer time in case any unforeseen delays take place.
    • Changes if suggested by community and Code clean-up.
    • Report writing for GSoC final submission.
    • Buffer time for unforeseen delays.


Final deliverable

Expected outcomes:

  • Automated updates integrated into Fedora Atomic Host
  • Learn how RPM-OStree packaging and images work
  • Develop ability to contribute to Atomic Host