361 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			361 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| hledger project notes
 | |
| 
 | |
| "...simplicity of design was the most essential, guiding principle.
 | |
| Clarity of concepts, economy of features, efficiency and reliability of
 | |
| implementations were its consequences." --Niklaus Wirth
 | |
| 
 | |
| "The competent programmer is fully aware of the limited size of his own
 | |
| skull. He therefore approaches his task with full humility, and avoids
 | |
| clever tricks like the plague." --Edsger Dijkstra
 | |
| 
 | |
| * to do
 | |
| ** errors
 | |
| ** features
 | |
| *** more ledger features
 | |
| **** rename entry -> transaction, transaction -> posting
 | |
| **** -U --uncleared
 | |
| **** actual/effective entry & txn dates, for more accurate modelling & easier reconciliation
 | |
| **** ~/.hledgerrc for setting defaults
 | |
| **** support complete period syntax ?
 | |
|     every N days     # N is any integer
 | |
|     every N weeks
 | |
|     every N months
 | |
|     every N quarters
 | |
|     every N years
 | |
|     biweekly
 | |
|     bimonthly
 | |
| **** allow - before currency symbol ?
 | |
| *** new features
 | |
| **** a simpler timelog balance report format for clients
 | |
| **** more date syntax: last nov, next friday, optional this, week of
 | |
| **** allow comment lines immediately after or within an entry
 | |
| **** accept multiple -f files
 | |
| **** more reliable tidy layout from print
 | |
| **** -Q quarterly interval option, for consistency/convenience ?
 | |
| **** web gui
 | |
| **** charts
 | |
| **** easier data entry
 | |
| **** parse more file formats - gnucash, qif, ofx, csv..
 | |
| **** easier timelog format
 | |
| **** i18n
 | |
| *** speed
 | |
| **** more optimisation
 | |
| **** speed regression tests
 | |
| ** tests
 | |
| *** test all esoteric ledger file features
 | |
| *** test reading from stdin
 | |
| *** easy ledger compatibility testing
 | |
| **** --compare to compare (xml?) output with ledger with same args
 | |
| ** docs
 | |
| *** hledgerisms in file format - that hledger can read but ledger can't
 | |
| *** complete docs for smart dates, period expressions
 | |
| *** funding
 | |
| **** funding document 2009/01
 | |
| =======
 | |
| funding
 | |
| =======
 | |
| 
 | |
| vision
 | |
| ======
 | |
| 
 | |
|      How to grow the hledger project ?
 | |
| 
 | |
|      I'm looking for ways to fund active and sustainable hledger
 | |
|      development by me and others.
 | |
| 
 | |
|      A secondary goal is to develop new sustainable models and processes
 | |
|      for funding free software developers and other community projects.
 | |
| 
 | |
|      This is sometimes the point in a free sw project's development where
 | |
|      the project leader seemingly loses the plot, alienates contributors
 | |
|      and destroys the community's good-will dynamic.  I've seen it many
 | |
|      times, but a few have succeeded and I want to be one of them - so
 | |
|      that I can eat, have a modicum of stability and do my best work in
 | |
|      service to the community.  At worst, I'll look bad but the project
 | |
|      will still be out there. At best I'll live more easily and joyfully
 | |
|      while serving the cause of Financial Solvency!
 | |
| 
 | |
|      So I'm beginning by posting these notes and inviting your thoughts -
 | |
|      as much or as little as folks want to give. How could we do this 
 | |
|      so that all benefit ?
 | |
|      
 | |
| funding models
 | |
| ==============
 | |
|      Brainstorming some possible funding models & processes.
 | |
| 
 | |
|      * grants
 | |
| 
 | |
|       How to find possible grant sources ?
 | |
| 
 | |
|       * con
 | |
| 
 | |
|        * getting grant funding is a whole new field to study
 | |
|        * slow and time intensive, I imagine
 | |
| 
 | |
|      * donations
 | |
| 
 | |
|       Solicit donations.
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * simple
 | |
| 
 | |
|       * con
 | |
| 
 | |
|        * often difficult
 | |
|        * donators do not feel a direct benefit
 | |
| 
 | |
|      * shareware
 | |
| 
 | |
|       Release the project under a non-free license, requiring commercial
 | |
|       users to pay the fee on an honour basis (eg).
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * flexible, low administration, encourages trust
 | |
| 
 | |
|       * con
 | |
| 
 | |
|        * effectively closed-source ? would inhibit collaboration
 | |
|        * benefit is still indirect, only a proportion will pay
 | |
|        * enforcement/guilt may come into play
 | |
| 
 | |
|      * limited-time premium branch
 | |
| 
 | |
|       The funded version of hledger gets some desirable premium features
 | |
|       before the free version and is closed-source.  Funders/customers pay
 | |
|       a fixed price for immediate access to the funded version.  Yearly, a
 | |
|       new funded version is released and the old funded version is merged
 | |
