Skip to content

Commit 615c3ea

Browse files
committedJul 10, 2020
Manually regenerated since Makefile webpublish target seems broken
1 parent 37ef7fc commit 615c3ea

23 files changed

+215
-46
lines changed
 

‎README

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
This website automatically generated on Fri 10 Jul 19:59:29 BST 2020 by https://github.com/LumoSQL/doc/www/Makefile

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ LumoSQL emphasises benchmarking, code reuse and modern database implementation.
2222

2323
* [Quick Start](./lumo-quickstart.md)
2424
* [LumoSQL Project Aims](./lumo-project-aims.md)
25+
* [Code of Conduct](./lumo-code-of-conduct.md)
2526
* Creating a LumoSQL Ecosystem
2627
+ [The LumoSQL Landscape](./lumo-landscape.md)
2728
+ [Codebases relevant to LumoSQL](./lumo-relevant-codebases.md)
File renamed without changes.

‎lumo-code-of-conduct.md

+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# LumoSQL Code of Conduct
2+
3+
Version 1.1 – Updated May 1st, 2020
4+
5+
*Adapted from version 3.1 of the
6+
[Mozilla Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/)
7+
and released under the [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/) license.*
8+
9+
The heart of LumoSQL is people. We put people first and do our best to recognize, appreciate and respect the diversity of our global contributors. The LumoSQL Project welcomes contributions from everyone who shares our goals and wants to contribute in a healthy and constructive manner within our community. As such, we have adopted this code of conduct and require all those who participate to agree and adhere to these Community Participation Guidelines in order to help us create a safe and positive community experience for all.
10+
11+
These guidelines aim to support a community where all people should feel safe to participate, introduce new ideas and inspire others, regardless of:
12+
13+
- Background
14+
Family status
15+
Gender
16+
Gender identity or expression
17+
Marital status
18+
Sex
19+
Sexual orientation
20+
Native language
21+
Age
22+
Ability
23+
Race and/or ethnicity
24+
Caste
25+
National origin
26+
Socioeconomic status
27+
Religion
28+
Geographic location
29+
Any other dimension of diversity
30+
31+
Openness, collaboration and participation are core aspects of our work. We gain strength from diversity and actively seek participation from those who enhance it. These guidelines exist to enable diverse individuals and groups to interact and collaborate to mutual advantage. This document outlines both expected and prohibited behavior.
32+
33+
# This Code of Conduct Applies A Lot of the Time
34+
35+
These guidelines outline our behavior expectations as members of the LumoSQL community in all LumoSQL activities, both offline and online. Your participation is contingent upon following these guidelines in all LumoSQL activities, including but not limited to:
36+
37+
* Working with other LumoSQL community participants virtually or co-located
38+
* Representing LumoSQL at public events
39+
* Representing LumoSQL in social media
40+
* Participating in LumoSQL-related forums, mailing lists, wikis, websites, chat channels, bugs, group or person-to-person meetings, and LumoSQL-related correspondence.
41+
42+
# Expected Behaviour
43+
44+
The following behaviors are expected of all LumoSQL community participants:
45+
46+
## Be Respectful
47+
48+
Value each other’s ideas, styles and viewpoints. We may not always agree, but disagreement is no excuse for poor manners. Be open to different possibilities and to being wrong. Be respectful in all interactions and communications, especially when debating the merits of different options. Be aware of your impact and how intense interactions may be affecting people. Be direct, constructive and positive. Take responsibility for your impact and your mistakes – if someone says they have been harmed through your words or actions, listen carefully, apologize sincerely, and correct the behavior going forward.
49+
50+
## Be Direct but Professional
51+
52+
We are likely to have some discussions about if and when criticism is respectful and when it’s not. We must be able to speak directly when we disagree and when we think we need to improve. We cannot withhold hard truths. Doing so respectfully is hard, doing so when others don’t seem to be listening is harder, and hearing such comments when one is the recipient can be even harder still. We need to be honest and direct, as well as respectful.
53+
54+
## Be Inclusive
55+
56+
Seek diverse perspectives. Diversity of views and of people on teams powers innovation, even if it is not always comfortable. Encourage all voices. Help new perspectives be heard and listen actively. If you find yourself dominating a discussion, it is especially important to step back and encourage other voices to join in. Be aware of how much time is taken up by dominant members of the group. Provide alternative ways to contribute or participate when possible.
57+
58+
Be inclusive of everyone in an interaction, respecting and facilitating people’s participation whether they are:
59+
60+
* Remote (on video or phone)
61+
* Not native language speakers
62+
* Coming from a different culture
63+
* Using pronouns other than “he” or “she”
64+
* Living in a different time zone
65+
* Facing other challenges to participate
66+
67+
Think about how you might facilitate alternative ways to contribute or participate. If you find yourself dominating a discussion, step back. Make way for other voices and listen actively to them.
68+
69+
## Understand Different Perspectives
70+
71+
Our goal should not be to “win” every disagreement or argument. A more productive goal is to be open to ideas that make our own ideas better. Strive to be an example for inclusive thinking. “Winning” is when different perspectives make our work richer and stronger.
72+
73+
## Appreciate and Accommodate Our Similarities and Differences
74+
75+
LumoSQL community participants come from many cultures and backgrounds. Cultural differences can encompass everything from official religious observances to personal habits to clothing. Be respectful of people with different cultural practices, attitudes and beliefs. Work to eliminate your own biases, prejudices and discriminatory practices. Think of others’ needs from their point of view. Use preferred titles (including pronouns) and the appropriate tone of voice. Respect people’s right to privacy and confidentiality. Be open to learning from and educating others as well as educating yourself; it is unrealistic to expect LumoSQL community participants to know the cultural practices of every ethnic and cultural group, but everyone needs to recognize one’s native culture is only part of positive interactions.
76+
77+
## Lead by Example
78+
79+
By matching your actions with your words, you become a person others want to follow. Your actions influence others to behave and respond in ways that are valuable and appropriate for our organizational outcomes. Design your community and your work for inclusion. Hold yourself and others accountable for inclusive behaviors. Make decisions based on the highest good for LumoSQL’s mission.
80+
81+
# Behavior That Will Not Be Tolerated
82+
83+
The following behaviors are considered to be unacceptable under these guidelines.
84+
85+
## Violence and Threats of Violence
86+
87+
Violence and threats of violence are not acceptable - online or offline. This includes incitement of violence toward any individual, including encouraging a person to commit self-harm. This also includes posting or threatening to post other people’s personally identifying information (“doxxing”) online.
88+
89+
## Personal Attacks
90+
91+
Conflicts will inevitably arise, but frustration should never turn into a personal attack. It is not okay to insult, demean or belittle others. Attacking someone for their opinions, beliefs and ideas is not acceptable. It is important to speak directly when we disagree and when we think we need to improve, but such discussions must be conducted respectfully and professionally, remaining focused on the issue at hand.
92+
93+
## Derogatory Language
94+
95+
Hurtful or harmful language related to:
96+
97+
* Background
98+
* Family status
99+
* Gender
100+
* Gender identity or expression
101+
* Marital status
102+
* Sex
103+
* Sexual orientation
104+
* Native language
105+
* Age
106+
* Ability
107+
* Race and/or ethnicity
108+
* Caste
109+
* National origin
110+
* Socioeconomic status
111+
* Religion
112+
* Geographic location
113+
* Other attributes
114+
115+
is not acceptable. This includes deliberately referring to someone by a gender that they do not identify with, and/or questioning the legitimacy of an individual’s gender identity. If you’re unsure if a word is derogatory, don’t use it. This also includes repeated subtle and/or indirect discrimination; when asked to stop, stop the behavior in question.
116+
117+
## Unwelcome Sexual Attention or Physical Contact
118+
119+
Unwelcome sexual attention or unwelcome physical contact is not acceptable. This includes sexualized comments, jokes or imagery in interactions, communications or presentation materials, as well as inappropriate touching, groping, or sexual advances. This includes touching a person without permission, including sensitive areas such as their hair, pregnant stomach, mobility device (wheelchair, scooter, etc) or tattoos. This also includes physically blocking or intimidating another person. Physical contact or simulated physical contact (such as emojis like “kiss”) without affirmative consent is not acceptable. This includes sharing or distribution of sexualized images or text.
120+
121+
## Disruptive Behavior
122+
123+
Sustained disruption of events, forums, or meetings, including talks and presentations, will not be tolerated. This includes:
124+
125+
* ‘Talking over’ or ‘heckling’ speakers.
126+
* Drinking alcohol to excess or using recreational drugs to excess, or pushing others to do so.
127+
* Making derogatory comments about those who abstain from alcohol or other substances, pushing people to drink, talking about their abstinence or preferences to others, or pressuring them to drink - physically or through jeering.
128+
* Otherwise influencing crowd actions that cause hostility in the session.
129+
130+
## Influencing Unacceptable Behavior
131+
132+
We will treat influencing or leading such activities the same way we treat the activities themselves, and thus the same consequences apply.
133+
134+
# Consequences of Unacceptable Behavior
135+
136+
Bad behavior from any LumoSQL community participant, including those with decision-making authority, will not be tolerated. Intentional efforts to exclude people (except as part of a consequence of the guidelines or other official action) from LumoSQL activities are not acceptable and will be dealt with appropriately.
137+
138+
Reports of harassment/discrimination will be promptly and thoroughly investigated by the people responsible for the safety of the space, event or activity. Appropriate measures will be taken to address the situation.
139+
140+
Anyone asked to stop unacceptable behavior is expected to comply immediately. Violation of these guidelines can result in you being ask to leave an event or online space, either temporarily or for the duration of the event, or being banned from participation in spaces, or future events and activities in perpetuity.
141+
142+
In addition, any participants who abuse the reporting process will be considered to be in violation of these guidelines and subject to the same consequences. False reporting, especially to retaliate or exclude, will not be accepted or tolerated.
143+
144+
# Reporting
145+
146+
If you believe you’re experiencing unacceptable behavior that will not be tolerated as outlined above please contact one of the [authors](https://github.com/LumoSQL/LumoSQL/blob/master/AUTHORS).
147+
148+
After receiving a concise description of your situation, they will review and determine next steps. In addition to conducting any investigation, they can provide a range of resources, from a private consultation to other community resources. They will involve other colleagues or outside specialists, as needed to appropriately address each situation.
149+
150+
Please also report to us if you observe a potentially dangerous situation, someone in distress, or violations of these guidelines, even if the situation is not happening to you.
151+
152+
If you feel you have been unfairly accused of violating these guidelines, please follow the same reporting process.
File renamed without changes.
File renamed without changes.

‎lumo-doc-standards.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Table of Contents
2929
LumoSQL Documentation Standards
3030
===============================
3131

32-
This chapter covers how LumoSQL documentation should be written and maintained.
32+
This chapter covers how LumoSQL documentation is written and maintained.
3333

3434
![](./images/lumo-doc-standards-intro.jpg "Image from Wikimedia Commons, https://commons.wikimedia.org/wiki/File:Chinese_books_at_a_library.jpg")
3535

@@ -157,7 +157,7 @@ This example is approximately from the top of this chapter:
157157
It's best to check syntax before pushing changes, which means rendering
158158
Markdown into HTML that is hopefully close to what Github produces. Here are three ways of doing that:
159159

160-
* The Makefile and support files in bin/ uses Pandoc to render the GFM to HTML in /tmp .
160+
* The Makefile and support files in bin/ uses Pandoc to render the GFM to HTML in /tmp . Just type 'make
161161
* The excellent [Editor.md](https://github.com/pandao/editor.md) does a great job of rendering,
162162
as can be seen at [The Online Installation](https://pandao.github.io/editor.md/en.html) . You can paste GFM into it and see it rendered, WYSIWYG-style. You can download the HTML for
163163
Editor.md and run it locally. (Editor.md is also an editor, and it adds its own features, but you don't need to use it for that.)
File renamed without changes.

‎lumo-help-alien-language.md

-27
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

‎lumo-project-aims.md

+11-14
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Aims
4545
backends, frontends, encryption, networking and more.
4646

4747
* Devops contract: LumoSQL will reduce risk by making it possible to omit
48-
compliation of many features, and will have stable ABIs ([Application Binary Interfaces](https://en.wikipedia.org/wiki/Application_binary_interface))so as to not break dynamically-linked applications.
48+
compliation of unneeded features, and will have stable ABIs ([Application Binary Interfaces](https://en.wikipedia.org/wiki/Application_binary_interface)) so as to not break dynamically-linked applications.
4949

5050
* Ecosystem creation: LumoSQL will offer consolidated contact, code curation, bug tracking,
5151
licensing, and community communications across all these features from
@@ -57,20 +57,20 @@ Short Term Goals
5757
================
5858

5959
* LumoSQL will have three canonical and initial backends: btree (the existing
60-
SQLite btree, ported to a new backend system); a test backend such as text or
61-
csv; and the LMDB backend. Control over these interfaces will be through the
60+
SQLite btree, ported to a new backend system); the LMDB backend; and the BDB
61+
backend. Control over these interfaces will be through the
6262
same user interface mechanisms as the rest of LumoSQL, and SQLite.
6363

6464
* LumoSQL will improve SQLite quality and privacy compliance by introducing
6565
optional on-disk checksums for storage backends including to the original
66-
SQLite btree format. This will give real-time row-level corruption detection.
66+
SQLite btree format. This will give real-time row-level corruption detection
6767

6868
* LumoSQL will improve SQLite quality and privacy compliance by introducing
69-
optional storage backends that are more crash-resistent, starting with LMDB
70-
followed by others.
69+
optional storage backends that are more crash-resistent than SQLite btree (such as LMDB)
70+
and more oriented towards complete recovery (such as BDB)
7171

7272
* LumoSQL will improve SQLite integrity in persistent storage by introducing
73-
optional row-level checksums.
73+
optional row-level checksums
7474

7575
* LumoSQL will provide the benefits of Open Source and an open project
7676
by continuing to accept and review contributions in an open way, using
@@ -96,22 +96,19 @@ tools
9696

9797
* LumoSQL will ensure that new code remains optional by means of modularity at
9898
compiletime and also runtime. By illustration of modularity, at compiletime
99-
nearly all 30 million lines of the Linux kernel can be exclude giving just 200k
99+
nearly all 30 million lines of the Linux kernel can be excluded giving just 200k
100100
lines. Runtime modularity will be controlled through the same user interfaces
101101
as the rest of LumoSQL.
102102

103-
* LumoSQL will ensure that new code can all be active at once, eg
103+
* LumoSQL will ensure that new code may be active at once, eg
104104
multiple backends or frontends for conversion between/upgrading from one
105-
format or protocol to another. This is crucial to provide continuity and
105+
format or protocol to another. This is important to provide continuity and
106106
supported upgrade paths for users, for example, users who want to become
107107
privacy-compliant without disrupting their end users
108108

109109
* Over time, LumoSQL will carefully consider the potential benefits of dropping
110110
some of the most ancient parts of SQLite when merging from upstream, provided
111111
it does not conflict with any of the other goals in this document. Eliminating
112112
SQLite code can be done by a similar non-forking mechanism as used to keep in synch
113-
with the SQLite upstream.
114-
115-
116-
113+
with the SQLite upstream. Patches will be offered to sqlite.org
117114

‎lumo-relevant-codebases.md

+5
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ MVCC-compliant K-V stores, and still using Write-Ahead Logs.
6262

6363
# Oracle BDB and Oracle BDB-SQL Codebases
6464

65+
As of June 2020, Oracle announced that it has dropped support for the BDB port
66+
to SQLite. DB 18.1.32 is the last version to carry this, which is based on
67+
SQLite from 2017. This is the reference and basis for the BDB backend in
68+
LumoSQL.
69+
6570
| Project | Last modified | Description |
6671
| ------------- | ------------- | --------|
6772
| [Sleepycat/Oracle BDB](https://fossies.org/linux/misc/db-18.1.32.tar.gz) | current | The original ubiquitous Unix K-V store, disused in open source since Oracle's 2013 license change; the API template for most of the k-v btree stores around. Now includes many additional features including full MVCC transactions, networking and replication. This link is a mirror of code from download.oracle.com, which requires a login |

‎lumo-relevant-knowledgebase.md

+43-3
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,47 @@ Analyser, DB Browser for SQLite, Magnet AXIOM and Oxygen Forensic Detective.)
7878

7979
# List of Relevant Benchmarking and Test Knowledge
8080

81-
Benchmarking is a big part of LumoSQL, to determine if changes are an improvement. The trouble is that SQLite and other top databases are not really benchmarked in realistic and consistent way, despite SQL server benchmarking using tools like TPC being an obsessive industry in itself, and there being myriad of testing tools released with SQLite, Postgresql, MariaDB etc. But in practical terms there is no way of comparing the most-used databases with each other, or even of being sure that the tests that do exist are in any way realistic, or even of simply reproducing results that other people have found. LumoSQL covers so many codebases and use cases that better SQL benchmarking is a project requirement. Benchmarking and testing overlap, which is addressed in the code and docs.
81+
Benchmarking is a big part of LumoSQL, to determine if changes are an
82+
improvement. The trouble is that SQLite and other top databases are not really
83+
benchmarked in realistic and consistent way, despite SQL server benchmarking
84+
using tools like TPC being an obsessive industry in itself, and there being
85+
myriad of testing tools released with SQLite, Postgresql, MariaDB etc. But in
86+
practical terms there is no way of comparing the most-used databases with each
87+
other, or even of being sure that the tests that do exist are in any way
88+
realistic, or even of simply reproducing results that other people have found.
89+
LumoSQL covers so many codebases and use cases that better SQL benchmarking is
90+
a project requirement. Benchmarking and testing overlap, which is addressed in
91+
the code and docs.
92+
93+
The well-described [testing of SQLite](https://sqlite.org/testing.html)
94+
involves some open code, some closed code, and many ad hoc processes. Clearly
95+
the SQLite team have an internal culture of testing that has benefitted the
96+
world. However that is very different to reproducible testing, which is in turn
97+
very different to reproducible benchmarking, and that is even without
98+
considering whether the benchmarking is a reasonable approximation of actual
99+
use cases. As the development of LumoSQL has proceeded, it has become clear
100+
that the TCL testing harness shipped with SQLite code contains specific
101+
dependencies on the behaviour of the SQLite btree backend. While LumoSQL with
102+
the original btree backend aims to always pass these tests, differences such as
103+
locking behaviour, assumed key lengths, and even the number of database files a
104+
backend uses all mean that the SQLite TCL test suite is not generally useful.
105+
106+
To highlight how poorly SQL benchmarking is done: there are virtually no test
107+
harnesses that cover encrypted databases and/or encrypted database connections,
108+
despite encryption being frequently required, and despite crypto implementation
109+
decisions making a very big difference in performance. Encryption and security are
110+
not the only ways a database impacts privacy, so privacy is a valid dimension for
111+
database testing - and a fundamental goal for LumoSQL. Testing all databases in
112+
the same way for privacy is challenging.
113+
114+
SQL testing is also very difficult. As the Regression Testing paper below says:
115+
"A problem with testing SQL in DBMSs lies in the fact that the state of the
116+
database must be considered when deducing testing outcomes". SQL statements
117+
frequently change the state of the server during their execution, in different
118+
ways on different servers. This can change the behaviour or at least the
119+
performance of the next statement, and so on.
82120

83-
The well-described [testing of SQLite](https://sqlite.org/testing.html) involves some open code, some closed code, and many ad hoc processes. Clearly the SQLite team have an internal culture of testing that has benefitted the world. However that is very different to reproducible testing, which is in turn very different to reproducible benchmarking, and that is even without considering whether the benchmarking is a reasonable approximation of actual use cases.
84121

85-
To highlight how poorly SQL benchmarking is done: there are virtually no test harnesses that cover encrypted databases and/or encrypted database connections, despite encryption being frequently required, and despite crypto implementation decisions making a very big difference in performance.
86122

87123
| Project | Last modified | Description |
88124
| ------- | ------------- | ----------- |
@@ -92,6 +128,10 @@ To highlight how poorly SQL benchmarking is done: there are virtually no test ha
92128
| [Yahoo Cloud Serving Benchmark](https://github.com/brianfrankcooper/YCSB/)| current | Benchmarking tool for K-V stores and cloud-accessible databases |
93129
| [Example Android Storage Benchmark](https://github.com/greenrobot/android-database-performance) | 2018 | This code is an example of the very many Android benchmarking/testing tools. This needs further investigation |
94130
| [Sysbench](https://github.com/akopytov/sysbench) | current | A multithreaded generic benchmarking tool, with one well-supported use case being networked SQL servers, and [MySQL in particular](https://www.percona.com/blog/2019/04/25/creating-custom-sysbench-scripts/) |
131+
| [Regression Testing of SQL](https://www.diva-portal.org/smash/get/diva2:736996/FULLTEXT01.pdf)|n/a | 2014 paper "a framework for minimizing the required developer effort formanaging and running SQL regression tests" |
132+
| [Enhancing the Performance of SQLite](https://pdfs.semanticscholar.org/c2da/33304627649b599f80a5428354e116ba6201.pdf)| n/a | 2019 paper that does profiling and develops performance testing metrics for SQLite |
133+
| [SQLite Profiler and Tracer](https://github.com/microsoft/sqlite-tracer) | 2018 | Microsoft SQLite statement profiler and timer, helpful for comparing LumoSQL backends |
134+
| [SQLCipher Performance Optimisation](https://discuss.zetetic.net/t/sqlcipher-performance-optimization/14) | n/a | 2014 comments on the additional performance metric problems that come with SQLite encryption |
95135

96136

97137
# List of Just a Few SQLite Encryption Projects
File renamed without changes.

0 commit comments

Comments
 (0)
Please sign in to comment.