Skip to content

Commit d045494

Browse files
authored
Various document fixes
Had a brief look into most of the documents in the root folder, and updated them a bit
1 parent 07e6833 commit d045494

File tree

4 files changed

+102
-11
lines changed

4 files changed

+102
-11
lines changed

AI_POLICY.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Policy on usage of Artifical Intelligence and other tools
2+
3+
## Background
4+
5+
From time to time I do get pull requests where the author has done
6+
little else than running some tool on the code and submitting it as a
7+
pull request. Those pull requests may have value to the project, but
8+
it's dishonest to not be transparent about it; teaching me how to run
9+
the tool and integrating it into the CI workflow may have a bigger
10+
value than the changes provided by the tool. Recently I've also
11+
started receiving pull requests with code changes generated by AI (and
12+
I've seen people posting screenshots of simple questions and answers
13+
from ChatGPT in forum discussions, without contributing anything else).
14+
15+
As of 2025-11, I've spent some time testing Claude. I'm actually
16+
positively surprised, it's doing a much better job than what I had
17+
expected. The AI may do things faster, smarter and better than a good
18+
coder. Sometimes. Other times it may spend a lot of "tokens" and a
19+
long time coming up with sub-optimal solutions, or even solutions that
20+
doesn't work at all. Perhaps at some time in the near future the AI
21+
will do the developer profession obsoleted - but as of 2025-11, my
22+
experiences is that the AI performs best when being "supervised" and
23+
"guided" by a good coder knowing the project.
24+
25+
## The rules
26+
27+
* Do **respect the maintainers time**. If/when the maintainer gets
28+
overwhelmed by pull requests of questionable quality or pull
29+
requests that do not pull the project in the right direction, then
30+
it will be needed to add more requirements to the Contributors
31+
Guidelines.
32+
33+
* **YOU should add value to the project**. If your contribution
34+
consists of nothing else than using a tool on the code and
35+
submitting the resulting code, then the value is coming from the
36+
tool and not from you. I could probably have used the tool myself.
37+
Ok, so you may have done some research, found the tool, installed it
38+
locally, maybe paid money for a subscription, for sure there is some
39+
value in that - but if you end up as a messenger copying my comments
40+
to some AI tools and copying the answer back again - then you're not
41+
delivering value anymore, then it would be better if the AI tool
42+
itself would be delivering the pull request and responding to my
43+
comments.
44+
45+
* **YOU should look through and understand the changes**. The change
46+
goes into the project attributed to your name (or at least github
47+
handle), so I do expect you to at least understand the change you're
48+
proposing.
49+
50+
* **Transparency** is important. Ok, so a lot of tools may have been
51+
used while writing the pull request, I don't need to know all the
52+
details, but if a significant part of the changes was generated by
53+
some tool or by some AI, then that should be informed about.
54+
I.e. if your job was to run `ruff` on the code and found some
55+
imporant things that should be changed, then don't write "I found
56+
this issue and here is a fix", but rather "I ran the ruff tool on
57+
the code, found this issue, and here is the fix". If some AI was
58+
used for generating significant parts of the code changs, then it
59+
should be informed about both in the pull request itself and in the
60+
git commit message. The most common way to do this is to add
61+
"Assisted-by: (name of AI-tool)" at the end of the message. Claude
62+
seems to sign off with "Co-Authored-By: Claude
63+
<noreply@anthropic.com>" when it's doing commits, that's also OK.
64+
65+
* **YOU** should be ready to follow up and respond to feedback and
66+
questions on the contribution. If all you do is to relay it to the
67+
AI and relaying the AI thoughts back to the pull request, then
68+
you're not adding value to the project and you're not transparent
69+
and honest. You should at least do a quick QA on the AI-answer and
70+
acknowledge that it was generated by the AI.
71+
72+
* The Contributors Guidelines aren't strongly enforced on this project
73+
as of 2025-12, and I can hardly see cases where the AI would break
74+
the Code of Conduct, but at the end of the day **YOU** should take
75+
care to ensure the contribution follows those guidelines.

CHANGELOG.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,7 @@ Highlights:
4444
### Changed
4545

4646
* Transparent handling of calendar servers not supporting sync-tokens. The API will yield the same result, albeit with more bandwidth and memory consumption.
47-
* I'm still working on "compatibility hints". Unfortunately, documentation is still missing. The gist of it:
48-
* Use `features: posteo` instead of `url: https://posteo.de:8443/` in the connection configuration.
49-
* Use `features: nextcloud` and `url: my.nextcloud.provider.eu` instead of `url: https://my.nextcloud.provider.eu/remote.php/dav`
50-
* Or even easier, use `features: nextcloud` and `username: tobixen@example.com`
47+
* I'm still working on "compatibility hints". Unfortunately, documentation is still missing.
5148
* **Major refactoring!** Some of the logic has been pushed out of the CalDAV package and into a new package, icalendar-searcher. New logic for doing client-side filtering of search results have also been added to that package. This refactoring enables possibilities for more advanced search queries as well as client-side filtering.
5249
* For advanced search queries, it's needed to create a `caldav.CalDAVSearcher` object, add filters and do a `searcher.search(cal)` instead of doing `cal.search(...)`.
5350
* **Server compatibility improvements**: Significant work-arounds added for inconsistent CalDAV server behavior, aiming for consistent search results regardless of the server in use. Many of these work-arounds require proper server compatibility configuration via the `features` / `compatibility_hints` system. This may be a **breaking change** for some use cases, as backward-bug-compatibility is not preserved - searches may return different results if the previous behavior was relying on server quirks.
@@ -64,6 +61,9 @@ Highlights:
6461

