mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
update docs
This commit is contained in:
parent
b23b6fbe35
commit
2e7669daf4
4 changed files with 200 additions and 1 deletions
1
LICENSE
Normal file
1
LICENSE
Normal file
|
@ -0,0 +1 @@
|
|||
Primarily GNU AGPL3+ - please see the LICENSE file in each subfolder.
|
113
README.contributing
Normal file
113
README.contributing
Normal file
|
@ -0,0 +1,113 @@
|
|||
Contributing Code
|
||||
==================
|
||||
|
||||
For info on contributing things other than code, such as translations, decks
|
||||
and add-ons, please see http://ankisrs.net/docs/manual.html#contributing
|
||||
|
||||
The goal of Anki 2.1.x is to bring Anki up to date with Python 3 and Qt 5,
|
||||
while maintaining compatibility with Anki 2.0.x. Some users will be stuck on
|
||||
Anki 2.0 for a while due to unported add-ons or old hardware, so it's
|
||||
important that 2.1 doesn't make breaking changes to the file format.
|
||||
|
||||
Also of consideration is that the Anki code is indirectly used by the mobile
|
||||
clients, which try their best to keep as close to the Anki code as possible so
|
||||
that future updates can be ported more easily. Refactoring code makes it
|
||||
harder for the mobile clients to track changes, so refactoring should be
|
||||
limited to times when it is necessary to address an important issue.
|
||||
|
||||
Before sending a pull request or a patch, please check the following to
|
||||
increase your chances of the changes being accepted.
|
||||
|
||||
Primarily Bugfixes
|
||||
-------------------
|
||||
|
||||
Small patches that fix a specific problem and don't affect other functionality
|
||||
are likely to be merged if they meet the other requirements below. Larger
|
||||
changes are less likely to be accepted for 2.1.x - if in doubt, please ask
|
||||
before you begin work on them so your work does not go to waste.
|
||||
|
||||
Examples of changes that are unlikely to be accepted:
|
||||
|
||||
- Altering existing code unnecessarily. Your code may be more elegant than
|
||||
what already exists, but it takes time for us to review the changes, may
|
||||
harbour unnoticed bugs, and makes maintaining the mobile clients more
|
||||
difficult.
|
||||
- Adding code that is not used within Anki but is only for the benefit of
|
||||
add-ons - such code is difficult to test and maintain.
|
||||
- Adding code that addresses niche issues - they are better handled in an
|
||||
add-on.
|
||||
|
||||
Type hints
|
||||
-----------
|
||||
|
||||
Type hints have recently been added to parts of the codebase, mainly using
|
||||
automated tools. Patches that improve the type hints are welcome, but
|
||||
pragmatism is advised. Anki's codebase is old and of varying quality, and
|
||||
there are parts that are difficult to type properly. Don't feel the need to
|
||||
avoid 'Any' when a proper type is impractical.
|
||||
|
||||
When adding type signatures, please avoid refactoring the code, as this is
|
||||
liable to break add-ons or introduce regressions.
|
||||
|
||||
When running 'make check', Anki uses mypy to typecheck the code. Mypy is fast,
|
||||
but not very good at type inference, so it is mostly useful for checking code
|
||||
that has type signatures. It is able to read the bundled Qt stubs, and works
|
||||
across the whole Python codebase.
|
||||
|
||||
The Qt stubs are not perfect, so you'll find when doing things like connecting
|
||||
signals, you may have to add the following to the end of a line to silence
|
||||
the spurious errors.
|
||||
|
||||
# type: ignore
|
||||
|
||||
In cases where you have two modules that reference each other, you can't simply
|
||||
import the types from each module into the other one, as it can cause a cyclic
|
||||
import. An example of how to work around this can be seen at
|
||||
https://github.com/dae/anki/commit/ed0b3d337458d7161811547932b6476f2d4bc887
|
||||
|
||||
Tests Must Pass
|
||||
----------------
|
||||
|
||||
Please make sure './check' in the anki repo completes successfully before
|
||||
submitting code. You can do this automatically by adding the following into
|
||||
.git/hooks/pre-push and making it executable.
|
||||
|
||||
#!/bin/bash
|
||||
set -e
|
||||
./check
|
||||
|
||||
If your change is to anki/ and not covered by the existing unit tests, please
|
||||
consider adding a unit test at the same time.
|
||||
|
||||
Code Style
|
||||
------------------
|
||||
|
||||
You are welcome to use snake_case variable names and functions in newly
|
||||
introduced code, but please avoid renaming existing variables and functions
|
||||
that use camelCaps.
|
||||
|
||||
If your code isn't formatted correctly, 'make check' will report problems.
|
||||
You can fix the formatting automatically with 'make fixpyfmt'.
|
||||
|
||||
Do One Thing
|
||||
-------------
|
||||
|
||||
A patch or pull request should be the minimum necessary to address one issue.
|
||||
Please don't make a pull request for a bunch of unrelated changes, as they are
|
||||
difficult to review and will be rejected - split them up into separate
|
||||
requests instead.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Please add yourself to the contributors file before sending a pull request
|
||||
for other components:
|
||||
|
||||
https://github.com/ankitects/anki-contributors
|
||||
|
||||
Add-ons
|
||||
========
|
||||
|
||||
If you'd like to make more extensive changes, please consider writing an
|
||||
add-on instead, as add-ons have none of these restrictions and can implement
|
||||
whatever functionality in whatever style you wish.
|
77
README.development
Normal file
77
README.development
Normal file
|
@ -0,0 +1,77 @@
|
|||
TODO: translations
|
||||
|
||||
For non-developers who want to try this development code, the easiest way is
|
||||
to use a binary package - please see:
|
||||
|
||||
https://anki.tenderapp.com/discussions/beta-testing
|
||||
|
||||
You are welcome to run Anki from source instead, but it is expected that you
|
||||
can sort out all dependencies and issues by yourself - we are not able to
|
||||
provide support for problems you encounter when running from source.
|
||||
|
||||
To start, make sure you have the following installed:
|
||||
|
||||
- Python 3.6+
|
||||
- portaudio
|
||||
- mpv
|
||||
- lame
|
||||
- npm
|
||||
- your platform's C compiler, eg gcc, Xcode or Visual Studio 2017.
|
||||
- GNU make
|
||||
- protoc v3 (https://github.com/protocolbuffers/protobuf/releases)
|
||||
- rustup (https://rustup.rs/)
|
||||
|
||||
The build scripts assume a UNIX-like environment, so on Windows you will
|
||||
need to use WSL or Cygwin to use them.
|
||||
|
||||
Once you've installed the above components, execute ./run in this repo,
|
||||
which will build the subcomponents, and start Anki.
|
||||
|
||||
Before contributing code, please read README.contributing.
|
||||
|
||||
If you'd like to contribute translations, please see the translations section
|
||||
of http://ankisrs.net/docs/manual.html#_contributing
|
||||
|
||||
Subcomponents
|
||||
--------------
|
||||
|
||||
- proto contains the interface used to communicate between the Rust and
|
||||
Python code.
|
||||
- lib-rust contains the parts of the code implemented in Rust. This
|
||||
is only a tiny subsection at the moment.
|
||||
- lib-rspy contains a Python module (ankirspy) for accessing the Rust code.
|
||||
- lib-python contains a Python module (anki) that covers all of the work
|
||||
not related to the user interface.
|
||||
- anki-qt contains the Qt GUI implementation (aqt).
|
||||
|
||||
Helper scripts
|
||||
--------------
|
||||
|
||||
There are some helper scripts in this folder:
|
||||
|
||||
run: builds Anki and runs it in place. Command line arguments will be passed
|
||||
on to Anki.
|
||||
|
||||
bundle: builds the subcomponents into binary wheels stored in the build/ folder.
|
||||
|
||||
check: runs tests on each of the subcomponents.
|
||||
|
||||
fix: fix any code formatting issues in the subcomponents.
|
||||
|
||||
clean: remove generated build files and force a (mostly) full rebuild on the
|
||||
next run/check.
|
||||
|
||||
PyQt
|
||||
-----
|
||||
|
||||
The build scripts will use PyQt/Qt from Pypi by default. If you wish to use a
|
||||
system install, you will need to set up the pyenv folder yourself, making sure
|
||||
you have PyQt5, the WebEngine module and development tools (eg pyqt5-dev-tools)
|
||||
installed as well. You'll need to create the venv with --system-site-packages.
|
||||
|
||||
Mac users
|
||||
----------
|
||||
|
||||
You can use homebrew to install some dependencies:
|
||||
|
||||
$ brew install python mpv lame portaudio protobuf npm rustup-init
|
10
README.md
10
README.md
|
@ -1 +1,9 @@
|
|||
[update coming soon]
|
||||
This repo contains all the code for the computer version of Anki.
|
||||
|
||||
If you'd like to try development builds of Anki but don't feel comfortable
|
||||
building the code, please see
|
||||
https://anki.tenderapp.com/discussions/beta-testing
|
||||
|
||||
For more information on building, please see README.development
|
||||
|
||||
If you'd like to contribute code, please see README.contributing
|
||||
|
|
Loading…
Reference in a new issue