Table of Contents

Project application dates

The complete GSoC 2019 timeline is here: https://developers.google.com/open-source/gsoc/timeline

  • Project applications open: January 15, 2019
  • Project applications close: February 6, 2019, 20:00 UTC
  • Projects announced: February 26, 2019
  • Students apply: March 25th, 2019
  • Hear how many student slots we receive: April 24th, 2019
  • App review deadline: May 1st, 2019
  • Student projects announced: May 6th, 2019
  • See the complete timeline listed above for more information

Roles

People who have committed to helping with the TF GSoC project application and mentoring in 2019.

NOTA BENE: As a first year project, if selected TF would be limited to 2 students.

  • TF GSoC Organisation Administrators: VM Brasseur, Valentin Sinitsyn
  • Mentor Candidate: Valentin Sinitsyn
  • Mentor Candidate: Syed Ahmed
  • Mentor Candidate: Darien Hirotsu

Project Ideas

The Project List is very important for the GSoC application process. Please read the project ideas list tips as well as the advice for projects before adding to the list below.

We should have at least 4 projects on the list. The person who will mentor the project should be the one to suggest it.

There is a project template at the bottom of this page. Please copy it then use it to add your project suggestion to this list.

Quickstart Scripts for Tungsten fabric in Kubernetes

  • Project title: Quickstart Scripts for Tungsten Fabric in Kubernetes
  • Project description (2-5 sentences): The purpose of this project is to make it easier for people to launch Tungsten Fabric in Kubernetes. Right now it's possible but could be a lot easier. During the course of this project you'll become more familiar with how both Kubernetes and Tungsten Fabric work, both together and separately. You'll write automation scripts to make the entire process easier, more usable, and more transparent.
  • Expected outcomes of the project: Automation scripts and any associated tests and documentation.
  • Student skills required/preferred: Linux knowledge. Knowledge of Kubernetes and Tungsten Fabric an asset but not required
  • Project difficulty rating (easy, medium, hard): easy to medium, depending upon experience
  • Mentor (person who suggested the project): Syed Ahmed

Extend Contrail Ansible Deployer to Support Software Upgrades

  • Project title: Extend Contrail Ansible Deployer to Support Software Upgrades
  • Project description (2-5 sentences): The purpose of this project is to enhance the current Contrail Ansible Deployer tool to include required playbooks or modules to automate upgrades between specific versions of Tungsten Fabric. Currently, it appears the main documentation resides within Juniper and a number of the steps are executed manually as CLI commands. To help solidify Tungsten Fabric as a reliable networking solution for any orchestrator, it would be useful to have well documented tools to automate supported upgrade paths between Tungsten Fabric versions.
  • Expected outcomes of the project
    • Ansible playbooks to automate relevant tasks
    • Python code (including tests) for relevant new modules for current manual tasks
    • Documentation illustrating the usage of upgrade tools
  • Student skills required/preferred: Python, Ansible, Linux, Kubernetes/Docker, Cassandra, RabbitMQ
  • Project difficulty rating (easy, medium, hard): medium
  • Mentor (person who suggested the project): Darien Hirotsu

Allocate a block of IP addresses per instance

  • Project title: Allocate a block of IP addresses per instance
  • Project description (2-5 sentences): Currently, instances (such as virtual machines or pods) under Tungsten Fabric control get a single IP address, that is, /32 prefix for IPv4 and /128 for IPv6. The idea behind this project is to make prefix size configurable, thus enabling allocation of (say) /28 for IPv4 or /64 for IPv6. So, a Kubernetes CNI running on top of the TF overlay will be able to allocate pod IP addresses from the same range as overlay itself, thus reducing operation overhead. For IPv6 overlay networks, having a /64 prefix per instance is a prerequisite for many established scenarios, say SRv6.
  • Expected outcomes of the project: Patches to implement block IP address allocation in tf-config, tf-control and tf-vrouter-agent.
  • Student skills required/preferred: A solid understanding of C++ (including multithreading) and Python is required, background in networking would be a bonus
  • Project difficulty rating (easy, medium, hard): medium
  • Mentor (person who suggested the project): Valentin Sinitsyn

