GSoD 2019

From PostgreSQL wiki
Jump to navigationJump to search

This page is for collecting ideas for future Season of Docs projects.

Regarding Project Ideas

Project ideas are to be added here by community members.

Mentors (2019)

The following individuals have been listed as possible mentors on the below projects, and/or offered to be mentors for technical writer-proposed projects:

Organization Administrators

  • Stephen Frost
  • Sarah Conway

PostgreSQL

  • James Chanco
  • Alan Youngblood
  • Pavan Agrawal
  • Evan Macbeth
  • Amit Kumar Jaiswal
  • Lætitia Avrot
  • Tahir Ramzan
  • Jeremy Schneider
  • Darren Douglas
  • Peter Eisentraut

pg_partman

  • Keith Fiske

pgJDBC

  • Dave Cramer

PL/R

  • Dave Cramer

PostGIS

  • Martin Davis
  • Regina Obe

pgBackRest

  • David Steele
  • Cynthia Shang

Documentation Project Ideas

General Changes

Suggested by Oleg Bartunov.

Currently, our documentation follows the format of primarily being in a reference manual format. This should be updated, section-by-section, to be more of a user manual format. This should be supplemented by architectural diagrams and visual references, which would need to be created.

Introductory Resources

Suggested by Oleg Bartunov.

We currently don't have a community resource available that's suitable for absolute beginners for PostgreSQL. We want to ensure that new users of PostgreSQL have a positive experience from the start, and this begins with proper documentation that is simple and approachable. Existing external resources could be adapted for this purpose, including the following that was suggested by Oleg:

https://edu.postgrespro.ru/introbook_v4_en.pdf

Introductory Tutorial

Suggested by Pavan Agrawal, James Chanco.

The introductory tutorial available (https://www.postgresql.org/docs/current/tutorial-install.html) in the documentation is not ideal for absolute beginners or those new to databases. It's extremely jargon-heavy and not beginner friendly. This should either be updated or expanded to better suit this purpose.

Additionally, there are several sections in the tutorial where prior knowledge is assumed, such as how to connect to psql. These sections are currently unclear, and should be rewritten for clarity and accuracy.

The original task from Google Code-in 2018:

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.

Document the patch submitting process

PostgreSQL development revolves around CommitFest periods, but the process of submitting patches is tedious.

The documented steps for submitting and reviewing a patch need to be reviewed, and the documentation expanded with useful details and links.

More information about patch submission and review: https://wiki.postgresql.org/wiki/Reviewing_a_Patch

Document the Extension submitting process

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).

Compose cheat sheets for common tools/operations in PostgreSQL

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

Upgrade pg_backrest tutorial with Postgres 11

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

Compose a cheat sheet for backing up and restoring a PostgreSQL instance using X backup tool (11 tasks)

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

Write a PostgreSQL technical mumbo-jumbo dictionary

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

Document how to migrate a trigger-based partitioned table to a natively partitioned table (pg_partman)

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

Document a working example of how to migrate a table to native partitioning in PG11 with minimal downtime (pg_partman)

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

Review and improve the documentation for PG Partition Manager (pg_partman)

The pg_partman documentation 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

Add documentation for JDBC driver CopyManager API (pgJDBC)

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.

Add tutorial on logical Replication to PostgreSQL Documentation

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.

Add tutorial on physical Replication to PostgreSQL Documentation

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.

Add tutorial on partitioning to PostgreSQL Documentation

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.

Review and improve the "Advanced Features" tutorial in the PostgreSQL Documentation

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.

Review and improve the "SQL Language" tutorial in the PostgreSQL Documentation

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.

Improve VACUUM Progress Reporting documentation

Suggested by Jeremy Schneider and Jim Nasby

The docs on VACUUM Progress Reporting list the phases of vacuum, but they don't mention that some of these phases can be repeated - and why those phases would be repeated, and what factors (config settings, attributes of data, num_dead_tuples/max_dead_tuples) influence this behavior. These topics are important for people administrating PostgreSQL.

Should discuss in what order PostgreSQL chooses tables to vacuum - and would be good to at least mention what an "aggressive" vacuum is and what it looks like (I need to check if this is covered elsewhere), and discuss block skipping/freeze map/visibility map as they relate to vacuum.

Need to determine what information goes in the main vacuum documentation and what goes in the pg_stat_progress_vacuum docs, staying in line with existing conventions for how docs are organized.

Add more images

Suggested by Peter Eisentraut

As of PostgreSQL 12, the PostgreSQL documentation can contain images. Right now, we have the total of two images. Find places where images would be sensible and add them. This wouldn't necessarily require great artistry, only a sense of where some artistry would be useful.

"SQLite has a bubble generator tool that they use to generate syntax diagrams for their documentation" https://www.postgresql.org/message-id/flat/20190328222500.GA16520%40alvherre.pgsql#c1c100db6b90697674e6fa88573bc9a5


Web site hierarchy and navigation

Suggested by Peter Eisentraut

Some people have difficulty finding things on the web site. For example, there are too many top-level categories. Are mailing lists under "Community", "Developers", or "Support"? Find a more sensible and easier hierarchy. Note: The design of the web site would not be part of this project, only the hierarchy and relationship of the pages.

FAQ for pgBackRest

Suggested by Cynthia

This project will be to review the issues log for all issues marked as questions to identify repeat questions. From this, an FAQ will be developed as well as identifying any areas in the documentation that may already address the subject but are insufficient in clarity.

Clean up Authentication Methods

Suggested by Renee

This section of the documentation is .... a bit circular. Perhaps someone could clean it up in Season of Docs (and probably review the rest of the security section for clarity and usefulness)

https://www.postgresql.org/docs/10/auth-methods.html#AUTH-BSD


PostGIS Projects

Managed by Martin Davis

https://trac.osgeo.org/postgis/wiki/GoogleSeasonDocs2019