hledger/CONTRIBUTING.md

57 KiB

Contributor Guide

This doc is intended to become a focussed guide for new contributors.

If you are unexpectedly seeing this page after following a link, the content probably moved to a separate page: see the Developer docs.

Chat, Mail, Twitter, HN etc. https://hledger.org/support.html
hledger-web demo   demo.hledger.org
hledger GHCJS demo https://hledger.alhur.es
Trello old wishlist planning board
Github simonmichael/hledger (shortcut: code.hledger.org)
commits, COMMITS!
ci.hledger.org
open bugs, open wishes, open unknowns, open pull requests, draft open pull requests, ready open pull requests, all issues
issues with bounty tag, bountysource bounties, codemill bounties, codefund bounties
projects.hledger.org
stars.hledger.org: our rank among starred haskell projects:
2016: #71, 2017: #54, 2018: #53, 2020: #36, 2022: #34
Hackage packages: hledger-lib, hledger, hledger-ui, hledger-web, hledger-diff, hledger-iadd, hledger-interest, hledger-irr, *hledger*
diffs: hledger-lib, hledger, hledger-ui, hledger-web
build status: hledger-lib, hledger, hledger-ui, hledger-web
reverse deps: hledger-lib, hledger, hledger-ui, hledger-web
on hackage
... ...
... ...
Stackage build-constraints.yaml
open hledger-related issues
packages: hledger-lib, hledger, hledger-ui, hledger-web
versions: hledger-lib, hledger, hledger-ui, hledger-web
...
Repology quick hledger packaging status, detailed hledger packaging status, all *hledger* packages
Debian source packages: haskell-hledger-lib, bugs, haskell-hledger, bugs, haskell-hledger-ui, bugs, haskell-hledger-web, bugs
stable: hledger, bugs, hledger-ui, bugs, hledger-web, bugs
testing: hledger, bugs, hledger-ui, bugs, hledger-web, bugs
unstable: hledger, bugs, hledger-ui, bugs, hledger-web, bugs
all: *hledger*
popcon sampled install stats: haskell-hledger, hledger, hledger-ui, hledger-web
Ubuntu source packages: haskell-hledger-lib, bugs, haskell-hledger, bugs, haskell-hledger-ui, bugs, haskell-hledger-web, bugs
binary packages: *hledger*
Gentoo hledger, hledger-web, *hledger*
Fedora hledger, *hledger*, hledger (package db), Haskell SIG
Void Linux package search -> hledger
Nix *hledger*
Homebrew hledger
our 1-year homebrew rank:
2020: #1520 of 10000 on mac, #762 of 8288 on linux
Sandstorm hledger web app & reviews, issues
Reference fosskers GHC compatibility chart

Open issues

An overview of hledger's issue tracker. A good place to start looking for something to work on.

COMPONENT/TOPIC * BUGS WISHES PRS OTHER
all bugs (first/easy/neither) wishes PRs other
Tools:
install (hledger-install.sh) bugs (first/easy/neither) wishes PRs other
cli (hledger) bugs (first/easy/neither) wishes PRs other
ui (hledger-ui) bugs (first/easy/neither) wishes PRs other
web (hledger-web) bugs (first/easy/neither) wishes PRs other
Input/Output Formats:
journal bugs (first/easy/neither) wishes PRs other
timeclock bugs (first/easy/neither) wishes PRs other
timedot bugs (first/easy/neither) wishes PRs other
csv bugs (first/easy/neither) wishes PRs other
json bugs (first/easy/neither) wishes PRs other
html bugs (first/easy/neither) wishes PRs other
Commands:
accounts bugs (first/easy/neither) wishes PRs other
activity bugs (first/easy/neither) wishes PRs other
add bugs (first/easy/neither) wishes PRs other
balcmds (bal/bs/bse/cf/is/...) bugs (first/easy/neither) wishes PRs other
balance bugs (first/easy/neither) wishes PRs other
balancesheet bugs (first/easy/neither) wishes PRs other
cashflow bugs (first/easy/neither) wishes PRs other
checkdates bugs (first/easy/neither) wishes PRs other
checkdupes bugs (first/easy/neither) wishes PRs other
close bugs (first/easy/neither) wishes PRs other
import bugs (first/easy/neither) wishes PRs other
incomestatement bugs (first/easy/neither) wishes PRs other
prices bugs (first/easy/neither) wishes PRs other
print bugs (first/easy/neither) wishes PRs other
printunique bugs (first/easy/neither) wishes PRs other
register bugs (first/easy/neither) wishes PRs other
registermatch bugs (first/easy/neither) wishes PRs other
rewrite bugs (first/easy/neither) wishes PRs other
roi bugs (first/easy/neither) wishes PRs other
stats bugs (first/easy/neither) wishes PRs other
tags bugs (first/easy/neither) wishes PRs other
Miscellaneous:
budget (budgeting) bugs (first/easy/neither) wishes PRs other
packaging (packaging, dependencies) bugs (first/easy/neither) wishes PRs other
doc (documentation, help) bugs (first/easy/neither) wishes PRs other
periodexpressions (-b, -e, -p, date:) bugs (first/easy/neither) wishes PRs other
site (website, web presence) bugs (first/easy/neither) wishes PRs other
tools (dev tools, infrastructure)   bugs (first/easy/neither) wishes PRs other