Support Segment Routing (SR-MPLS)

  • Project title: Support Segment Routing (SR-MPLS)
  • Project description (2-5 sentences): Segment Routing (RFC 8402) is a variation of source routing paradigm where source node steers a packet through a network with a set of "programming instructions". This makes implementing advanced scenarios such as service chaining or zero-downtime live migration straightforward. An MPLS dataplane for Segment Routing (SR-MPLS) can be seen as an extension to the current MPLS dataplane in Tungsten Fabric, while SRv6 dataplane can serve as a similar extension for IPv6 underlay networks. In course of this project, you'll make both TF dataplane (vRouter and vRouter Agent) and TF control plane "SR-ready".
  • Expected outcomes of the project: Patches to support segment routing in tf-control, tf-vrouter-agent and tf-vrouter; the exact set of instructions to support and configuration means are negotiable. A possible MVP is to introduce SR-MPLS as yet another dataplane in TF, in addition to plain MPLS and VXLAN.
  • Student skills required/preferred: A solid understanding of C/C++ and Python is required, some experience with Linux kernel programming and DPDK is recommended
  • Project difficulty rating (easy, medium, hard): hard
  • Mentor (person who suggested the project): Valentin Sinitsyn


(add more projects here; use the template from below)

Template for Project for the List

  • Project title:
  • Project description (2-5 sentences):
  • Expected outcomes of the project:
  • Student skills required/preferred:
  • Project difficulty rating (easy, medium, hard):
  • Mentor (person who suggested the project):



Application

  • Organization name: Tungsten Fabric
  • Website URL: https://tungsten.io
  • Tagline: Secure software defined networking for any cloud, anywhere.
  • Logo: TungstenFabric_Gradient_MarkOnly.png
  • Primary open source license: Apache Software License, Version 2
  • Organisation category: Cloud
  • Technology tags: linux, kubernetes, python, networking, c/c++
  • Topic tags: software defined networking, routing, security, multicloud, cloud native
  • Ideas list: GSoC 2019
  • Short description: 

Boundary-free software defined networking that works on any cloud. Apply network and security policies to all your clouds, then monitor/analyze from a single interface.

  • Long description: 

## Many clouds

This is now a _multicloud_ world. Companies are developing applications designed to work in the cloud (_cloud native_), but are finding that there isn't a single cloud offering that meets all of their requirements. Combinations of private and public clouds (_hybrid multicloud_) are necessary to deliver the services required for their business needs.

Maintaining the communication between all of these clouds (the _network fabric_) can be complicated. Each one can have its own APIs and policies. Making sure everything stays up to date and secure is time consuming and error prone.

That's where we come in.

## One (Tungsten) Fabric

