CERN Collaboration Track

About CERN

CERN, the European laboratory for particle physics, uses the world’s most complex scientific instruments, including the Large Hadron Collider, to study subatomic particles and advance the boundaries of human knowledge by delving into the smallest building blocks of nature. Founded in 1954, CERN was one of Europe’s first joint ventures and now has 23 member states. 

CERN is also the birthplace of the World Wide Web, invented by Tim Berners-Lee in 1989 to allow scientists across the world to share information.

CERN supports and maintains multiple open-source projects and that’s where you come in:

What to Build:

Use Go to help CERN improve the featured public repositories with open-source code contributions:

What to Submit:
  • Submit your Pull Request to the featured Github repository.

  • Provide a URL to your Pull Request on your Devpost submission form. 

  • Include a video (about 3 minutes) that demonstrates your submission. Videos must be uploaded to YouTube, Vimeo, or Facebook Video and made public.

  • Text description of your project and how Go was utilized.

Featured Projects

Reva

Reva is a gRPC server written in Go to provide interoperability between different storage and applications. It is at the heart of the CERNBox service at CERN, providing a storage solution to about 40,000 user accounts to store scientific data. The Reva server is also the foundation stone of ScienceMesh, a pan-European science federation that aims to unblock scientific progress through technology.

Go-HEP

Go-HEP is a mono-repo holding Go packages that provide a set of libraries and applications allowing High Energy Physicists (HEP) to write efficient analysis code in the Go programming language. Go-HEP provides read/write access to ROOT files, the binary format used to store the PB of data from the LHC, via the "groot" package.

Golbd

The CERN LBD server is a DNS load balancer written in Go to efficiently manage the thousands of computer nodes in the CERN Computer Center. It periodically gets a load metric from the alias member nodes using SNMP (pull model) and HTTPS (push model) protocols to update the A (IPV4) and AAAA (IPV6) records for a DNS delegated zone that corresponds to the alias using Dynamic DNS (see RFC2136).

Judging Criteria

Each criterion holds a maximum of 5 points. Judges will rate the submissions from point-based criteria for a maximum score of 50 points:

  • Is the solution robust enough ? (1-5 points)

  • Is the solution well tested? (1-5 points)

  • Is the solution achieved without cutting corners? (1-5 points)

  • Is the solution sophisticated? (1-5 points)

  • Is the solution properly optimized? Any interesting performance improvements? (1-5 points)

  • Is the solution properly documented? (1-5 points)

  • Is the solution provided with examples? (1-5 points)

  • Is the solution sustainable? (1-5 points)

  • Is the code readable? (1-5 points)

  • Is the solution using best coding practices (1-5 points)