#pragma section-numbers 2 = New Contributors Mentoring = If you are a new contributor that wishes to start investing time in Mercurial development, you can grab one of the "Mentored" task. These tasks are low hanging fruits selected by core developers to help newcomers get a grasp of the code base and contribution process. <> == List of Mentored task per topic == == Small "First" tasks == These tasks should be good fit for first contributions. They are reasonably isolated and can be completed in a reasonable amount of time. ==== Task involving only Rust code ==== The `rhg` pure Rust executable is a good pool of simple "first task". Multiple simple command are waiting to be implemented: * hg id * hg path * hg branch * hg bookmarks * hg config (some of it is already implemented) ==== Task involing mostly Rust code, with rust-cpython usage ==== Mercurial's revlog have an "index" object that implement various data access and graph computation logic. In Rust, we have a "MixedIndex" class that forward these computation to the C code. Implementing these method in Rust would get us closer to using a pure Rust index. Computation on the graph: * ``ancestors``: return the gca set of the given revs * ``commonancestorsheads``: commonancestorsheads * ``computephasesmapsets``: compute the phases of all changesets * ``headrevs``: get head revisions * ``get filtered head revisions``: get filtered head revisions * ``reachableroots2``: return ``(heads(::( and ::)))`` Data access: * ``__getitem__`` * ``deltachain`` * ``issnapshot`` * ``findsnapshots`` * ``slicechunktodensity`` * ``stats`` ==== Task involving Python Only ==== * add a `-t/--tool` flag to evolve's `hg pick` == Medium Sized Task == These tasks are a bit more ambitious. They can be used to dive a bit deeper in some aspect of Mercurial. They can often be sliced in multiple subtasks ==== Task involving Rust code ==== * implement a read/write revlog'index in Rust (we already have a lot of code for the read part) * implement/integrate a Rust version of ``chg`` to the `rhg` executable, * implement rust based version of the `smartset` object used by `revsets`, * implementing pieces of the help system in Rust: The entire task is fairly large but can be sliced into smallish independant pieces * specify and implement a mini-rst parser * with txt output * (with html output) * provide `hg help` support for the topics in `mercurial/helptext/` * look into `hg help` support for command ---- ## list categories here