|       into the free version.  (To gain experience it could be done on a
 | |
|       smaller scale, eg monthly/quarterly.)
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * all features reach community, predictably
 | |
|        * customers are also community funders
 | |
|        * customers receive direct benefit from paying
 | |
| 
 | |
|       * con
 | |
| 
 | |
|        * free sw developers compete/outshine the premium branch
 | |
| 
 | |
|      * bounties
 | |
| 
 | |
|       Some (or all) feature, bugfix, project management or other tasks are
 | |
|       published with a bounty attached.  When the bounty is paid by one or
 | |
|       more funders, the task is performed and delivered. Or, bounty is paid
 | |
|       on completion of task (honour system).
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * funders receive direct benefit
 | |
| 
 | |
|      * bounties using fundable.org (eg)
 | |
| 
 | |
|       A more organised form of the above, perhaps facilitating trust,
 | |
|       co-funding and larger bounties.
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * proven process developed by others
 | |
| 
 | |
|       * con
 | |
| 
 | |
|        * fundable takes a cut
 | |
| 
 | |
|      * hosted service
 | |
| 
 | |
|       Offer hosted and managed ledgers, perhaps with premium features, for
 | |
|       a monthly fee
 | |
| 
 | |
|       * pro
 | |
| 
 | |
|        * proven model
 | |
|        * clear benefit to customers, especially non-technies
 | |
| 
 | |
|       * con
 | |
|  
 | |
|        * success of free/self-installed version competes with hosting service
 | |
|        * some will avoid web-hosting their financial data
 | |
| 
 | |
|      * customisation
 | |
| 
 | |
|       Offer per-user customisations, possibly to be merged in the trunk,
 | |
|       for a fee
 | |
| 
 | |
|      * support
 | |
| 
 | |
|       Offer user/developer support for a fee
 | |
| 
 | |
|      * training
 | |
| 
 | |
|       Offer application and/or financial training for a fee
 | |
| 
 | |
|      * profit sharing/tithing
 | |
| 
 | |
|       Each period (quarter, half-year, year), donate 10% (eg) to project
 | |
|       contributors and/or supporting projects
 | |
| 
 | |
|      * transparent funding
 | |
| 
 | |
|       Funding and usage of funds is published on the web as a ledger
 | |
| 
 | |
|      * opaque funding
 | |
| 
 | |
|       All funding and spending need not be made public
 | |
| 
 | |
| strengths
 | |
| =========
 | |
|      hledger has some aptitudes in this area:
 | |
| 
 | |
|     * hledger deals with money => hledger users will tend to have some money
 | |
|     * hledger's purpose is to increase financial success => users will feel its value to their bottom line
 | |
|     * hledger is a tool that can support project funding, eg by publishing community funding data
 | |
| 
 | |
| weaknesses
 | |
| ==========
 | |
|     * hledger doesn't have a nice ui yet
 | |
|     * hledger has a limited featureset
 | |
|     * hledger requires work, eg data entry and chart of accounts maintenance
 | |
|     * hledger is geeky
 | |
|     * there is competition
 | |
|     * hledger has no compelling market niche (aside from payment-averse free software users)
 | |
| 
 | |
| competitors/fellow niche inhabitants
 | |
| ====================================
 | |
| 
 | |
|     * web apps
 | |
| 
 | |
|      * netsuite
 | |
|      * sql-ledger, ledgersmb
 | |
|      * wesabe
 | |
|      * ...
 | |
| 
 | |
|     * desktop apps
 | |
| 
 | |
|      * quickbooks
 | |
|      * quicken
 | |
|      * ms money
 | |
|      * grisbi
 | |
|      * gnucash
 | |
|      * excel
 | |
|      * ledger!
 | |
|      * ...
 | |
| 
 | |
| ***** responses
 | |
| ***** albino
 | |
|       have you considered talking to business who hate their financial sw and going from there
 | |
| ***** gwern
 | |
|       most haskellers have never heard of hledger, sounds arrogant or hubristic to talk of charging for it
 | |
| *** --version
 | |
| *** --help
 | |
| *** readme
 | |
| **** keep in sync (automate)
 | |
| ***** README file
 | |
| ****** options list in Features should match Options.hs, generate from hledger --help ?
 | |
| ***** hledger.hs module description
 | |
| ***** hledger.cabal description field (exclude home page link)
 | |
