GCI 2018

This page is for listing tasks and collecting ideas for the yearly Google Code-in contests. 
https://codein.withgoogle.com/
https://developers.google.com/open-source/gci/how-it-works
== Governance == 
=== Google Task Description ===
A task is a small project that is expected to take between 3-5 hours of work to complete. Tasks are categorized with the following labels:
* Code: Tasks related to writing or refactoring code
* Documentation/Training: Tasks related to creating/editing documents and helping others learn more
* Outreach/Research: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
* Quality Assurance: Tasks related to testing and ensuring code is of high quality
* Design: Tasks related to user experience research or user interface design and interaction
=== Regarding Project Ideas ===
Project ideas are to be added below by community members.
NOTE: Google looks for the following for each task:
* A mix of tasks across multiple categories. (Code, Documentation/Training, Outreach/Research, Quality Assurance, and User Interface)
* Tasks of appropriate scope, length, and complexity.
* Fully fleshed out descriptions with enough information to get started on.
* Clear and understandable descriptions and titles.
* Appropriate tags for searchability.
Please add new sections following this format.
=== Mentors (2018) ===
The following individuals have been listed as possible mentors on the below projects, and/or offered to be mentors for student-proposed projects:
* Renee Phillips
* Lætitia Avrot
* Stephen Frost
* Sarah Conway
* Evan Macbeth
* Keith Fiske
* Tahir Ramzan
* Jeremy Schneider
* Amit Kumar Jaiswal
* Andreas Scherbaum
* Pavan Agrawal
== Tasks ==
===Give a Local Presentation===
=====Task Description=====
PostgreSQL is a rapidly growing open source database, but one area that needs improvement is reaching outside of the internal community to the external open-source world to educate others about PostgreSQL and help them get started. Because of that, we can use your help to present a talk focused on PostgreSQL to an audience of your choosing. Examples would include local technology groups, technology user groups, a school, or clubs in your area. Some potential audiences can be found through Meetup: http://meetup.com/. The length of the talk can vary from a 5 minute lightning talk to a 30-60 minute long presentation or tutorial. 
The expected work to be uploaded will be a PDF version of the slides used during the presentation.
=====Tags=====
* Outreach
* Research
* Presentation
* SQL
* Databases
=====Categories=====
Outreach/Research
===Create an Educational Video===
=====Task Description=====
More online resources are always helpful for those learning PostgreSQL. Create a video demonstration illustrating a topic of your choosing in PostgreSQL; some examples would include a beginners introduction and history of PostgreSQL, how to get started in PostgreSQL, how to perform load balancing and high availability in a PostgreSQL cluster, how to run PostgreSQL within a Kubernetes or OpenShift environment, different monitoring statistics for your cluster, and so on.
The video should be between 5-15 minutes, and must be your original work. 
=====Tags=====
* Outreach
* Documentation
* Video
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Developing a Lesson Plan===
=====Task Description=====
A major priority of the PostgreSQL organization is to expand awareness and education of PostgreSQL throughout the world, in a diverse and inclusive manner. One of our goals is to educate all groups, ranging from middle school, high school, and college students to adults from all ages and backgrounds, of open source technology and PostgreSQL.
The expected outcome of this task is to draft sample training materials and a lesson plan for a younger age group (ranging from kids to teenagers) on getting started with PostgreSQL. It should be fun and engaging, with interactive tasks for hands-on learning. This can be submitted in any format, ranging from slides to a document-based format. The lesson plan should be prefaced with the intended audience, the difficulty level, and the estimated amount of time to complete the training. 
=====Tags=====
* Outreach
* Research
* Training
* SQL
* Databases
=====Categories=====
Outreach/Research
===Design a Logo for a Conference===
=====Task Description=====
PostgreSQL has several conferences that revolve around educating and discussing PostgreSQL within the community. One of these conferences, Postgres Open SV 2019, is in need of a new, updated, and high-resolution logo for next year's conference. The website from 2018 with the currently existing logo can be found here:
https://2018.postgresopen.org/
The requirements are as follows:
1) Submissions should be high-resolution (PNG or SVG) and should include a source file.
2) The logo should resonate well with the current website design, as next year's design will be similar to the existing.
3) While it does not need to resemble the current logo, it does need to center around an elephant as the theme. The reasoning for this is the official logo for PostgreSQL itself is an elephant: https://www.postgresql.org/media/img/about/press/elephant.png
4) Provide a brief summary of your logic behind the design of the logo and your approach.
=====Tags=====
* User Interface
* Graphics
* Design
* Logo
=====Categories=====
User Interface
===Reviewing Patches===
=====Task Description=====
PostgreSQL development revolves around CommitFest periods where any and all volunteers are needed to assist in reviewing proposed patches. Your task would be to select an open patch, evaluate it, and ensure it does what the author intends. 
Please demonstrate your testing process and include screenshots of the steps taken, along with the proof that it is working, in a document that will be submitted for evaluation as proof of completing the task.
More information can be found here:
https://wiki.postgresql.org/wiki/Reviewing_a_Patch
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* SQL
* Databases
* C
* C-language
=====Categories=====
Quality Assurance
Code
===Improve PostgreSQL Regression Test Coverage===
=====Task Description=====
PostgreSQL can use additional development in the area of regression tests. Regression testing ensures that within PostgreSQL, new changes and additions aren't breaking existing functionality. Your task will be to introduce new regression tests for command line utilities and extensions that are poorly covered, as shown on https://coverage.postgresql.org/. 
The current regression test coverage for PostgreSQL isn't great, to the point where some areas of the code are covered only at single-digit-percent levels.
Having good regression tests for such an important project as PostgreSQL is really key to minimizing the chance that any regressions are introduced. PostgreSQL's build system includes a "make coverage-html" to generate the report.
Please note that this project involves writing SQL code and Perl code, at a minimum, to implement the tests necessary to increase the code coverage of the PostgreSQL regression tests.
More information can be found in the official documentation on regression tasks.
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* SQL
* Perl
* Databases
* C
* C-language
* Development
=====Categories=====
Quality Assurance
Code
===pgAdmin 4 Bug - Setting up SMTP with Docker===
=====Task Description=====
There is no currently existing documentation for setting up SMTP when running the official Docker image for pgAdmin 4. Without SMTP, users cannot change their password or use the "forgot password" option. The expected outcome from this task would be to determine how to configure SMTP with the Docker container and write up documentation illustrating the steps. 
A requirement would be to create a PostgreSQL community account. The resulting documentation would be sent in to the pgadmin4-hackers mailing list for review, and uploaded as a file for proof of completion. https://www.postgresql.org/list/pgadmin-hackers/
The original bug report can be found here: https://redmine.postgresql.org/issues/3599
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* SQL
* Databases
* Development
* Documentation
=====Categories=====
Quality Assurance
Code
Documentation / Training
===PostGIS Bug - Windows Installer===
=====Task Description=====
When installing PostGIS on Microsoft Windows, the installer shows a "Database Connection Information" dialog to supply User Name, Password, and Port. The installer will begin to install PostGIS, however, if there is a mistake in the connection information, the installer fails part-way in, requiring it to be run again from the beginning.
It would be nice to allow multiple attempts to correct the connection information, if say, there was a typo with the password. This way the installer only needs to be run once (for example, using Application Stack Builder, which downloads the installer to %TEMP%).
Not only should the connection info establish a connection to a database, but select count(*)=1 from pg_user where usename=$1 and usecreatedb;. If there is an error, the user should be able to go back and correct, try again, repeat or cancel. Correct connection info should be established before starting the install process.
A requirement would be to create a PostgreSQL community account. The resulting documentation would be sent in to the postgis-devel mailing list for review, and uploaded as a file for proof of completion. https://lists.osgeo.org/mailman/listinfo/postgis-devel
The original bug report can be found here: https://trac.osgeo.org/postgis/ticket/516
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* Authentication
* SQL
* Databases
* Development
* Documentation
=====Categories=====
Quality Assurance
Code
Documentation / Training
===Learn about pgsql-bugs===
=====Task Description=====
The purpose of this task is to introduce you to community involvement and participation. 
Please review the pgsql-bugs mailing list archives, located here, and look for recently reported bugs. Your task will be to pick a recently reported issue and recreate it on your own system. 
The expected submission for this task will be a link to the mailing list archive for the relevant thread and a screenshot of the reproduced problem on your machine, showing the problem reported by the original user. Please additionally include the operating system and version of PostgreSQL you are running, in addition to the steps taken to reproduce the original issue.
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* Quality Assurance
* SQL
* Databases
* Development
* Testing
=====Categories=====
Quality AssuranceParticipate in Mailing Lists
Code
===Learn about pgsql-performance===
=====Task Description=====
The purpose of this task is to introduce you to community involvement and participation. 
Please review the pgsql-performance mailing list archives, located here, and look for recently reported bugs. Your task will be to pick a recently reported issue and recreate it on your own system. 
The expected submission for this task will be a link to the mailing list archive for the relevant thread and a screenshot of the reproduced problem on your machine, showing the problem reported by the original user. Please additionally include the operating system and version of PostgreSQL you are running, in addition to the steps taken to reproduce the original issue.
=====Tags=====
* Code
* Review
* Bug fixing
* Patch
* Quality Assurance
* SQL
* Databases
* Development
* Testing
=====Categories=====
Quality Assurance
Code
===PostgreSQL US - Develop an Integrated Form===
=====Task Description=====
The United States PostgreSQL Association, affectionately known as PgUS, is a IRS 501(c)(3) non-profit public charity that has the intention of supporting the growth and education of PostgreSQL, The World's Most Advanced Open Source Database, throughout the United States. 
Your task will be to fork the official repository hosting the PostgreSQL US website and propose a patch / pull request that integrates the currently existing Diversity Scholarship form hosted on Google Forms into a web page of its own.
A further description of the Diversity Scholarship and its purpose can be found here.
=====Tags=====
* Code
* Design
* User Interface
* HTML
* CSS
* Bootstrap
=====Categories=====
Code
User Interface
===PostgreSQL US - Develop a Resolution Tracker===
=====Task Description=====
The United States PostgreSQL Association, affectionately known as PgUS, is a IRS 501(c)(3) non-profit public charity that has the intention of supporting the growth and education of PostgreSQL, The World's Most Advanced Open Source Database, throughout the United States. 
Your task will be to fork the official repository hosting the PostgreSQL US website and propose a patch / pull request that contains a form in which board members can record resolutions in addition to information relating to who voted on the resolution, what the resolution is along with a description, and what the resulting votes are.
=====Tags=====
* Code
* Design
* User Interface
* HTML
* CSS
* Bootstrap
=====Categories=====
Code
User Interface
===PostgreSQL US - Draft a new Website Design===
=====Task Description=====
The United States PostgreSQL Association, affectionately known as PgUS, is a IRS 501(c)(3) non-profit public charity that has the intention of supporting the growth and education of PostgreSQL, The World's Most Advanced Open Source Database, throughout the United States. 
The official website could use a design refresh. Your task will be to redesign one front page and one side page in Photoshop, GIMP, or some other such editing software. 
The requirements for the submission will be as follows:
1) There should be high resolution images attached for each page (SVG, PNG, or PDF). 
2) Additional designs should be created for both the tablet and mobile views of the website, for both the front page and the chosen side page.
3) The design should incorporate elephants in some way, in addition to using the hex color #336791 in the general color scheme. It does not need to be the primary color.
4) Provide a brief summary of your logic behind the design of the webpages and your approach.
=====Tags=====
* User Interface
* Graphics
* Design
* Logo
* Frontend
=====Categories=====
User Interface
===Enhancing amcheck for all AMs===
=====Task Description=====
Amcheck is a PostgreSQL extension to verify the integrity of index against invariants that should always hold in the valid index. This tool is designed to diagnose corruption and help developers during the implementation of new features in access methods. Currently, amcheck supports only B-tree. Also, work on GiST is in progress https://github.com/petergeoghegan/amcheck/pull/11
But amcheck could be used for many other indexes: GIN, SP-GiST, BRIN, RUM.
For each AM it is necessary to deduce invariants to check, implement this checks and test against various index states.
Also, it would be useful to unite all AM check methods in a single entry point for checking index.
The interface of check functions can also be enhanced in favor of more detailed corruption information. It would be useful to model various corruptions, including both those which can be found by data_checksums and those which cannot.
The project requires a good grasp of algorithms behind very sophisticated data structures, along with concurrency and recovery over them.
The expected outcome would be to introduce support for a major PostgreSQL AM in amcheck as a proposed patch.
=====Tags=====
* Code
* C
* C-language
* SQL
* Programming
* Algorithms
=====Categories=====
Code
===Interview PostgreSQL Contributors===
=====Task Description=====
The purpose of this task would be for you to reach out to various PostgreSQL community contributors and perform a remote interview with one or more contributors. Some example questions could include:
* how they got started with PostgreSQL
* what they enjoy most about working with PostgreSQL
* how they got involved in the community
* what challenges are involved
* how the community has evolved over time and where it is headed
* what their advice is to someone looking to begin learning about PostgreSQL or contribute to the project
and so on. 
The ultimate goal would be to develop a blogpost based on the interview that could be published through Planet PostgreSQL. The result would be uploaded as a text file or PDF.
The list of community contributors can be found here.
=====Tags=====
* Blogpost
* Outreach
* Research
* Interview
* Writing
=====Categories=====
Outreach / Research
===Review and improve the "Getting Started" tutorial in the PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a set of existing tutorials, one of which is "Getting Started". Attempt to follow this tutorial to install PostgreSQL, create a PostgreSQL database and then access that database. Make notes of issues trying to follow the tutorial, areas where the tutorial lacks specific information to be able to accomplish the task, places where the tutorial doesn't provide information about how to tell if a given step was successful or not, and other items which could be improved.
Using these notes, make changes to the PostgreSQL tutorial in its source format to address the deficiencies and submit these changes as patches to the PostgreSQL source tree so that they can be included in PostgreSQL in the future. These changes must be able to be patched to the PostgreSQL source code and the resulting changes built using the PostgreSQL build tool-chain.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Review and improve the "SQL Language" tutorial in the PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a set of existing tutorials, one of which is "SQL Language". Attempt to follow this tutorial, after installing PostgreSQL and creating a database, to use and learn SQL with PostgreSQL. Make notes of issues trying to follow the tutorial, areas where the tutorial lacks specific information to be able to accomplish the task, places where the tutorial doesn't provide information about how to tell if a given step was successful or not, and other items which could be improved.
Using these notes, make changes to the PostgreSQL tutorial in its source format to address the deficiencies and submit these changes as patches to the PostgreSQL source tree so that they can be included in PostgreSQL in the future. These changes must be able to be patched to the PostgreSQL source code and the resulting changes built using the PostgreSQL build tool-chain.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Review and improve the "Advanced Features" tutorial in the PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a set of existing tutorials, one of which is "Advanced Features". Attempt to follow this tutorial, after installing PostgreSQL and creating a database and learning some SQL, to work with some of the Advanced Features of PostgreSQL including creating views, foreign keys, transactions, window functions, and inheritance. Make notes of issues trying to follow the tutorial, areas where the tutorial lacks specific information to be able to accomplish the task, places where the tutorial doesn't provide information about how to tell if a given step was successful or not, and other items which could be improved.
Using these notes, make changes to the PostgreSQL tutorial in its source format to address the deficiencies and submit these changes as patches to the PostgreSQL source tree so that they can be included in PostgreSQL in the future. These changes must be able to be patched to the PostgreSQL source code and the resulting changes built using the PostgreSQL build tool-chain.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Add tutorial on partitioning to PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a section for tutorials, but lacks a tutorial which covers partitioning of a PostgreSQL table.
The tutorial should be in the same format as the PostgreSQL documentation and should be submitted as a patch to the PostgreSQL source code and successfully built using the PostgreSQL build tool-chain. The simplest approach to writing this documentation is to pull down the PostgreSQL source code, build all of PostgreSQL, including the documentation, then work with PostgreSQL to set up partitioning following the existing documentation and ultimately make a copy of an existing tutorial section and then rewrite it to be the partitioning tutorial.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Add tutorial on physical Replication to PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a section for tutorials, but lacks a tutorial which covers physical replication between instances.
The tutorial should be in the same format as the PostgreSQL documentation and should be submitted as a patch to the PostgreSQL source code and successfully built using the PostgreSQL build tool-chain. The simplest approach to writing this documentation is to pull down the PostgreSQL source code, build all of PostgreSQL, including the documentation, then work with PostgreSQL to set up physical replication following the existing documentation and ultimately make a copy of an existing tutorial section and then rewrite it to be the physical replication tutorial.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Add tutorial on logical Replication to PostgreSQL Documentation===
=====Task Description=====
The PostgreSQL documentation has a section for tutorials, but lacks a tutorial which covers logical replication between PostgreSQL systems.
The tutorial should be in the same format as the PostgreSQL documentation and should be submitted as a patch to the PostgreSQL source code and successfully built using the PostgreSQL build tool-chain. The simplest approach to writing this documentation is to pull down the PostgreSQL source code, build all of PostgreSQL, including the documentation, then work with PostgreSQL to set up logical replication following the existing documentation and ultimately make a copy of an existing tutorial section and then rewrite it to be the logical replication tutorial.
=====Tags=====
* Outreach
* Documentation
* Tutorial
* Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Add pg_copy utility to properly handle WAL archiving===
=====Task Description=====
The PostgreSQL documentation uses cp as an example of an archive_command. This is not safe because cp does not sync the file or directory before returning success.
Write a new utility called pg_copy that will copy a file and ensure it is durable before returning success. Existing files should not be overwritten, but the command may optionally calculate the SHA1 checksum of the destination file and return success if the source file has the same checksum.
=====Tags=====
* Code
* C
* C-language
* Programming
=====Categories=====
Code
===Find & Post Job Listings===
=====Task Description=====
There are several entry-level technology job openings for PostgreSQL; your task would be to search for all relevant listings in your local area such as from newspapers and newspaper websites, Facebook groups, and websites of companies based in your area or those offering remote positions and compile them into a list. This list would then be provided to local high schools and community colleges in your area on their job postings board. 
Some examples of PostgreSQL job listings can be found in the pgsql-jobs mailing list archives, found here: 
https://www.postgresql.org/list/pgsql-jobs/
https://www.postgresql-archive.org/PostgreSQL-jobs-f2207519.html
The expected submission for this task would be the list itself as well as a list of the high schools and colleges where it was posted.
=====Tags=====
* Outreach
* Research
* Jobs
=====Categories=====
Outreach / Research
===Help ESL Students with Job Applications===
=====Task Description=====
As a follow-up to "Find and Post Job Listings", you can additionally volunteer to assist with spell/grammar/language checking resumes and cover letters for ESL students applying for PostgreSQL job listings. This can extend to assisting ESL students draft their resumes. 
The expected submission would be the original posting advertising your services, where the posting was published (in-person at high schools/colleges, and/or online) the number of students that contacted you, and the number of students you were able to help.
=====Tags=====
* Outreach
* Research
* Jobs
=====Categories=====
Outreach / Research
===Add autovacuum work queue view===
=====Task Description=====
It is not at all clear which relations the autovacuum process will work on next. It would be good to know what jobs are coming up and also the length of the queue.
Add a system view that exposes the autovacuum queue so it can be queried by a system administrator. Autovacuum should also be modified to use the new system view.
=====Tags=====
* Code
* C
* C-language
* Programming
=====Categories=====
Code
===Setup a Coffee Meet===
=====Task Description=====
Find a willing PostgreSQL contributor or committer in your area and arrange a coffee-shop meeting where young people or students of diverse backgrounds can come and have coffee with them to discuss PostgreSQL and ask questions about how to get started learning the technology. 
HINT: A meetup of this kind can be advertised to local audiences through Meetup, Facebook, Twitter (using appropriate hashtags), local high schools, or community colleges, as some examples. Try to schedule it out between 2-4 weeks in advance. 
The expected submission for this task would be to provide a link to the advertised meetup as well as the name of the contributor or committer that is willing to participate in the meeting. It would be preferred to include a summary of how the meeting went overall, how many attendees there were, and what kinds of questions were asked.
The list of community contributors and committers can be found here:
https://www.postgresql.org/community/contributors/
https://wiki.postgresql.org/wiki/Committers
=====Tags=====
* Outreach
* Research
* Jobs
* Trainng
* Interview
=====Categories=====
Outreach / Research
===Add documentation for JDBC driver CopyManager API===
=====Task Description=====
The PostgreSQL JDBC driver, pgjdbc, supports COPY commands to both STDIN and STDOUT via a non-JDBC extension, the CopyManager interface. While the driver has supported this functionality for many years, it's not documented in the official docs.
The purpose of this task is to add some basic documentation of how to use the CopyManager interface to the official pgjdbc docs. The test suite for the pgjdbc driver includes examples of how to use the CopyManager interface and would a good resource for real world usage.
The expected submission for this task will be a pull request on the pgjdbc GitHub page, https://github.com/pgjdbc/pgjdbc, for the documentation patch.
=====Tags=====
* JDBC
* COPY
* Documentation
=====Categories=====
Code
Documentation / Training
===Review and improve the documentation for PG Partition Manager===
=====Task Description=====
The pg_partman documenation has grown quite extensive over the years since it was released. Looking for a basic review of the top level README and files contained in the docs folder for grammar and clarity. Any other recommendations to improve documentation are welcome as well.
Using Github, fork the repository and submit documentation improvements back via a pull request.
https://github.com/pgpartman/pg_partman
=====Tags=====
* Documentation/ Training
* SQL
* Databases
=====Categories=====
Documentation/Training
===Replace use of SplitIdentifierString with SplitGUCList in PG Partition Manager ===
=====Task Description=====
pg_partman has very minimal C code, but it should still be kept up to date to use new APIs when they become available. A small fix would be to see if it can take advantage of a new function to properly split a comma separated custom variable used in the postgresql.conf file. It currently uses SplitIdentifierString() to do this and PostgreSQL 10.5 introduced the new functions SplitGUCList().
Code still needs to be kept backward compatible with older versions that don't have this function yet for a little while. Ensure this is done properly.
Either provide a Github pull request adding this feature or provide reasons why this new function may not be appropriate to use in this case.
https://github.com/pgpartman/pg_partman
=====Tags=====
* Code
* C
* C-language
* SQL
* Programming
=====Categories=====
Code
=== Document a working example of how to migrate a table to native partitioning in PG11 with minimal downtime ===
=====Task Description=====
The new DEFAULT partition feature in PG11 should make migrating an existing table to a natively partitioned one a lot easier. However, a new child table with constraints that would match data that exists in that DEFAULT table are not allowed to be added. Using PostgreSQL's transaction system, document a method to move the data and attached a child table with minimal downtime to users of the table in question.
The main objective of this task is to provide the working example. If there is any difficulty working out the commands or methods to do this, those answers can be provided. Documentation should be provide in markdown format.
https://github.com/pgpartman/pg_partman
=====Tags=====
* Documentation/ Training
* SQL
* Databases
=====Categories=====
Documentation/Training
=== Document how to migrate a trigger-based partitioned table to a natively partitioned table ===
=====Task Description=====
PostgreSQL 10 introduced native partitioning, but previous versions had a method of partitioning that used a combination of triggers, constraints & inheritance. 
https://www.postgresql.org/docs/9.6/static/ddl-partitioning.html
Document a method that can be used to migrate to the new native partitioning scheme with minimal downtime to the end users of that table.
https://www.postgresql.org/docs/10/static/ddl-partitioning.html#DDL-PARTITIONING-DECLARATIVE
The main objective of this task is to provide the working example. If there is any difficulty working out the commands or methods to do this, those answers can be provided. Documentation should be provide in markdown format.
https://github.com/pgpartman/pg_partman
=====Tags=====
* Documentation/ Training
* SQL
* Databases
=====Categories=====
Documentation/Training
=== Allow pg_partman background worker to optionally use new maintenance procedure ===
=====Task Description=====
pg_partman's background worker currently uses the run_maintenance() function. PostgreSQL 11 introduced procedures which allows committing in batches within a single procedure call. A run_maintenance_proc() was added in version 4.0.0 of pg_partman, but the background worker does not use this yet. Implement a postgresql.conf configuration option (GUC) to allow the background worker to optionally use the new procedure if PG11 is in use.
Code still needs to be kept backward compatible with older versions of postgresql. Ensure this is done properly.
Either provide a Github pull request adding this feature or provide reasons why this new procedure may not work via the background worker.
https://github.com/pgpartman/pg_partman
=====Tags=====
* Code
* C
* C-language
* SQL
* Programming
=====Categories=====
Code
=== Improve pg_top readability when reporting executing queries ===
=====Task Description=====
pg_top can report currently running queries, but it is not always readable:
 PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
 12329 postgres 20 0 179M 12M sleep 0:00 0.00% 0.00% SELECT pid, query?FROM pg_stat_activity;
 12061 postgres 20 0 178M 11M sleep 0:00 0.00% 0.00% select pg_sleep(10);