6562
* **New ways to configure the client connection, new parameters**
6663
- **RFC 6764 DNS-based service discovery**: Automatic CalDAV/CardDAV service discovery using DNS SRV/TXT records and well-known URIs. Users can now provide just a domain name or email address (e.g., `DAVClient(username='user@example.com')`) and the library will automatically discover the CalDAV service endpoint. The discovery process follows RFC 6764 specification. This involves a new required dependency: `dnspython` for DNS queries. DNS-based discovery can be disabled in the davclient connection settings, but I've opted against implementing a fallback if the dns library is not installed.
64+
- Use `features: posteo` instead of `url: https://posteo.de:8443/` in the connection configuration.
65+
- Use `features: nextcloud` and `url: my.nextcloud.provider.eu` instead of `url: https://my.nextcloud.provider.eu/remote.php/dav`
66+
- Or even easier, use `features: nextcloud` and `username: tobixen@example.com`
6767
- New `require_tls` parameter (default: `True`) prevents DNS-based downgrade attacks
6868
- The client connection parameter `features` may now simply be a string label referencing a well-known server or cloud solution - like `features: posteo`. https://github.com/python-caldav/caldav/pull/561
6969
- The client connection parameter `url` is no longer needed when referencing a well-known cloud solution. https://github.com/python-caldav/caldav/pull/561
@@ -79,7 +79,7 @@ Highlights:
7979
### Security
8080

8181
There is a major security flaw with the RFC6764 discovery. If the DNS is not trusted (public hotspot, for instance), someone can highjack the connection by spoofing the service records. The protocol also allows to downgrade from https to http. Utilizing this it may be possible to steal the credentials. Mitigations:
82-
* DNSSEC is the ultimate soluion, but DNSSEC is not widely used. I tried implementing robust DNSSEC validation, but it was too complicaed.
82+
* DNSSEC is the ultimate soluion, but DNSSEC is not widely used. I tried implementing robust DNSSEC validation, but it was too complicated.
8383
* Require TLS. By default, connections through the autodiscovery is required to use TLS.
8484
* Decline domain change. If acme.com forwards to caldav.acme.com, it will be accepted, if it forward to evil.hackers.are.us the connection is declined.
8585

@@ -182,10 +182,10 @@ External servers tested:
182182
* Synology
183183
* Posteo
184184
* Baikal
185+
* Robur
185186

186187
Servers and platforms not tested this time:
187188

188-
* Robur (Some tests have been run towards Robur - but it seems to be some problems with the server, or perhaps active rate-limiting, the tests stops up after a while)
189189
* PurelyMail (partly tested - but test runs takes EXTREMELY long time due to the search-cache server peculiarity, and the test runs still frequently fails in non-deterministic ways).
190190
* GMX (It throws authorization errors, didn't figure out of it yet)
191191
* DAViCal (my test server is offline)

CODE_OF_CONDUCT

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ That said, personally I'm all ears for suggestions on how to improve
1414
the CalDAV library - even if that includes blunt criticism of the work
1515
I've done.
1616

17+
Specific for this project, we should probably strive not to use too
18+
many negative adjectives on server implementations, even when they
19+
break all the standards badly. I may not have been very good at this
20+
earlier (and I may not have weeded out all he negativity from the
21+
mastar branch yet), but I'm striving to improve myself. While the
22+
RFCs may seem sub-optimal or ambiguous sometimes, accusing the authors
23+
for being stupid, evil or corrupt is clearly way out of the line.
24+
25+
The main branch for this project is called "master". If the project
26+
was made today, the name of the branch would be "main. For ME, I
27+
cannot understand how naming a git-branch "master" can be offensive -
28+
but if YOU get offended by it, please notify me. I will not quesion
29+
it, and I will not hold you responsible for it, I will just rename the
30+
branch.
31+
1732
Unacceptable behavior may be reported to Tobias Brox, the current
1833
maintainer of the project. The email address coc-abuse@plann.no may
1934
be used. If complaining to Tobias doesn't help, you may try reaching
@@ -22,4 +37,4 @@ If Tobias is the subject of the complaint, you may want to put Cyril
2237
on the Cc-list in your complaint. His email address can be found
2338
through http://scr.im/22q7
2439

25-
Tobias Brox, 2025-05-21
40+
Tobias Brox, 2025-05-21 (amended 2025-12-04)

CONTRIBUTING.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
Contributions are mostly welcome. If the length of this text scares you, then I'd rather want you to skip reading and just produce a pull-request in GitHub.
44

5+
## Usage of AI and other tools
6+
7+
A separate [AI POLICY](AI_POLICY.md) has been made. The gist of it, be transparent and inform if your contribution was a result of clever tool usage and/or AI-usage, don't submit code if you don't understand the code yourself, and you are supposed to contribute value to the project. If you're too lazy to read the AI Policy, then at least have a chat with the AI to work out if your contribution is within the policy or not.
8+
59
## GitHub
610

711
The official guidelines currently involves contributors to have a GitHub account - but this is not a requirement! If you for some reason or another don't want to use GitHub, then that's fine. Reach out by email, IRC, matrix, signal, deltachat, telegram or whatnot.
@@ -36,10 +40,7 @@ Consider this procedures to be a more of a guideline than a rigid procedure. Us
3640
* Add an entry in the `CHANGELOG.md` file.
3741

3842
* Create a pull request
39-
```
4043

4144
## Code of Conduct
4245

43-
There is some text on https://www.contributor-covenant.org/, please DO reach out at t-py-caldav@tobixen.no if you notice a need for an explicit Code of Conduct.
44-
45-
Specific for this project, we should probably strive not to use too many negative adjectives on server implementations.
46+
Code of Conduct has been moved to a [separate document](CODE_OF_CONDUCT]

0 commit comments

Comments
 (0)