About the project

Mission

Why was hledger created ?

Mainly:

  • to provide a more usable, robust, documented, cross-platform-installable version of Ledger for users
  • to provide a more maintainable and hackable version of Ledger for developers

Also:

  • to provide a useful library and toolbox for finance-minded haskell programmers
  • to explore the suitability of Haskell for such applications
  • to experiment with building a successful time-and-money-solvent project in a thriving ecosystem of financial software projects

What is the hledger project's current mission ?

  1. Provide peace of mind: bring clarity, relief, and peace of mind to folks stressed, confused, overwhelmed by finances.
  2. Educate and empower: help individuals and communities achieve clarity, accountability and mastery with money and time.

Roles and activities

  • newcomer/potential user
  • user
  • library user
  • field tester
  • bug wrangler
  • support
  • documentor
  • qa
  • developer
  • packager
  • communicator
  • project manager

Getting started

New contributors are always welcome in the hledger project. Jump in! Or ask us to help you find a task.

Funder

Become a financial backer to sustain and grow this project, increase your influence, express gratitude, build prosperity consciousness, and help transform world finance!

  • Use the donate links on the home page
  • Configure a recurring donation
  • Contribute or pledge bounties on issues you care about
  • Ask your organization to contribute
  • Work on project sustainability, accountability, fundraising

Tester

  • Test installation on platforms you have access to
  • Test examples, advice, and links in the docs
  • Run the latest release or developer build in daily use
  • Run tests
  • Run benchmarks
  • Report packaging, documentation, UX, functional, performance issues
  • Report and help analyse problems via irc/mail list/bug tracker

When reporting bugs, don't forget to search the tracker for a similar bug report. Otherwise, open a new bug by clicking "New issue", or http://bugs.hledger.org/new.

Enhancement requests are sometimes added to the tracker,but for these consider using the IRC channel and mail list (see Getting help). Both are archived and linkable, so the idea won't be lost. There is also a collection of wishes at the old trello board.

Technical Writer

  • get familiar with the website and documentation online, review and test
  • get familiar with the site/doc source files (see Shake.hs)
  • get the latest hledger source
  • send patches with names prefixed with "doc: " (or "site: ")

Graphics Designer

  • more/better logos & graphics
  • illustrations and diagrams
  • web design mockups for home page, site, hledger-web UI

Communicator

Marketing and market understanding is vital.

  • clarify project goals, value proposition, brand, mission, story
  • monitor product-market fit
  • identify new opportunities
  • influence developer priorities
  • spread the word!

Maintainer

Help with issue management

  • watch tracker activity, report status
  • apply/update labels where needed
  • follow up on dormant issues
  • facilitate a consistently good bug-reporting & PR-contributing experience

Help with packaging

  • package hledger for linux distros, macports, etc.
  • develop mac/windows installers
  • find and assist distro packagers/installer developers

Help with project management

  • clarify/update goals and principles
  • monitor, report on project progress and performance
  • research, compare and report on successful projects, related projects
  • identify collaboration opportunities
  • marketing, communication, outreach
  • release management, roadmap planning

Developer

See Developer workflows.