mirror of https://github.com/joplin/website.git
17 lines
44 KiB
HTML
17 lines
44 KiB
HTML
<!doctype html>
|
||
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-dev/gsoc/gsoc2023/index" data-has-hydrated="false">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="generator" content="Docusaurus v2.4.3">
|
||
<title data-rh="true">Google Summer of Code 2023 | Joplin</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://joplinapp.org/help/dev/gsoc/gsoc2023/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Google Summer of Code 2023 | Joplin"><meta data-rh="true" name="description" content="Joplin has a young but well proven history. All contributors, Joplin users and developers are welcome to participate in the hopefully third year Summer of Code program with Joplin. This year the ma..."><meta data-rh="true" property="og:description" content="Joplin has a young but well proven history. All contributors, Joplin users and developers are welcome to participate in the hopefully third year Summer of Code program with Joplin. This year the ma..."><link data-rh="true" rel="icon" href="https://joplinapp.org/favicon.ico"><link data-rh="true" rel="canonical" href="https://joplinapp.org/help/dev/gsoc/gsoc2023/"><link data-rh="true" rel="alternate" href="https://joplinapp.org/help/dev/gsoc/gsoc2023/" hreflang="en"><link data-rh="true" rel="alternate" href="https://joplinapp.org/fr/help/dev/gsoc/gsoc2023/" hreflang="fr"><link data-rh="true" rel="alternate" href="https://joplinapp.org/help/dev/gsoc/gsoc2023/" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/news/rss.xml" title="Joplin RSS Feed">
|
||
<link rel="alternate" type="application/atom+xml" href="/news/atom.xml" title="Joplin Atom Feed"><link rel="stylesheet" href="/assets/css/styles.3f0207fa.css">
|
||
<link rel="preload" href="/assets/js/runtime~main.1fb4f966.js" as="script">
|
||
<link rel="preload" href="/assets/js/main.aa9faae4.js" as="script">
|
||
</head>
|
||
<body class="navigation-with-keyboard">
|
||
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
|
||
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://joplinapp.org" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/images/logo-text-blue.svg" alt="Joplin" class="themedImage_ToTc themedImage--light_HNdA"><img src="/images/logo-text-blue.svg" alt="Joplin" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate"></b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/news">News</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/help/">Help</a><a href="https://discourse.joplinapp.org" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Forum</a><a href="https://joplinapp.org/plans" target="_self" rel="noopener noreferrer" class="navbar__item navbar__link navbar-custom-buttons plans-button">Joplin Cloud</a><a href="https://joplinapp.org/donate" target="_self" rel="noopener noreferrer" class="navbar__item navbar__link navbar-custom-buttons sponsor-button">♡ Support us</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/help/dev/gsoc/gsoc2023/" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/fr/help/dev/gsoc/gsoc2023/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="fr">Français</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/help/">What is Joplin?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/help/install">Installation</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/help/apps/">Using Joplin</a><button aria-label="Toggle the collapsible sidebar category 'Using Joplin'" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/help/api/">Programmatic API</a><button aria-label="Toggle the collapsible sidebar category 'Programmatic API'" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" aria-expanded="true" href="/help/dev/">Development</a><button aria-label="Toggle the collapsible sidebar category 'Development'" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/help/dev/spec/architecture">Technical specifications</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/help/dev/gsoc/gsoc2020/">Google Summer of Code</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/help/dev/gsoc/gsoc2020/">Google Summer of Code 2020</a><button aria-label="Toggle the collapsible sidebar category 'Google Summer of Code 2020'" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/help/dev/gsoc/gsoc2021/">Google Summer of Code 2021</a><button aria-label="Toggle the collapsible sidebar category 'Google Summer of Code 2021'" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/help/dev/gsoc/gsoc2022/">Google Summer of Code 2022</a><button aria-label="Toggle the collapsible sidebar category 'Google Summer of Code 2022'" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" aria-expanded="true" tabindex="0" href="/help/dev/gsoc/gsoc2023/">Google Summer of Code 2023</a><button aria-label="Toggle the collapsible sidebar category 'Google Summer of Code 2023'" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-4 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/gsoc/gsoc2023/ideas">GSoC 2023 Ideas</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-4 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/gsoc/gsoc2023/pull_request_guidelines">Pull request guidelines</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/gsoc/gsoc2024/">Google Summer of Code 2024</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" tabindex="0" href="/help/dev/gsoc/gsod2020/">Google Season of Doc 2020</a><button aria-label="Toggle the collapsible sidebar category 'Google Season of Doc 2020'" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/BUILD">Building the applications</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/DEPLOY">Deploying Joplin apps and scripts</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/build_troubleshooting">Build troubleshooting</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/coding_style">Coding style</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/localisation">Localisation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/spellcheck">Spellchecking using CSpell</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/help/dev/technical_spec">Guide to writing a technical spec</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/help/about/changelog/android">About</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/help/faq">FAQ</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h1>Google Summer of Code 2023</h1><div class="donate-links"><p><a href="https://www.paypal.com/donate/?business=E8JMYD2LQ8MMA&no_recurring=0&item_name=I+rely+on+donations+to+maintain+and+improve+the+Joplin+open+source+project.+Thank+you+for+your+help+-+it+makes+a+difference%21&currency_code=EUR" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg" alt="Donate using PayPal" class="img_ev3q"></a> <a href="https://github.com/sponsors/laurent22/" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/GitHub-Badge.svg" alt="Sponsor on GitHub" class="img_ev3q"></a> <a href="https://www.patreon.com/joplin" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg" alt="Become a patron" class="img_ev3q"></a> <a href="https://joplinapp.org/donate/#donations" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-IBAN.svg" alt="Donate using IBAN" class="img_ev3q"></a></p></div><p>Joplin has a young but well proven history. All contributors, Joplin users and developers are welcome to participate in the hopefully third year Summer of Code program with Joplin. This year the main themes will be:</p><ul><li><strong>Mobile and tablet development</strong> - we want to improve the mobile/tablet application on iOS and Android.</li><li><strong>Plugin and external apps</strong> - leverage the Joplin API to create plugins and external apps.</li><li>And you are welcome to suggest your own ideas.</li></ul><p>Mentors, administrators and contributors: read <a href="https://developers.google.com/open-source/gsoc" target="_blank" rel="noopener noreferrer">Summer of Code</a> occasionally. Also read the <a href="https://developers.google.com/open-source/gsoc/faq" target="_blank" rel="noopener noreferrer">Summer of Code FAQ</a>.</p><p><strong>Please read this page carefully as most likely it will have all the answers to the questions you might have, such as how to build the app, how to contribute and what are the rules for submitting a pull request.</strong></p><p>All participants will need a Google account in order to join the program. So, save time and create one now. In addition, all participants need to join the <a href="https://discourse.joplinapp.org" target="_blank" rel="noopener noreferrer">Joplin Forum</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-contribute">How to contribute<a href="#how-to-contribute" class="hash-link" aria-label="Direct link to How to contribute" title="Direct link to How to contribute"></a></h2><p>We suggest you read carefully these important documents and bookmark the links as you will need to refer to them throughout GSoC:</p><ul><li><a href="https://joplinapp.org/help/dev/gsoc/gsoc2023/pull_request_guidelines/" target="_blank" rel="noopener noreferrer">How to submit a pull request for GSoC</a></li><li><a href="https://github.com/laurent22/joplin/blob/dev/help/dev/BUILD.md" target="_blank" rel="noopener noreferrer">How to build the apps</a></li><li><a href="/help/dev">How to contribute</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="programming-language">Programming Language<a href="#programming-language" class="hash-link" aria-label="Direct link to Programming Language" title="Direct link to Programming Language"></a></h2><ul><li>Any new application or plugin should be done using TypeScript.</li><li>For web publishing, please use WebPack.</li><li>For UI, we use React/Redux. Make sure you use React Hooks when creating new components.</li><li>For styling, we use SASS.</li></ul><p>In general, all applications share the same back-end written in TypeScript or JavaScript (Node.js), with Redux for state management. The back-end runs locally.</p><p>The desktop GUI, as listed on the <a href="https://joplinapp.org/help/install" target="_blank" rel="noopener noreferrer">Joplin's website</a> is done using Electron and React.</p><p>The mobile app is done using React Native.</p><p>Submissions and ideas for projects in any other language should specifically mention the choice.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="instructions-for-contributors">Instructions for contributors<a href="#instructions-for-contributors" class="hash-link" aria-label="Direct link to Instructions for contributors" title="Direct link to Instructions for contributors"></a></h2><p>Contributors wishing to participate in Summer of Code must realize, that this is an important professional opportunity. You will be required to produce applicable and readable code for Joplin in 3 months. Your mentors, will dedicate a portion of their time to mentoring you. Therefore, we seek candidates who are committed to helping Joplin and its community long-term and are willing to both do quality work, and be proactive in communicating with your mentor(s).</p><p>You don't have to be a proven developer - in fact, this whole program is meant to facilitate joining Joplin and other Open Source communities. However, experience in coding and/or experience with the above mentioned programming languages and the applications is welcome.</p><p>You should start learning the components that you plan on working on before the start date. Support can be found in the forum and on our dedicated discourse channel. You should plan to communicate with your team several times per week, and formally report progress and plans weekly. You are free to choose the format, it can be a sophisticated online document or simple continuous blog on GitHub.</p><p>Contributors who neglect active communication will be failed!</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-create-your-first-pull-request">How to create your first pull request<a href="#how-to-create-your-first-pull-request" class="hash-link" aria-label="Direct link to How to create your first pull request" title="Direct link to How to create your first pull request"></a></h2><p>Before you can be accepted as a contributor we expect you to write some code and link that work on your proposal. As a first pull request, we suggest one of the following:</p><ul><li>Fix a <a href="https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is:open+is:issue+label:bug+label:high" target="_blank" rel="noopener noreferrer">high priority</a> or <a href="https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is:open+is:issue+label:bug+label:medium" target="_blank" rel="noopener noreferrer">medium priority</a> bug. This is something we highly value and is a good way to get a deep understanding of certain parts of the codebase.</li><li>Alternatively you may browse the <a href="https://github.com/laurent22/joplin/issues" target="_blank" rel="noopener noreferrer">GitHub Issues</a> to find something that can be worked on. Note that this is a difficult way to get a pull request in, so make sure the issue you choose has a very clear technical spec. If we need to discuss how it should work or what it should do in the pull request, it means there was no consensus for this feature, and we are likely to close the pull request.</li><li>Please <strong>do not submit a pull request just to fix some typo</strong>.</li></ul><p>Before submitting a pull request, please make sure you read the <a href="https://joplinapp.org/help/dev/gsoc/gsoc2023/pull_request_guidelines/" target="_blank" rel="noopener noreferrer">pull request guidelines for GSoC 2023</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="general-instructions">General instructions<a href="#general-instructions" class="hash-link" aria-label="Direct link to General instructions" title="Direct link to General instructions"></a></h2><p>First of all, please read the above referenced resources and the <a href="https://developers.google.com/open-source/gsoc/faq" target="_blank" rel="noopener noreferrer">GSoC FAQ</a>. Pay special attention to the <strong>Eligibility</strong> section of the FAQ.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="recommended-steps">Recommended steps<a href="#recommended-steps" class="hash-link" aria-label="Direct link to Recommended steps" title="Direct link to Recommended steps"></a></h2><ol><li>Join the <a href="https://discourse.joplinapp.org" target="_blank" rel="noopener noreferrer">Joplin Forum</a>, introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the <a href="https://discourse.joplinapp.org/c/gsoc" target="_blank" rel="noopener noreferrer">GSoC category</a>. The subject of the topic shall contain your username, e.g. <em>Introducing <!-- --><<!-- -->username<!-- -->></em>.</li><li>Read Contributor proposal guidelines and the <a href="https://google.github.io/gsocguides/student/" target="_blank" rel="noopener noreferrer">GSoC Contributor/Student Guide</a></li><li>Take a look at the <a href="/help/dev/gsoc/gsoc2023/ideas">list of ideas</a>. You can have you own idea added by posting it in the <a href="https://discourse.joplinapp.org/c/features" target="_blank" rel="noopener noreferrer">Features category</a></li><li>Come up with project that you're interested in and discuss it in <a href="https://discourse.joplinapp.org/c/features" target="_blank" rel="noopener noreferrer">Features category</a></li><li>Write a first draft and get someone to review it</li><li>Remember: you must link to work such as commits in your proposal. A private place will be created within the forum for that purposes.</li><li>Read <a href="http://teom.org/blog/kde/how-to-write-a-kick-ass-proposal-for-google-summer-of-code/" target="_blank" rel="noopener noreferrer">How to write a kickass proposal for GSoC</a></li><li>Submit proposal using <a href="https://summerofcode.withgoogle.com/" target="_blank" rel="noopener noreferrer">Google's web interface</a> ahead of the deadline</li><li>Submit proof of enrolment well ahead of the deadline</li></ol><p>Coming up with an interesting idea is probably the most difficult part. It should be something interesting for Joplin, for Open Source in general and for you. And it must be something that you can realistically achieve in the time available to you.</p><p>A good start is finding out what the most pressing issues are in the projects in which you are interested. Join the forum and subscribe to GitHub repository for that project or go into its discourse channel: meet developers and your potential mentor, as well as start learning the code-base. We recommend strongly getting involved in advance of the beginning of GSoC, and we will look favourably on applications from contributors who have already started to act like Open Source developers.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="contributor-proposal-guidelines">Contributor proposal guidelines<a href="#contributor-proposal-guidelines" class="hash-link" aria-label="Direct link to Contributor proposal guidelines" title="Direct link to Contributor proposal guidelines"></a></h2><p>A project proposal is what you will be judged upon. Write a clear proposal on what you plan to do, the scope of your project, and why we should choose you to do it. Proposals are the basis of the GSoC projects and therefore one of the most important things to do well. The proposal is not only the basis of our decision of which contributor to choose, it has also an effect on Google's decision as to how many contributor slots are assigned to Joplin.</p><p>Below is the application template:</p><blockquote><p><strong>Introduction</strong></p><p>Every software project should solve a problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. Include links to discussions, features, or bugs that describe the problem further if necessary.</p><p><strong>Project goals</strong></p><p>Be short and to the point, and perhaps format it as a list. Propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the Google Summer of Code term is what counts.</p><p><strong>Implementation</strong></p><p>Be detailed. Describe what you plan to do as a solution for the problem you defined above. Include technical details, showing that you understand the technology. Illustrate key technical elements of your proposed solution in reasonable detail. Include writing unit tests throughout the coding period, as well as code documentation. These critical elements cannot be left to the last few weeks of the program. If user documentation will be required, or apidox, etc. these should be written during each week, not at the end.</p><p><strong>Timeline</strong></p><p>Show that you understand the problem, have a solution, have also broken it down into manageable parts, and that you have a realistic plan on how to accomplish your goal. Here you set expectations, so don’t make promises you can’t keep. A modest, realistic and detailed timeline is better than promising the impossible.</p><p>If you have other commitments during GSoC, such as a job, vacation, exams, internship, seminars, or papers to write, disclose them here. GSoC should be treated like a full-time job, and we will expect approximately 40 hours of work per week. <em>If you have conflicts, explain how you will work around them.</em> If you are found to have conflicts which you did not disclose, you may be failed.</p><p>Open and clear communication is of utmost importance. <strong>Include your plans for communication in your proposal; daily if possible.</strong> You will need to initiate weekly formal communication such as a blog post on to be agreed placed. Lack of communication will result in you being failed.</p><p><strong>About me</strong></p><p>Provide your contact information (IRC nick, email, IM, phone) and write a few sentences about you and why you think you are the best for this job. <strong>Prior contributions to Joplin are required; list your commits.</strong> Name people (other developers, students, professors) who can act as a reference for you. Mention your field of study if necessary. Now is the time to join the relevant irc/telegram channels, mail lists and blog feeds. We want you to be a part of our community, not just contribute your code.</p><p><em>Tell us if you are submitting proposals to other organizations, and whether or not you would choose Joplin if given the choice.</em></p><p><em>Other things to think about:</em></p><ul><li>Are you comfortable working independently under a supervisor or mentor who is several thousand miles away, and perhaps 12 time zones away? How will you work with your mentor to track your work? Have you worked in this style before?</li><li>If your native language is not English, are you comfortable working closely with a supervisor whose native language is English? What is your native language, as that may help us find a mentor who has the same native language?</li><li>After you have written your proposal, you should get it reviewed. Do not rely on the Joplin mentors to do it for you via the web interface, although we will try to comment on every proposal. It is wise to ask a colleague or a developer to critique your proposal. Clarity and completeness are important.</li></ul></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hints">Hints<a href="#hints" class="hash-link" aria-label="Direct link to Hints" title="Direct link to Hints"></a></h2><p><strong>Submit your proposal early</strong>: early submissions get more attention from developers because that they have more time to read them. The more people see your proposal, the more it will be discussed.</p><p><strong>Do not leave it all to the last minute</strong>: while it is Google that is operating the webserver, it would be wise to expect a last-minute overload on the server. So, be sure you send your application and proof of enrolment before the final rush. Also, applications submitted very late will get the least attention from mentors, so you may get a lower vote because of that. Submitting a draft early will give time for feedback from prospective mentors.</p><p><strong>Keep it simple</strong>: Be concise and precise. Provide a clear, descriptive title. "My Project" is the worst possible title!</p><p><strong>Know what you are talking about</strong>: Do not submit proposals that cannot be accomplished over a summer or that are not related to Joplin. If your idea is unusual, be sure to explain why you have chosen Joplin to be your mentoring organization.There could be exceptional reason to accept proposal what cannot be finished over the summer if either it is clearly recognisable that there will be commitment beyond the summer period or the project can be well separated in sub-project. If you want to go that way, your proposal must be very easy readable to allow us to evaluate the changes of a project going through several coding programs.</p><p><strong>Aim wide</strong>: submit more than one proposal. You are allowed to submit to another organisation as well. If you do submit more than one proposal, tell us that and which proposal you would choose, if both were selected. Former students would advise you to do one or two kick-ass proposals rather than trying to do three.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="accepted-contributors">Accepted Contributors<a href="#accepted-contributors" class="hash-link" aria-label="Direct link to Accepted Contributors" title="Direct link to Accepted Contributors"></a></h2><p>Your primary responsibility is finishing your project under the guidance of your mentors. To do that, you must submit code regularly and stay in frequent and effective communication with your mentors and team. To pass the evaluations, you must do both the communication <strong>and</strong> the coding plus documentation.</p><p>All contributors will create a report page by tool up to their choice. Keep this up-to-date, as this is one of our primary evaluation tools.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="instructions-for-mentors">Instructions for mentors<a href="#instructions-for-mentors" class="hash-link" aria-label="Direct link to Instructions for mentors" title="Direct link to Instructions for mentors"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="ideas">Ideas<a href="#ideas" class="hash-link" aria-label="Direct link to Ideas" title="Direct link to Ideas"></a></h3><p>If you're a Joplin developer or motivated user and you wish to participate in Summer of Code, make a proposal in the <a href="https://discourse.joplinapp.org/c/features" target="_blank" rel="noopener noreferrer">Features category of the Joplin Forum</a>, based what your Joplin project needs.</p><p>If you wish to mentor, please read the <a href="https://google.github.io/gsocguides/mentor/org-application" target="_blank" rel="noopener noreferrer">GSoC Mentor Guide</a> and the <a href="https://developers.google.com/open-source/gsoc/faq#general" target="_blank" rel="noopener noreferrer">Summer of Code FAQ</a>. Also, please contact the <a href="https://discourse.joplinapp.org/g/staff" target="_blank" rel="noopener noreferrer">staff</a> and get the go-ahead from them before editing the ideas page, adding your idea.</p><p>Your idea proposal should be a brief description of what the project is, what the desired goals would be, what the contributor should know and an email address for contact. Contributors are not required to follow your idea to the letter, so regard your proposal as inspiration for them.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mentoring">Mentoring<a href="#mentoring" class="hash-link" aria-label="Direct link to Mentoring" title="Direct link to Mentoring"></a></h3><p>Anyone developer can be a mentor if you meet the GSoC eligibility requirements. We will potentially assign a contributor to you who has never worked on such a large project and will need some help. Make sure you're up for the task. Mentoring takes time, and lots and lots of communication.</p><p>Before subscribing yourself as a mentor, please make sure that the <a href="https://discourse.joplinapp.org/g/staff" target="_blank" rel="noopener noreferrer">staff</a> is aware of that. Ask them to send the Summer of Code Administrators an email confirming your involvement in the team. This is just a formality to make sure you are a real person we can trust; the administrators cannot know all active developers by their Google account ID. Then drop us a message in the forum.</p><p>Prospective mentors should read the <a href="http://www.booki.cc/gsoc-mentoring" target="_blank" rel="noopener noreferrer">mentoring guide</a>. Also, Federico Mena-Quintero has written some helpful information based on his experiences in previous years. <a href="https://people.gnome.org/~federico/docs/summer-of-code-mentoring-howto/index.html" target="_blank" rel="noopener noreferrer">His HOWTO</a> has some useful suggestions for anyone planning to mentor this year.</p><p>You will subscribe to the relevant tags in the forum to discuss ideas. You will need to read the proposals as they come in, and vote on the proposals. Daily communication is required with your contributor during the Community Bonding period, and multiple times per week during the coding period.</p><p>Finally, know that we will never assign you to a project you do not want to work on. We will not assign you more projects than you can/want to take on either. And you will have a backup mentor, just in case something unforeseen takes place.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ideas-1">Ideas<a href="#ideas-1" class="hash-link" aria-label="Direct link to Ideas" title="Direct link to Ideas"></a></h2><p>Please see below for a list of project ideas:</p><p><a href="https://joplinapp.org/help/dev/gsoc/gsoc2023/ideas/" target="_blank" rel="noopener noreferrer">https://joplinapp.org/help/dev/gsoc/gsoc2023/ideas/</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/laurent22/joplin/tree/dev/readme/dev/gsoc/gsoc2023/index.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/help/dev/gsoc/gsoc2022/pull_request_guidelines"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Pull request guidelines</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/help/dev/gsoc/gsoc2023/ideas"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">GSoC 2023 Ideas</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#how-to-contribute" class="table-of-contents__link toc-highlight">How to contribute</a></li><li><a href="#programming-language" class="table-of-contents__link toc-highlight">Programming Language</a></li><li><a href="#instructions-for-contributors" class="table-of-contents__link toc-highlight">Instructions for contributors</a></li><li><a href="#how-to-create-your-first-pull-request" class="table-of-contents__link toc-highlight">How to create your first pull request</a></li><li><a href="#general-instructions" class="table-of-contents__link toc-highlight">General instructions</a></li><li><a href="#recommended-steps" class="table-of-contents__link toc-highlight">Recommended steps</a></li><li><a href="#contributor-proposal-guidelines" class="table-of-contents__link toc-highlight">Contributor proposal guidelines</a></li><li><a href="#hints" class="table-of-contents__link toc-highlight">Hints</a></li><li><a href="#accepted-contributors" class="table-of-contents__link toc-highlight">Accepted Contributors</a></li><li><a href="#instructions-for-mentors" class="table-of-contents__link toc-highlight">Instructions for mentors</a><ul><li><a href="#ideas" class="table-of-contents__link toc-highlight">Ideas</a></li><li><a href="#mentoring" class="table-of-contents__link toc-highlight">Mentoring</a></li></ul></li><li><a href="#ideas-1" class="table-of-contents__link toc-highlight">Ideas</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://twitter.com/joplinapp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.patreon.com/joplin" target="_blank" rel="noopener noreferrer" class="footer__link-item">Patreon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.linkedin.com/company/joplin" target="_blank" rel="noopener noreferrer" class="footer__link-item">LinkedIn<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/VSj7AFHvpq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://mastodon.social/@joplinapp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Mastodon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://sopuli.xyz/c/joplinapp" target="_blank" rel="noopener noreferrer" class="footer__link-item">Lemmy<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/laurent22/joplin/" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Legal</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://joplinapp.org/privacy" target="_blank" rel="noopener noreferrer" class="footer__link-item">Privacy Policy</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2016-2024 Laurent Cozic</div></div></div></footer></div>
|
||
<script src="/assets/js/runtime~main.1fb4f966.js"></script>
|
||
<script src="/assets/js/main.aa9faae4.js"></script>
|
||
</body>
|
||
</html> |