CINXE.COM

Ceph.io — Google Summer of Code

<!DOCTYPE html><html lang="en" dir="ltr" class="no-js"><head prefix="og: http://ogp.me/ns"><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="theme-color" content="#f1726c"><script>!function(e){e.className=e.className.replace(/\bno-js/,"js")}(document.documentElement)</script><title>Ceph.io — Google Summer of Code</title><meta name="description" content="Ceph is an open source distributed storage system designed to evolve with data."><link rel="alternate" hreflang="en" href="https://ceph.io/en/developers/google-summer-of-code/"><link rel="canonical" href="https://ceph.io/en/developers/google-summer-of-code/"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" media="print" onload='this.onload=null,this.removeAttribute("media")' href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"><noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"></noscript><link rel="icon" type="image/png" href="/assets/favicons/favicon-16x16.png" sizes="16x16"><link rel="icon" type="image/png" href="/assets/favicons/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/assets/favicons/favicon-96x96.png" sizes="96x96"><link rel="icon" type="image/png" href="/assets/favicons/android-chrome-192x192.png" sizes="192x192"><link rel="apple-touch-icon" sizes="57x57" href="/assets/favicons/apple-touch-icon-57x57.png"><link rel="apple-touch-icon" sizes="60x60" href="/assets/favicons/apple-touch-icon-60x60.png"><link rel="apple-touch-icon" sizes="72x72" href="/assets/favicons/apple-touch-icon-72x72.png"><link rel="apple-touch-icon" sizes="76x76" href="/assets/favicons/apple-touch-icon-76x76.png"><link rel="apple-touch-icon" sizes="114x114" href="/assets/favicons/apple-touch-icon-114x114.png"><link rel="apple-touch-icon" sizes="120x120" href="/assets/favicons/apple-touch-icon-120x120.png"><link rel="apple-touch-icon" sizes="144x144" href="/assets/favicons/apple-touch-icon-144x144.png"><link rel="apple-touch-icon" sizes="152x152" href="/assets/favicons/apple-touch-icon-152x152.png"><link rel="apple-touch-icon" sizes="180x180" href="/assets/favicons/apple-touch-icon-180x180.png"><link rel="mask-icon" href="/assets/favicons/safari-pinned-tab.svg" color="#f0424d"><link rel="manifest" href="/assets/favicons/manifest.json"><meta property="og:locale" content="en"><meta property="og:title" content="Google Summer of Code - Ceph"><meta property="og:url" content="https://ceph.io/en/developers/google-summer-of-code/"><meta property="og:type" content="website"><meta property="og:image" content="https://ceph.io/assets/favicons/logo-meta-share.png"><meta property="og:site_name" content="Ceph"><meta name="twitter:card" content="summary"><meta name="twitter:site" content="@ceph"><meta name="twitter:title" content="Google Summer of Code - Ceph"><meta name="twitter:url" content="https://ceph.io/en/developers/google-summer-of-code/"><meta name="twitter:image" content="https://ceph.io/assets/favicons/logo-meta-share.png"><script>var _paq=window._paq=window._paq||[];_paq.push(["setCookieDomain","*.ceph.io"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),function(){_paq.push(["setTrackerUrl","https://ceph.matomo.cloud/matomo.php"]),_paq.push(["setSiteId","1"]);var e=document,a=e.createElement("script"),e=e.getElementsByTagName("script")[0];a.async=!0,a.src="//cdn.matomo.cloud/ceph.matomo.cloud/matomo.js",e.parentNode.insertBefore(a,e)}()</script><noscript><p><img src="https://ceph.matomo.cloud/matomo.php?idsite=1&amp;rec=1" style="border:0" alt=""></p></noscript></head><body class="content"><div class="scroll-offset" data-scroll-offset></div><header class="site-header" data-site-header><div class="flex flex--align-center flex--justify-between wrapper"><a class="site-header__logo" href="/en/"><svg xmlns="http://www.w3.org/2000/svg" width="154" height="42" viewBox="0 0 154 42" aria-hidden="true" focusable="false"><g fill="#f0424d" class="logo-ceph__icon"><path d="M35 38c-1.4-.8-2.3-1.7-2.5-2.7s.2-2 1.3-3.3A16.2 16.2 0 0021.6 5.2h-.1A16.2 16.2 0 009.2 32c1.1 1.3 1.5 2.3 1.4 3.2S9.5 37.2 8 38a22.8 22.8 0 01-5.7-7.2A21.3 21.3 0 010 21.4 21.4 21.4 0 0121.5 0h.1A21.4 21.4 0 0143 21.4a21.6 21.6 0 01-.6 4.9 21 21 0 01-1.6 4.5 22.7 22.7 0 01-5.7 7.2"/><path d="M27.2 42a8 8 0 01-2-2 8.7 8.7 0 01-1.6-5.3 11.8 11.8 0 01.9-4.2 12 12 0 012.3-3.7l.2-.2a10.3 10.3 0 001-1.4 7 7 0 001-2 7.5 7.5 0 00-6.3-9.2 7.3 7.3 0 00-1.1 0h-.1a7.4 7.4 0 00-4 1 7.5 7.5 0 00-2.2 2 7.5 7.5 0 00-1.2 6.2 7.2 7.2 0 00.8 2 9.7 9.7 0 001.1 1.4l.2.3a11.9 11.9 0 012.3 3.6 11.8 11.8 0 011 4.2 8.8 8.8 0 01-1.8 5.4 8 8 0 01-1.9 1.9l-1.2-.4A21.3 21.3 0 0111 40a6 6 0 003.2-5.3 6.4 6.4 0 00-1.7-4.2l-.3-.4-.9-1a12.8 12.8 0 01-.2-15 13 13 0 013.7-3.5 12.8 12.8 0 015-1.8 13.3 13.3 0 011.7-.2h.2a13.4 13.4 0 011.8.2 12.8 12.8 0 014.9 1.8A13 13 0 0132 14a12.7 12.7 0 01-.2 15l-.9 1-.3.4a6.5 6.5 0 00-1.7 4.3 6 6 0 003.1 5.4 21.4 21.4 0 01-3.6 1.5l-1.2.4"/><path d="M21.5 25.8a4.2 4.2 0 114.2-4.2 4.2 4.2 0 01-4.2 4.2"/></g><g fill="#3b434a" class="logo-ceph__text"><path d="M75.6 26.4c0 5.5-.5 7-1.8 8.4-.8.8-2 1.3-4.3 1.3h-8.2c-2.6 0-4.2-.4-5.3-1.5-1.7-1.8-2.2-3.8-2.2-11.8s.5-10 2.2-11.8c1-1 2.7-1.5 5.3-1.5h8c2.5 0 3.6.5 4.4 1.3 1.3 1.3 1.8 3 1.8 8h-5c-.1-3.5-.3-4-.6-4.3s-.6-.5-1.8-.5H62c-1.5 0-2 .1-2.3.5-.5.5-.7 1.5-.7 8.3s.2 7.7.7 8.2c.4.4.8.5 2.3.5h6.2c1.1 0 1.6 0 2-.4s.5-1.4.5-4.7h5M84.3 20.4h12.2c0-4.5-.3-5.5-.8-6-.3-.3-.7-.5-2.3-.5h-6c-1.6 0-2 .2-2.4.6s-.6 1.3-.7 5.9zm0 4c0 5.3.4 6.3.8 6.7s.7.5 2.2.5h7c1 0 1.4-.2 1.7-.5s.4-1 .5-3.3h5c0 4.2-.4 5.6-1.8 7-.8.8-2 1.3-4.3 1.3h-8.7c-2.6 0-4.2-.4-5.3-1.5-1.7-1.7-2.2-3.8-2.2-11.8s.5-10 2.2-11.8c1.1-1 2.7-1.5 5.3-1.5H94c2.6 0 4.3.5 5.3 1.4 1.7 1.8 2.2 3.8 2.2 11.6V24c0 .4-.1.6-.6.6H84.3M121.6 31c-.4.4-1 .6-2.7.6H115a10.1 10.1 0 01-4.8-1.5l-.3-.1V15.5a10.7 10.7 0 015-1.5h4c1.6 0 2.2.2 2.7.6.7.8 1 2.2 1 8.2s-.2 7.4-1 8.1zm-1.5-21.6h-3.6c-2.2 0-3.3.5-6.6 3.3V9.4h-5.2V42h5.2v-9c3.3 2.7 4.4 3.2 6.6 3.2h3.6c2.9 0 4.3-.5 5.5-1.6 1.4-1.5 2-3.5 2-11.8s-.6-10.3-2-11.8c-1.2-1.1-2.6-1.6-5.5-1.6M152.4 11c-1-1-2.3-1.6-4.6-1.6h-4.2c-2.2 0-3.3.5-6.7 3.3V2.5a18.8 18.8 0 00-5-2v35.6h5V15.5l1.1-.5a9.1 9.1 0 014-1h3.4c1.7 0 2.2.2 2.8.7a3.4 3.4 0 01.6 2.6V36h5.2V17c0-3.7-.6-5-1.6-6"/></g></svg> <span class="visually-hidden">Ceph.io Homepage</span> </a><a class="site-header__menu-open" href="#menu" data-menu-open><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><g fill="none" fill-rule="evenodd" stroke="#0a0c38" stroke-linecap="square" stroke-width="2"><path d="M1 12h22M1 5h22M12 19h11"/></g></svg> <span class="visually-hidden">Open menu</span></a><div class="site-header__menu" id="menu" data-menu><a class="site-header__menu-close" href="#menu-toggle" data-menu-close><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><g fill="none" fill-rule="evenodd" stroke="#000" stroke-linecap="square" stroke-width="2"><path d="M16 8l-8 8M16 16L8 8"/></g></svg> <span class="visually-hidden">Close menu</span></a><div class="site-header__overflow"><nav aria-label="main"><ul class="nav-primary"><li><a href="/en/discover/">Discover</a></li><li><a href="/en/users/">Users</a></li><li><a href="/en/developers/" aria-current="page">Developers</a></li><li><a href="/en/community/">Community</a></li><li><a href="/en/news/">News</a></li><li><a href="/en/foundation/">Foundation</a></li></ul></nav></div></div></div></header><main id="main"><div class="wrapper"><nav aria-label="secondary"><ul class="nav-secondary" data-nav-secondary><li class="nav-secondary__wrapper"><a class="nav-secondary__top" href="/en/developers/" data-nav-secondary-toggle>Developers</a><ul class="nav-secondary__sub" data-nav-secondary-sub><li><a href="/en/developers/code/">Code</a></li><li><a href="/en/developers/contribute/">Contribute</a></li><li><a href="/en/developers/roadmap/">Roadmap</a></li><li><a href="/en/developers/google-summer-of-code/" aria-current="page">Google Summer of Code</a></li></ul></li></ul></nav><p><img src="/assets/bitmaps/hero-gsoc.png" alt="Google Summer of Code"></p><p>Google Summer of Code (<a href="http://g.co/gsoc">g.co/gsoc</a>) is Google's mentorship program for bringing new contributors into open source communities.</p><p>Google Summer of Code is a unique program where new contributors to open source, ages 18 and over, are paired with a mentor to introduce them to the open source community and provide guidance while they work on a real world open source project over the summer. Projects cover a wide range of fields including: Cloud, Operating Systems, Graphics, Medicine, Programming Languages, Robotics, Science, Security and many more. GSoC Contributors do earn a stipend to work on their small, (~90 hour), medium (~175 hour) or large (~350 hour) projects.</p><p>GSoC is a highly competitive program, so don't wait to the last minute to prepare! GSoC Contributors should reach out to the mentors of projects that interest them once orgs are announced on February 27, 2025. Potential GSoC Contributors can apply for Ceph's projects at <a href="http://g.co/gsoc">g.co/gsoc</a> from March 24th - April 8, 2025.</p><p>See the list of projects we have available for GSoC contributors and <a href="https://ceph.io/en/developers/contribute/">learn how get started with contributions</a>.</p><p>For any questions, contact Vallari Agrawal (<a href="mailto:vallari.agrawal@ibm.com">vallari.agrawal@ibm.com</a>).</p><hr class="hr"><h2 id="teuthology-on-podman">Teuthology on Podman <a class="link-anchor" href="#teuthology-on-podman">¶</a></h2><p><strong>Mentor name(s):</strong> Zack Cerza, Kamoltat (Junior) Sirivadhna Aishwarya Mathuria, Vallari Agrawal</p><p><strong>Mentor email(s):</strong> <a href="mailto:zack1@ibm.com">zack1@ibm.com</a>, <a href="mailto:ksirivad@ibm.com">ksirivad@ibm.com</a>, <a href="mailto:aishwarya.mathuria@ibm.com">aishwarya.mathuria@ibm.com</a>, <a href="mailto:vallari.agrawal@ibm.com">vallari.agrawal@ibm.com</a></p><p><strong>Difficulty:</strong> Hard</p><p><strong>Project Hours:</strong> 175</p><p><strong>Skills needed:</strong> python, containerisation, linux</p><p><strong>Subcomponent of Ceph:</strong> <a href="https://github.com/ceph/teuthology">Ceph Integration Test Framework</a></p><p><strong>Description of project:</strong></p><p><a href="https://github.com/zmc/ceph-devstack">ceph-devstack</a> is an in-development tool that uses rootless podman containers to deploy a scaled-down teuthology lab. It has proven useful for testing changes to teuthology and its related services, allowing us to more easily and flexibly make changes to components without worrying about causing outages.</p><p>It has some basic ability to run Ceph tests, but could benefit significantly from more investment in that area.</p><p>Improve and extend ceph-devstack's ability to perform teuthology tests against Ceph builds. This project will involve writing Python code and tests to orchestrate podman containers, and working with security systems like SELinux, CGroups, and Linux capabilities.</p><p><strong>Standup/weekly call mentee could attend?:</strong> Teuthology weekly meeting</p><p><strong>Steps to evaluate an applicant for the project:</strong> TBD</p><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong> TBD</p><p><strong>Expected Outcome:</strong></p><p>Extend ceph-devstack's ability to perform teuthology tests</p><hr class="hr"><h2 id="smartmontools-drivedb.h-postprocessor">smartmontools drivedb.h postprocessor <a class="link-anchor" href="#smartmontools-drivedb.h-postprocessor">¶</a></h2><p><strong>Mentor name(s):</strong> Anthony D'Atri</p><p><strong>Mentor email(s):</strong> <a href="mailto:anthony.datri@ibm.com">anthony.datri@ibm.com</a></p><p><strong>Difficulty:</strong> Intermediate</p><p><strong>Project Hours:</strong> 90</p><p><strong>Skills needed:</strong> c++, maybe python or golang</p><p><strong>Subcomponent of Ceph:</strong> Observability</p><p><strong>Description of project:</strong></p><p>smartmontools (smartctl) is pretty much the only game in town for harvesting metrics and counters from storage devices: SMART for SATA, a few things for SAS, and passthrough to nvme-cli for NVMe. It leverages a runtime file named drivedb.h that directs what attributes are to be found with what numeric IDs, and how to interpret them. drivedb.h is a mess, and upstream smartmontools would likely resist wholesale refactoring. For example, SSD wear might be labeled as &quot;lifetime remaining&quot; or &quot;wear level&quot; or multiple other strings. Some devices also report wear used, others wear remaining.</p><p>One task would be to add an interpretation primitive to the c++ code so that a drivedb.h entry can specify that the result should be subtracted from 100.<br>The larger task would be to write a postprocessor for drivedb.h that more or less is a sequence of regex invocations that converges the existing freeform attribute label names into a normalized, defined set. Many tools just pass through the text labels, so doing meaningful analysis or queries is difficult; often only a fraction of the data is actually captured as a result. The output also includes numeric attribute IDs, which are less varied, but relying on them instead of the text labels is fraught because these numeric IDs are not strictly standardized either. I have seen drives that report a metric on a different numeric ID than most others, and/or that report a different metric on a specific numeric than most others report on that ID.</p><p>For extra credit, interface with the central telemetry DB as described in project &quot;Public telemetry slice/dice of SMART data&quot;.</p><p><strong>Standup/weekly call mentee could attend?:</strong> TBD</p><p><strong>Steps to evaluate an applicant for the project:</strong> Ability to leverage code libraries and write the glue code.</p><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong> TBD</p><hr class="hr"><h2 id="the-more-the-merrier">The More The Merrier <a class="link-anchor" href="#the-more-the-merrier">¶</a></h2><p><strong>Mentor name(s):</strong> Yuval Lifshitz</p><p><strong>Mentor email(s):</strong> <a href="mailto:ylifshit@ibm.com">ylifshit@ibm.com</a></p><p><strong>Difficulty:</strong> Hard</p><p><strong>Project Hours:</strong> 350</p><p><strong>Skills needed:</strong> C++, Python</p><p><strong>Subcomponent of Ceph:</strong> RGW</p><p><strong>Description of project:</strong></p><p>Detailed description of the project and evalution steps can be found <a href="https://gist.github.com/yuvalif/9c5a1ed326ca14cf4851d7a0b8ba0db8">here</a>.</p><p>Persistent bucket notifications are a very useful and powerful feature</p><p>tech talk: <a href="https://www.youtube.com/watch?v=57Ejl6R-L20">https://www.youtube.com/watch?v=57Ejl6R-L20</a></p><p>usecase example: <a href="https://www.youtube.com/watch?v=57Ejl6R-L20">https://www.youtube.com/watch?v=57Ejl6R-L20</a></p><p>However, they can pose a performance issue, since the notifications regarding a specific bucket are written to a single RADOS queue (unlike the writes to the bucket which are distributed across multiple bucket shards. So, in case that small objects are written to the bucket, the overhead of the notifications is considerable. In this project, our goal would be to create a sharded bucket notifications queue, to allow for better performance of sending persistent bucket notifications.</p><p><strong>Standup/weekly call mentee could attend?:</strong> RGW daily Standup, RGW weekly refactoring meeting</p><p><strong>Steps to evaluate an applicant for the project:</strong></p><ul><li>build ceph from source and run basic bucket notification tests</li><li>fix low-hanging-fruit issues in bucket notifications</li></ul><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong> TBD</p><p><strong>Expected outcome:</strong></p><ul><li>sharded implementation of persistent topic queue</li><li>stretch goal: perf test proving performance improvement</li></ul><hr class="hr"><h2 id="public-telemetry-slice%2Fdice-of-smart-data">Public telemetry slice/dice of SMART data <a class="link-anchor" href="#public-telemetry-slice%2Fdice-of-smart-data">¶</a></h2><p><strong>Mentor name(s):</strong> Anthony D'Atri</p><p><strong>Mentor email(s):</strong> <a href="mailto:anthony.datri@ibm.com">anthony.datri@ibm.com</a></p><p><strong>Difficulty:</strong> Medium</p><p><strong>Project Hours:</strong> 175</p><p><strong>Skills needed:</strong> Some coding language, Python or Go, jq or JSON parsing or other text library.</p><p><strong>Subcomponent of Ceph:</strong> telemetry</p><p><strong>Description of project:</strong></p><p>Public telemetry today offers a few Grafana panels and downloadable archives of anonymized data. One field is a JSON blob of smartctl output. Parse this, apply a normalization layer, deduplicate, and present in one or more formats that facilitate analysis:</p><ul><li>CSV file containing attributes for only the latest report found for a given device</li><li>The number of data points might be too high, but possibly a Grafana dashboard or even spreadsheet with template variables for manufacturer/model, interface type, etc. with various panes:<ul><li>Histograms of power_on hours, normalized endurance used or remaining, etc</li><li>histogram or table of endurance remaining vs power on hours or TBW, i.e. allowing one to predict drive lifetime and inform purchase decisions, vs. assuming that SSDs especially QLC lack endurance or that high-endurance SKUs are required.</li><li>reallocated sectors over time, etc.</li></ul></li></ul><p><strong>Standup/weekly call mentee could attend?:</strong> TBD</p><p><strong>Steps to evaluate an applicant for the project:</strong> Coding experience beyond Karel</p><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong></p><p>Gain familiarity with the data format, including JSON. Discuss input filtering: skip over invalid entries, handle submissions from older smartmontools, uniqify, learn about SMART -- and how dumb it is, the need for nomalization of counters.</p><p><strong>Expected outcome</strong>:</p><p>Described above under Description. More specifically, deriving the rate of wear over time for each specific SSD for which we have more than say a month of data: capture the delta between earliest and latest wear levels reported for each given serial number, and the time delta between those samples. Divide the wear delta by the time delta for rate of wear over time.</p><hr class="hr"><h2 id="warm-and-fuzzy">Warm and Fuzzy <a class="link-anchor" href="#warm-and-fuzzy">¶</a></h2><p><strong>Mentor name(s):</strong> Yuval Lifshitz</p><p><strong>Mentor email(s):</strong> <a href="mailto:ylifshit@ibm.com">ylifshit@ibm.com</a></p><p><strong>Difficulty:</strong> Medium</p><p><strong>Project Hours:</strong> 175</p><p><strong>Skills needed:</strong> C++, Python and also depending with the tool</p><p><strong>Subcomponent of Ceph:</strong> RGW</p><p><strong>Description of project:</strong></p><p>The RGW's frontend is an S3 REST API server, and in this project we would like to use a REST API fuzzer to test the RGW for security issues (and other bugs). First step of the project would be to select the right tool (e.g. <a href="https://github.com/microsoft/restler-fuzzer">https://github.com/microsoft/restler-fuzzer</a>), feed it with the AWS S3 OpenAPI spec, and see what happens when we let it connect to the RGW. Fixing issues the fuzzer finds would nice, but the real stretch goal would be to integrate these tests into teuthology.</p><p><strong>Standup/weekly call mentee could attend:</strong> RGW daily Standup, RGW weekly refactoring meeting</p><p><strong>Steps to evaluate an applicant for the project:</strong></p><ul><li>build ceph from source and run basic s3 tests</li><li>run sts tests against RGW</li><li>run the REST fuzzing tool</li></ul><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong> TBD</p><p><strong>Expected outcome:</strong></p><ul><li>find and fix security issues in the RGW found by the fuzzing tool</li><li>stretch goal: integrate tool into automated teuthology runs</li></ul><hr class="hr"><h2 id="ceph-dashboard-usability-improvements">Ceph Dashboard Usability Improvements <a class="link-anchor" href="#ceph-dashboard-usability-improvements">¶</a></h2><p><strong>Mentor name(s):</strong> Afreen Misbah</p><p><strong>Mentor email(s):</strong> <a href="mailto:afreen@ibm.com">afreen@ibm.com</a></p><p><strong>Difficulty:</strong> Easy</p><p><strong>Project Hours:</strong> 175</p><p><strong>Skills needed:</strong> Typescript, Angular, and basic understanding of HTML &amp; CSS.</p><p><strong>Subcomponent of Ceph:</strong> Dashboard</p><p><strong>Description of project:</strong></p><p>Ceph Dashboard is Ceph's management and monitoring tool. It's a web application tool with Angular/Typescript on frontend side and Python as backend.</p><p>We are in an effort to provide more usability workflows and solve UX issues to make management and monitoring easy for Ceph users.</p><p>The task includes improving the notification system and creating a workflow for managing NVMe-oF devices from dashboard.</p><p><strong>Standup/weekly call mentee could attend?:</strong> Dashboard daily sync</p><p><strong>Steps to evaluate an applicant for the project:</strong></p><ul><li>Build ceph dashboard locally via docker-compose and kcli both</li><li>Able to understand issues and ask useful questions</li><li>Eagerness to learn and contribute</li></ul><p><strong>1-2 short paragraphs about what first 2 weeks of work would look like during the internship:</strong></p><p>Learning about ceph and storage and gradually contributing to the dashboard.</p><p><strong>Expected Outcome:</strong></p><p>Improve dashboard usability.</p><hr class="hr"></div></main><footer class="site-footer"><div class="wrapper"><nav aria-label="site"><ul class="site-footer__site"><li><a href="/en/discover/">Discover</a><ul><li><a href="/en/discover/benefits/">Benefits</a></li><li><a href="/en/discover/technology/">Technology</a></li><li><a href="/en/discover/vision/">Vision</a></li><li><a href="/en/discover/use-cases/">Use cases</a></li><li><a href="/en/discover/case-studies/">Case studies</a></li></ul></li><li><a href="/en/users/">Users</a><ul><li><a href="/en/users/getting-started/">Getting started</a></li><li><a href="/en/users/documentation/">Documentation</a></li><li><a href="/en/users/survey/">Survey</a></li></ul></li><li><a href="/en/developers/">Developers</a><ul><li><a href="/en/developers/code/">Code</a></li><li><a href="/en/developers/contribute/">Contribute</a></li><li><a href="/en/developers/roadmap/">Roadmap</a></li><li><a href="/en/developers/google-summer-of-code/" aria-current="page">Google Summer of Code</a></li></ul></li><li><a href="/en/community/">Community</a><ul><li><a href="/en/community/cq/">Ceph Quarterly</a></li><li><a href="/en/community/events/">Events</a></li><li><a href="/en/community/tech-talks/">Tech talks</a></li><li><a href="/en/community/meetups/">Virtual Meetings &amp; Meetups</a></li><li><a href="/en/community/connect/">Connect</a></li><li><a href="/en/community/team/">Team</a></li><li><a href="/en/community/ambassadors/">Ambassadors</a></li><li><a href="/en/community/jobs/">Jobs</a></li></ul></li><li><a href="/en/news/">News</a><ul><li><a href="/en/news/blog/">Ceph Blog</a></li><li><a href="/en/news/publications/">Publications</a></li><li><a href="/en/news/contribute/">Contribute Content</a></li><li><a href="/en/news/crimson/">Crimson Project</a></li></ul></li><li><a href="/en/foundation/">Foundation</a><ul><li><a href="/en/foundation/about/">About the foundation</a></li><li><a href="/en/foundation/members/">Foundation members</a></li><li><a href="/en/foundation/member-benefits/">Member Tiers and Benefits</a></li><li><a href="/en/foundation/join/">Become a member</a></li></ul></li></ul></nav><svg class="site-footer__ceph" xmlns="http://www.w3.org/2000/svg" width="154" height="42" viewBox="0 0 154 42" aria-hidden="true" focusable="false"><g fill="#f0424d"><path d="M35 38c-1.4-.8-2.3-1.7-2.5-2.7s.2-2 1.3-3.3A16.2 16.2 0 0021.6 5.2h-.1A16.2 16.2 0 009.2 32c1.1 1.3 1.5 2.3 1.4 3.2S9.5 37.2 8 38a22.8 22.8 0 01-5.7-7.2A21.3 21.3 0 010 21.4 21.4 21.4 0 0121.5 0h.1A21.4 21.4 0 0143 21.4a21.6 21.6 0 01-.6 4.9 21 21 0 01-1.6 4.5 22.7 22.7 0 01-5.7 7.2"/><path d="M27.2 42a8 8 0 01-2-2 8.7 8.7 0 01-1.6-5.3 11.8 11.8 0 01.9-4.2 12 12 0 012.3-3.7l.2-.2a10.3 10.3 0 001-1.4 7 7 0 001-2 7.5 7.5 0 00-6.3-9.2 7.3 7.3 0 00-1.1 0h-.1a7.4 7.4 0 00-4 1 7.5 7.5 0 00-2.2 2 7.5 7.5 0 00-1.2 6.2 7.2 7.2 0 00.8 2 9.7 9.7 0 001.1 1.4l.2.3a11.9 11.9 0 012.3 3.6 11.8 11.8 0 011 4.2 8.8 8.8 0 01-1.8 5.4 8 8 0 01-1.9 1.9l-1.2-.4A21.3 21.3 0 0111 40a6 6 0 003.2-5.3 6.4 6.4 0 00-1.7-4.2l-.3-.4-.9-1a12.8 12.8 0 01-.2-15 13 13 0 013.7-3.5 12.8 12.8 0 015-1.8 13.3 13.3 0 011.7-.2h.2a13.4 13.4 0 011.8.2 12.8 12.8 0 014.9 1.8A13 13 0 0132 14a12.7 12.7 0 01-.2 15l-.9 1-.3.4a6.5 6.5 0 00-1.7 4.3 6 6 0 003.1 5.4 21.4 21.4 0 01-3.6 1.5l-1.2.4"/><path d="M21.5 25.8a4.2 4.2 0 114.2-4.2 4.2 4.2 0 01-4.2 4.2"/></g><g fill="#e7e9e8"><path d="M75.6 26.4c0 5.5-.5 7-1.8 8.4-.8.8-2 1.3-4.3 1.3h-8.2c-2.6 0-4.2-.4-5.3-1.5-1.7-1.8-2.2-3.8-2.2-11.8s.5-10 2.2-11.8c1-1 2.7-1.5 5.3-1.5h8c2.5 0 3.6.5 4.4 1.3 1.3 1.3 1.8 3 1.8 8h-5c-.1-3.5-.3-4-.6-4.3s-.6-.5-1.8-.5H62c-1.5 0-2 .1-2.3.5-.5.5-.7 1.5-.7 8.3s.2 7.7.7 8.2c.4.4.8.5 2.3.5h6.2c1.1 0 1.6 0 2-.4s.5-1.4.5-4.7h5M84.3 20.4h12.2c0-4.5-.3-5.5-.8-6-.3-.3-.7-.5-2.3-.5h-6c-1.6 0-2 .2-2.4.6s-.6 1.3-.7 5.9zm0 4c0 5.3.4 6.3.8 6.7s.7.5 2.2.5h7c1 0 1.4-.2 1.7-.5s.4-1 .5-3.3h5c0 4.2-.4 5.6-1.8 7-.8.8-2 1.3-4.3 1.3h-8.7c-2.6 0-4.2-.4-5.3-1.5-1.7-1.7-2.2-3.8-2.2-11.8s.5-10 2.2-11.8c1.1-1 2.7-1.5 5.3-1.5H94c2.6 0 4.3.5 5.3 1.4 1.7 1.8 2.2 3.8 2.2 11.6V24c0 .4-.1.6-.6.6H84.3M121.6 31c-.4.4-1 .6-2.7.6H115a10.1 10.1 0 01-4.8-1.5l-.3-.1V15.5a10.7 10.7 0 015-1.5h4c1.6 0 2.2.2 2.7.6.7.8 1 2.2 1 8.2s-.2 7.4-1 8.1zm-1.5-21.6h-3.6c-2.2 0-3.3.5-6.6 3.3V9.4h-5.2V42h5.2v-9c3.3 2.7 4.4 3.2 6.6 3.2h3.6c2.9 0 4.3-.5 5.5-1.6 1.4-1.5 2-3.5 2-11.8s-.6-10.3-2-11.8c-1.2-1.1-2.6-1.6-5.5-1.6M152.4 11c-1-1-2.3-1.6-4.6-1.6h-4.2c-2.2 0-3.3.5-6.7 3.3V2.5a18.8 18.8 0 00-5-2v35.6h5V15.5l1.1-.5a9.1 9.1 0 014-1h3.4c1.7 0 2.2.2 2.8.7a3.4 3.4 0 01.6 2.6V36h5.2V17c0-3.7-.6-5-1.6-6"/></g></svg><p class="color-white p text-xs">&copy; 2025 All rights reserved.</p><nav aria-label="support"><ul class="site-footer__support"><li><a href="/en/code-of-conduct/">Code of conduct</a></li><li><a href="/en/terms/">Terms of use</a></li><li><a href="/en/privacy/">Privacy policy</a></li><li><a href="/en/trademarks/">Trademarks</a></li><li><a href="/en/logos/">Logo Usage</a></li><li><a href="/en/security/">Security</a></li></ul><ul class="site-footer__social"><li><a class="site-footer__twitter" href="https://twitter.com/ceph" rel="noreferrer noopener" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#d3dde7" aria-hidden="true" focusable="false"><path d="M24.857 4.125c-.964.429-1.982.696-3.053.857 1.071-.643 1.928-1.66 2.303-2.893a11.61 11.61 0 01-3.375 1.286 5.34 5.34 0 00-3.857-1.66 5.259 5.259 0 00-5.25 5.25c0 .428.054.803.16 1.178C7.447 7.929 3.536 5.839.912 2.625.482 3.429.214 4.285.214 5.25c0 1.821.911 3.429 2.357 4.393A6.199 6.199 0 01.161 9v.054a5.293 5.293 0 004.232 5.196A5.84 5.84 0 013 14.41c-.321 0-.696-.053-1.018-.106.697 2.089 2.625 3.642 4.929 3.642-1.822 1.393-4.072 2.25-6.536 2.25-.429 0-.857 0-1.232-.053a14.907 14.907 0 008.09 2.357c9.696 0 15-8.036 15-15v-.696a9.62 9.62 0 002.624-2.679z"/></svg> <span class="visually-hidden">Twitter</span></a></li><li><a class="site-footer__youtube" href="https://www.youtube.com/channel/UCno-Fry25FJ7B4RycCxOtfw" rel="noreferrer noopener" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#d3dde7" aria-hidden="true" focusable="false"><path id="a" d="M23.75 7.079s-.25-1.65-.95-2.4c-.9-.95-1.95-.95-2.4-1-3.35-.25-8.4-.25-8.4-.25s-5.05 0-8.4.25c-.45.05-1.5.05-2.4 1-.7.75-.95 2.4-.95 2.4S0 9.029 0 10.979v1.8c0 1.95.25 3.9.25 3.9s.25 1.65.95 2.4c.9.95 2.1.95 2.65 1.05 1.9.2 8.15.25 8.15.25s5.05 0 8.4-.25c.45-.05 1.5-.05 2.4-1 .7-.75.95-2.4.95-2.4s.25-1.95.25-3.9v-1.8c0-2-.25-3.95-.25-3.95zm-14.25 7.9v-6.75l6.5 3.4-6.5 3.35z"/></svg> <span class="visually-hidden">YouTube</span></a></li><li><a class="site-footer__facebook" href="https://www.facebook.com/cephstorage" rel="noreferrer noopener" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#d3dde7" aria-hidden="true" focusable="false"><path d="M24 12.072C23.999 5.689 19 .423 12.626.09 6.251-.243.732 4.473.066 10.822-.601 17.17 3.82 22.929 10.125 23.926v-8.385H7.078v-3.469h3.047V9.428c0-3.007 1.792-4.669 4.532-4.669.9.013 1.798.091 2.687.235v2.953H15.83a1.735 1.735 0 00-1.955 1.875v2.25h3.328l-.532 3.469h-2.797v8.385A12 12 0 0024 12.072z"/></svg> <span class="visually-hidden">Facebook</span></a></li></ul></nav></div><script type="text/javascript">!function(n,t,e,i,a,r){n.twq||((i=n.twq=function(){i.exe?i.exe.apply(i,arguments):i.queue.push(arguments)}).version="1.1",i.queue=[],(a=t.createElement(e)).async=!0,a.src="//static.ads-twitter.com/uwt.js",(r=t.getElementsByTagName(e)[0]).parentNode.insertBefore(a,r))}(window,document,"script"),twq("init","o6l7s"),twq("track","PageView"),_linkedin_partner_id="3438284",window._linkedin_data_partner_ids=window._linkedin_data_partner_ids||[],window._linkedin_data_partner_ids.push(_linkedin_partner_id),function(){window.lintrk||(window.lintrk=function(n,t){window.lintrk.q.push([n,t])},window.lintrk.q=[]);var n=document.getElementsByTagName("script")[0],t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src="https://snap.licdn.com/li.lms-analytics/insight.min.js",n.parentNode.insertBefore(t,n)}()</script><noscript><img height="1" width="1" style="display:none" alt="" src="https://px.ads.linkedin.com/collect/?pid=3438284&fmt=gif"></noscript></footer><script type="module" src="/js/bundle-main.mjs"></script><script nomodule src="/js/bundle-main.js"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10