[Tungsten Fabric](https://tungsten.io) is a secure software defined networking project designed for the cloud native, multicloud environment. Placing it on top of any IP network allows you to have a single portal for defining, monitoring, and analyzing your entire multicloud network, its security, and its performance.

Using Tungsten Fabric, you can write and deploy network and security policies that are portable to any cloud environment. All of your clouds can have a consistent and easily maintainable configuration. Standardized policies will make your security team happy, too.

## Internet scale

Tungsten Fabric is designed from the ground up to be as fast, as secure, and as scaleable as you need. From small private networks to Tier 1 ISPs, Tungsten Fabric can handle it…and we have users and contributors from both and everything in between! Working with Tungsten Fabric will give you a lot of experience with and knowledge about our industry.

Join us!

  • Application instructions: 

Applying to intern with Tungsten Fabric is easy!

1. [Subscribe](https://lists.tungsten.io/g/dev/join) to our Dev mailing list. Subscription is required to email the list.
1. Check out our [list of project ideas](https://wiki.tungsten.io/display/TUN/GSoC+2019#GSoC2019-ProjectIdeas).
1. Send an email to the address for the Dev mailing list: `dev@lists.tungsten.io`.

Your email should include the following information:

* The name of the project you'd like to work on.
* A short paragraph (100 words, maximum) about what interests you about the project and/or about Tungsten Fabric.
* A short paragraph (100 words, maximum) about why you think you'd be a good fit for the project you picked. Please tell us whether you already have the skills that are required/preferred for that project and, if so, how much experience you have with them.
* A short paragraph (100 words, maximum) telling us more about you as a person. This can include information like where you go to school, what you're studying, whether you've done Google Summer of Code before, your favorite food, or any other interesting stuff you'd like to share.

After we receive your application, the mentor for the project you selected will contact you to set up a conversation and a coding exercise using the technologies relevant to the project you selected. Completion of both the conversation and the coding exercise are required to be considered to join the project.

For years we were a kinda-sorta-open source project (OpenContrail), mostly controlled by a single company. In 2018 we relaunched as a community-focused and -driven project under the Linux Foundation. So we have project maturity but not identity maturity yet, but we're making great progress on that through our community focus. Part of that focus is giving back to the greater open source world by helping to train new contributors. GSoC is one of several internship programs we hope to participate in this year so we can give back to the whole open source community.

  • How many potential mentors have agreed to mentor this year? 3
  • How will you keep mentors engaged with their students?

An org admin will have bi-weekly meetings (at least) with each selected mentor to make sure they're fulfilling their end of the mentorship bargain.

An org admin will also hold bi-weekly meetings (at least) with each student to give them the chance to share their mentor and project experiences.

These meetings will be on alternate weeks, but any feedback will be shared immediately via email or private chat.

During each meeting, all parties will be encouraged to contact admins at any time and not to wait until meeting time.

  • How will you help your students stay on schedule to complete their projects?

The first step of each project will be for the mentor and the student to walk through the project to colloborate on writing the schedule. This will give students more context, ownership, and understanding.

We'll require that all students join a #gsoc channel on our chat. All mentors and admins will also be there. It'll be a safe space where students can ask questions without judgment and where the admins can make sure questions are being asked at all. No questions? That's a red flag.

Mentors will have weekly 1:1 meetings (either calls or via chat) with their students, to make sure everything stays moving and so they can address any questions that may need more of their attention.

Mentors also commit to reply to student questions (email or chat) within one day.

  • How will you get your students involved in your community during GSoC?

Students will join all relevant mailing lists and chat channels and introduce themselves. Before they do that, the community will be encouraged to welcome the students as they show up on the channels.

Students will be encouraged to participate in discussions both on chat and on email, and the community will be coached in advance to be kind to student questions.

Each student (as time zones and schedules allow) will get to participate in a Technical Steering Committee (TSC) call every month. This may be a short presentation, or it may be a chance for them to ask questions of the TSC.

We have no budget for travel (we're newly rebooted, after all), but if the student is in a region where Tungsten Fabric will be represented at a conference or event we'll work with them and the companies in our community to get them to the event, give them an event mentor, and help them get to know the community members there.

  • How will you keep students involved with your community after GSoC?

Because their work, knowledge, and experience are valuable, as work continues on their projects after they leave we'll tag them for reviews as subject matter experts.

We'll help them write proposals for conferences to talk about their projects and have them work with community members to prepare those presentations.

We'll encourage them to stay on the mailing lists and chat channels and actively include them in conversations, just as we would with any community member.

We'll introduce them to members of other related communities, since while our community is great we believe in sharing.

  • Anything else we should know?

As mentioned above, Tungsten Fabric isn't new (2013) it's also not _not_ new (2018). The project truly is a reboot. Some of our infrastructure, code, and documentation still lives under our old corporate home, but that transition is nearly complete. In the meantime we've had a year on our own and have already grown our contributors since we gained independence. We've learned a lot in that year and look forward to sharing it with students.

  • No labels