| ***** home page description (http://joyful.com/Hledger/editform)
 | |
| ***** mail list description (http://groups.google.com/groups/hledger -> edit welcome msg)
 | |
| ***** gmane description
 | |
| ***** darcsweb description
 | |
| *** announcements
 | |
| **** generate from README and NEWS
 | |
| *** release notes
 | |
| **** NEWS
 | |
| *** implementation docs
 | |
| *** api docs
 | |
| *** developer intro
 | |
| **** style tips
 | |
| ***** we aim to make reliable software:
 | |
| ****** fixes come before features
 | |
| ****** "bugs" get called "errors", as in "the programmer messed up"
 | |
| ****** we test continuously and thoroughly (code, doc & speed tests on each checkin)
 | |
| ****** less is more
 | |
| *** user manual
 | |
| *** other differences not noted in README
 | |
| **** ledger shows description comments as part of description
 | |
| **** ledger seems to get amounts' x-position wrong more than hledger
 | |
| **** ledger can't parse full smart dates in display expressions
 | |
| **** hledger print puts a blank line after the entry, not before it
 | |
| **** ledger can get timelog entry balance wrong, see mail list
 | |
| **** ledger reports timelog sessions as virtual transactions
 | |
| ** packaging, web presence, etc.
 | |
| *** make installation easier
 | |
| **** on all platforms
 | |
| ***** via cabal install
 | |
| ***** via downloading packages from hackage
 | |
| **** on linux
 | |
| ***** on debian
 | |
| ***** on ubuntu
 | |
| ***** on redhat
 | |
| ***** on arch
 | |
| ***** via binaries
 | |
| **** on mac
 | |
| ***** via ports
 | |
| ***** via binaries
 | |
| **** on windows
 | |
| ***** via binaries
 | |
| *** reduce dependencies
 | |
| **** split packages ?
 | |
| *** set up binary publishing
 | |
| *** clarify bugtracking process
 | |
| * misc
 | |
| ** things I want to know
 | |
| *** time
 | |
| where have I been spending my time in recent weeks ?
 | |
| where have I spent my time today ?
 | |
| what is my status wrt spending plan for this week/month/year ?
 | |
| what is my current status wrt time spending goals ?
 | |
| *** money
 | |
| where have I been spending my money ?
 | |
| what is my status wrt spending plan for this week/month/year ?
 | |
| what is my current status wrt spending/savings goals ?
 | |
| what are all my current balances ?
 | |
| what does my balance history look like ?
 | |
| what does my balance future look like ?
 | |
| are there any cashflow, tax, budgetary problems looming ?
 | |
| *** charts
 | |
| [1:27pm] <sm> I have decided I am not getting enough visible day-to-day value out of my ledger, I need more of that to stay motivated
 | |
| [1:27pm] <Nafai> What do you think will help in that?
 | |
| [1:27pm] <sm> I think some simple self-updating charts, or even good reports in a visible place
 | |
| [1:28pm] <sm> something I don't have to spend an hour fiddling with to get answers
 | |
| [1:38pm] <sm> Nafai: identifying/designing some useful reports/charts seems to be blocking me
 | |
| [1:39pm] <sm> there are probably some standard ones I should use
 | |
| [1:40pm] <sm> a graph of daily net worth is probably one of the simplest
 | |
| [1:58pm] <sm> what else.. a chart of weekly expenses in key categories
 | |
| [1:58pm] <sm> ditto, monthly
 | |
| [1:58pm] <sm> a chart of monthly income
 | |
| [1:59pm] <sm> those three should help me be more clear about cashflow status
 | |
| [2:00pm] <sm> also I'd like something that shows me how much I am on top of financial tracking - how current my numbers are, when last reconciled etc - at a glance
 | |
| [2:01pm] <sm> another simple one: current balances in all accounts
 | |
| [2:01pm] <sm> those would be a great start
 | |
| [2:04pm] <sm> daily net worth, weekly expense, monthly expense, monthly income, confidence/currentness report, and balance report
 | |
| [2:05pm] <sm> let's see, which of those 6 would give most payoff right now
 | |
| [2:05pm] <sm> probably 5
 | |
| [2:06pm] <sm> how could I measure that ?
 | |
| [2:06pm] <sm> number of days since last ledger entry..
 | |
| [2:06pm] <sm> number of ledger entries in last 30 days (compared to average)
 | |
| [2:07pm] <sm> number of days since last cleared checking entry (indicating an online reconcile)
 | |
| [2:08pm] <sm> those would be a good start. How do I make those visual
 | |
| [2:09pm] <sm> well I guess the first step is a script to print them
 | |
| 
 | |
| ** data representation
 | |
| *** http://www.python.org/dev/peps/pep-0327/
 | |
| *** http://www.n-heptane.com/nhlab/repos/Decimal/
 | |
| *** http://www.n-heptane.com/nhlab/repos/Decimal/Money.hs
 | |
| *** http://www2.hursley.ibm.com/decimal/
 | |
| ** snippets
 | |
| -- trace a MixedAmount
 | |
| matrace :: MixedAmount -> MixedAmount
 | |
| matrace a@(Mixed as) = trace (show as) a
 | |
| 
 | |
| -- normalise and trace a MixedAmount
 | |
| nmatrace :: MixedAmount -> MixedAmount
 | |
| nmatrace a = trace (show as) a where (Mixed as) = normaliseMixedAmount a
 | |
| 
 | |
| ** http://lwn.net/Articles/314577/
 | |
| ** financial software
 | |
| *** http://weberp.org
 | |
| **** http://www.weberp.org/weberp/doc/Manual/ManualContents.php
 |