#139 Use natural language to create network configuration
Opened 2 months ago by ffmancera. Modified 2 months ago

This is a proposed project for Google Summer of Code

  • Skill level: entry/junior
  • Skills required: ML, AI, git, python, shell, networking, markdown (for docs)
  • Mentor(s): Fernando F. Mancera, Iñigo Huguet, Wen Liang
  • Contacts (IRC & email):

  • Idea description:

NetworkManager is the standard Linux network configuration tool suite. It supports a large range of networking setups, from desktop to servers and mobile and integrates well with popular desktop environments and server configuration management tools.

Nmstate is a library with an accompanying command line tool that manages host networking settings in a declarative manner. The networking state is described by a pre-defined schema. Reporting of current state and changes to it (desired state) both conform to the schema.

Linux System Roles is a project related to Ansible, a tool for automating configuration management, application deployment and software provisioning. The goal of linux system roles is to provide a consistent user interface, abstracting from any particular implementation of the linux subsystems, but trying to get the most out of the particular libraries on each one of them. The Network Linux System Role currently provides a unique configuration interface for network-scripts and NetworkManager.

While it is rather easy for users to describe in natural language what they would like to configure, it can be hard to find the right options or using the right syntax in configuration files. AI provides a way to use natural language. As part of the internship, the projects should be enhanced to provide user support TUI based on prompts such as “Configure network devices eth0 and eth1 in a linux bridge”.

  • What are we looking for:

    • Get in touch with the Upstream (Fedora and NM)
    • Basic ML/AL and LLM knowledge is preffered
    • Building a custom LLM which will be trained with dataset of NM and NMstate
    • Build TUI for prompt and output
    • Write documentation
    • Python tests and CI automation
  • Notes & references:


  • Estimation
    Upstream and community bonding
    Week 2
    Knowing mentors and Project structure
    Week 3
    Basic training LLM
    Week 4
    NM and all things around + Blog per 2 week
    Week 5
    Sync up twice a week + public meeting + post updates in ML + Fedora Blog
    Week 6
    Project structure and maybe some system req
    Week 7
    Generate outputs for a set of command → a) save to local storage b) give it a name and store + apply with <nmcli/nmstate>
    Week 8
    Parsing of the prompts + sanitize the output
    Week 9
    Training the dataset + finding the dataset
    Week 10
    Training the dataset + finding the dataset
    Week 11
    Evaluate training and sum the findings
    Week 12
    Final Evaluation

Metadata Update from @t0xic0der:
- Issue tagged with: GSoC, project-idea

2 months ago

Metadata Update from @jflory7:
- Issue untagged with: GSoC
- Issue tagged with: Outreachy

2 months ago

This project is accepted for the May 2023 Outreachy round. This means that this project will be shown to Outreachy applicants starting on March 4th, 2024. Applicants will begin appearing in project communication channels looking to make first contributions during the evaluation phase. More info and guidance will be provided by the Mentored Projects Team in the coming weeks.

Please use this issue to raise questions about the Mentored Projects program, Outreachy, or general guidance on mentoring.

Thank you for submitting your project and helping us reach the Fedora 2028 Strategy goal to increase mentoring in the Fedora community! :muscle:

Metadata Update from @jflory7:
- Issue set to the milestone: Outreachy 2024

2 months ago

Metadata Update from @jflory7:
- Issue tagged with: approved

2 months ago

Login to comment on this ticket.