The code could be improved to remove superfluous white spaces and control characters when reporting the query.
=====Tags=====
* Code
* C
* C-language
* Programming
=====Categories=====
Code
=== Write a PostgreSQL technical mumbo-jumbo dictionary ===
=====Task Description=====
The main goal of this task is to create a HTML website/page to explain some technical words used either in the database world or specifically in Postgres world.
Examples of words you could find in that dictionary :
* cluster
* vacuum
* WAL
* query
=====Tags=====
* Documentation/ Training
* Databases
=====Categories=====
Documentation/ Training
===Create a video tutorial explaining how to upgrade a PostgreSQL instance===
=====Task Description=====
The goal of this task is the use of pg_upgrade (formerly called pg_migrator) to upgrade older version instance to newer version instance which makes instance compatible to the new features and functionalities. 
pg-upgrade supports upgrades from 8.4.X and later to the current major release of PostgreSQL, including snapshot and beta releases.
Manual Link:
https://www.postgresql.org/docs/current/static/pgupgrade.html
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Create a video tutorial explaining how to backup and restore a PostgreSQL instance (03 Tasks) ===
=====Task Description=====
The purpose of this task is to guide a user when to use which method and why? 
There are three separate tasks for three different students:
* Backup and restore using SQL Dump
* Backup and restore using File System Level Backup
* Backup and restore using Continuous Archiving and Point-in-Time Recovery
Manual Link:
https://www.postgresql.org/docs/9.4/static/backup.html
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Create a video tutorial explaining how to backup and restore a PostgreSQL instance using X tool (11 tasks)===
=====Task Description=====
The purpose of this task is to guide a user about how to backup and restore using different tools with their pros and cons. Each tool is equal to one task:
* Amanda:
http://www.amanda.org/
* Bacula:
https://www.bacula.org/
* Backup and Recovery Manager for PostgreSQL:
https://www.2ndquadrant.com/
* Barman
https://www.pgbarman.org/ 
* Handy Backup:
https://www.handybackup.net/
* Iperius Backup:
https://www.iperiusbackup.com/
* NetVault Backup:
https://www.quest.com/products/netvault-backup/
* pgBackRest:
https://pgbackrest.org/ 
* PostgreSQL backups:
https://www.pgbarman.org/ 
* Simpana:
https://www.commvault.com/
* Spectrum Protect:
https://www.ibm.com/us-en/marketplace/data-protection-and-recovery
*Manuals:
https://severalnines.com/blog/top-backup-tools-postgresql
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Compose a cheat sheet for backing up and restoring a PostgreSQL instance using X backup tool (11 tasks)===
=====Task Description=====
The purpose of this task is to guide a user about how to backup and restore using different tools with their pros and cons. Each tool is equal to one task:
* Amanda:
http://www.amanda.org/
* Bacula:
https://www.bacula.org/
* Backup and Recovery Manager for PostgreSQL:
https://www.2ndquadrant.com/
* Barman
https://www.pgbarman.org/ 
* Handy Backup:
https://www.handybackup.net/
* Iperius Backup:
https://www.iperiusbackup.com/
* NetVault Backup:
https://www.quest.com/products/netvault-backup/
* pgBackRest:
https://pgbackrest.org/ 
* PostgreSQL backups:
https://www.pgbarman.org/ 
* Simpana:
https://www.commvault.com/
* Spectrum Protect:
https://www.ibm.com/us-en/marketplace/data-protection-and-recovery
*Manuals:
https://severalnines.com/blog/top-backup-tools-postgresql
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Compose cheat sheets for common tools/operations in PostgreSQL===
=====Task Description=====
Compose various cheat sheets for common tools/operations in PostgreSQL like Julia Evans did for Linux commands (https://jvns.ca/blog/2017/12/27/a-perf-cheat-sheet/).
* Installing
* Managing clusters
* Basic settings
* Controlling a PostgreSQL server(start, stop, restart...)
* Security checks
* Performances checks
* Upgrading
* psql tool
* pg_dump tool
* pg_restore tool
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Upgrade pg_backrest tutorial with Postgres 11===
=====Task Description=====
The pgbackrest tutorial was written for postgres 9.4 (https://pgbackrest.org/user-guide.html). Maybe it's time to upgrade it to postgres 11.
Step needed:
* Understand the user guide
* Test it with a postgres 11 version
* Upgrade the tutorial for postgres 11
=====Tags=====
* Documentation
* Training
* Tutorial
* SQL
* Databases
=====Categories=====
Documentation/Training
===Improve SEO(Search Engine Optimization) fro postgresql.org page===
=====Task Description=====
Search results for PostgreSQL in search engines (and most of all on Google) are not the best (and particularly, documentation where you can't find the current version first). We need someone to look at how to imporve that visibility.
=====Tags=====
* Documentation
* Website
* SEO
=====Categories=====
Documentation/Training
===Developing an interview system===
=====Task Description=====
PostgreSQL Conference Europe conducts interviews with speakers, ahead of the conference (mainly pgconf.eu and fosdempgday.org). The interviews are handled manually.
The task is to fork the fork the pgeu-website and pgconfeu-website repository and implement an interview system into the existing code base.
The following features are desired:
* Switch on/off interviews in the main conference configuration
* Database table which builds the template for proposed questions
* Speakers see an interview option in their profile
* Upon entering the interview, the template questions are copied as actual questions, but can me modified/extended/deleted
* Answers can be composed in Markdown
* Interviews must be approved (and not changed afterwards) by the conference team
* Interviews show up in public speaker profiles
* Interviews show up in talks for the speaker
=====Tags=====
* Python
* Website
* SQL
=====Categories=====
Code
===Document the patch submitting process===
=====Task Description=====
PostgreSQL development revolves around CommitFest periods, but the process of submitting patches is tedious.
Your task is to review the documented steps for submitting and reviewing a patch, and expand the documentation with useful details and links.
More information about patch submission and review: https://wiki.postgresql.org/wiki/Reviewing_a_Patch
=====Tags=====
* Code
* Review
* Patch
=====Categories=====
Code
Quality Assurance
===Document the Extension development process===
=====Task Description=====
PostgreSQL Database is known to be very extensible. Currently the Extension documentation is sparse:
https://www.postgresql.org/docs/devel/static/external-extensions.html
The task is to extend this page with more information about developing extensions, add useful resources, and pointers to the Extension Network (PGXN).
=====Tags=====
* Website
=====Categories=====
Quality Assurance