You may find the Entries FAQ and the General FAQ useful.

How are budgets configured in the system?

Ledger has a concept called a Periodic Transaction that is used to create a budget. Because ledger doesn’t understand fiscal years, ours look a little different than most examples, but they function the same way. We use these periodic transactions to allocate money to different uses.

In the Fedora project we manage our transactions a little bit differently. Normally you would budget your expenses. For example, you might think that you will spend $500 on rent and $300 on food in a month. In Fedora, we treat our budgets like credit cards (or checking accounts or current accounts). We then budget how much money we plan to spend out of each budget. All of this means that we budget negative numbers because we are planning to spend a certain amount of money. We do this because we know we want to spend no more than a certain amount of money on some activity, such as Flock, however we don’t decide at the beginning of the year how much we will spend on, for example, Lodging.

This example shows how the council allocated the total Fedora Public Budget to various activities in FY17.

~ every 2 years                                     (1)
    ; 2016/03/01   Opening Balance                  (2)
    APAC:Unallocated                    -$5600      (3)
    EMEA:Unallocated                    -$11100     (3)
    LATAM:Unallocated                   -$4300      (3)
    NA:Unallocated                      -$13250     (3)
    Flock                               -$85000     (3)
    Mindshare:Unallocated               -$9000      (3)
    Diversity-Inclusion:Unallocated     -$9000      (3)
    Council:Unallocated                 -$58750     (3)
    Annual Budget                        $196000    (4)
1 This line is fixed. Copy it exactly.
2 Comments are awesome!
3 This is a budget allocation. This line indicates that the project will budget a certain amount of spending for a specific area.
4 This is the total annual public budget. Remember every transaction has to add up to $0. This is one is not an exception.

In some cases this is the end of the budget allocation. For example, there is no sub-budgeting done for Flock. We plan and execute that event as a single unit. In other cases, for example in the Ambassador Regions, the money is divided into two or more layers or sub-budgeting.

How do sub-budgets work?

Ambassador Regions are required to allocate their money into four quarters. This is to help with managing our spending rate. Some other areas of the project, for example FADs, are also often sub-budgeted, but not necessarily by quarter.

Sub-budgeting is pretty simple. It can be done in the file used by the specific area. Here is an example of how the NA budget my get broken down by quarter:

~ every 2 years
    ; Budget
    NA:Unallocated                                    $29400
    NA:Q1                                            -$7350
    NA:Q2                                            -$7350
    NA:Q3                                            -$7350
    NA:Q4                                            -$7350
    NA:Unallocated                                              (1)
1 This line just collects any unallocated monies so your transaction will balance.

It works the same way as the council budget in the previous question. Notice that the order of the lines didn’t matter. Here they wrote the positive number first because it made sense to that region to think, "we had this money and we split it up like this." Again, everything adds to $0.

This can even be split further. Here is what an optional quarterly event budget might look like. This time the example is from EMEA.

~ every 2 years
    EMEA:Q1                                             $4753.00
    EMEA:Q1:Mozilla & Fedora Activity Day              -$48
    EMEA:Q1:PyCon SK                                   -$242
    EMEA:Q1:Open Source Weekend                        -$30
    EMEA:Q1:Chemnitzer Linuxtage 2016                  -$787
    EMEA:Q1:3D Expo                                    -$73
    EMEA:Q1:Linux Wochen Vienna                        -$303
    EMEA:Q1:Fosscom 2016                               -$242
    EMEA:Q1:DORS-CLUC 2016                             -$424
    EMEA:Q1:OSCAL 2016                                 -$484
    EMEA:Q1:Swag                                       -$1817
    EMEA:Q1:Postage                                    -$303
    EMEA:Unallocated                                                (1)
1 This line has no amount because it is automatically calculated (or elided). This line is Unallocated because the quarter has ended and we want to sweep any remaining budget back to the main pot. See below for more details.

What if something gets budgeted and then we change our mind?

There are two ways to fix this. Option 1, which is preferred, is to create another periodic transaction to change the budget. For example:

; Budget Transfers on 2016-05-17
; Approved in Meeting Minutes: https://github.com/fedora-infra/mote/foo/bar/baz
~ every 2 years
    EMEA:Q1:Open Source Weekend                         $30 ; event was cancelled
    EMEA:Q1:3D Expo                                     $23 ; We had extra money left
    EMEA:Q3:nullCon                                    -$53

In this case $53 was moved from events in Quarter 1 to an event in Quarter 3. The comments make everything extra clear.

The other option is to just edit the budget entries. This is less preferred as it means you would have to go through the file’s history to discover there had been a change.

What if we have a budget item (event) that has expenses in multiple quarters?

In Fedora we budget our events and items by the quarter in which they are expected to occur. In general, our budget items are small enough that it won’t change anything. Exceptions are large events like Flock. Doing this lets us make one budget entry for something like an event instead of having to make guesses about how much of the expense will fall in each quarter.

The goal of the budget is to make sure you have roughly allocated your expenses to occur in equal parts year round. There will definitely be exceptions as some things just naturally bunch up and some quarters are low on events/items. However, it should all roughly even out. Therefore we don’t need to worry about budgeting the exact costs in each quarter as long as the quarter where the item happens is accurate.

If we think about an event that will occur during Q3, we consider, from a budget perspective that all costs related to the event will occur in Q3. If we want to see when they really occurred we can look at the date of the associated transactions. This is kind of split brain, but doing it this way prevents us from having to budget the same event in two quarters or leave long non-machine parseable comments.

What are the best practices or best ideas for Ambassador Regions?

The budget is here to help everyone plan both the regions and the council. Therefore, it is helpful to think of the budget as your "notes about the future." Specifically, it is a good idea to immediately put things into the budget when they are approved. This way you can see reports of how much money you have left to allocate. When spending happens you’ll be able to see if the budgets were accurate and if there is any overage or underspend.

Here is an example, Using LATAM and some ficticious numbers:

~ every 2 years
    ; Budget
    LATAM:Unallocated     $12000
    LATAM:Q1             -$4000
    LATAM:Q2             -$4000
    LATAM:Q3             -$4000
    LATAM:Q4             -$4000
    LATAM:Unallocated

The entry above divides the LATAM budget into quarterly budgets. Each quarter is broken down as follows

~ every 2 years
    ; Budget
    LATAM:Q1                                             $4000
    LATAM:Q1:UNSACC LinuxPlaya                          -$606
    LATAM:Q1:Cs50xni                                    -$1020
    LATAM:Q1:Flisol                                     -$750
    LATAM:Q1:CryptoRave                                 -$0 ; event cancelled
    LATAM:Q1:SASO Conf                                  -$1000 ; we usually do this - not yet approved
    LATAM:Q1                                                        (1)
1 This line has no amount because it is automatically calculated (or elided). This line is Q1 because the quarter has not yet ended and we want to keep any remaining budget in the quarter. See below for more details.

Here we have broken down a single budget quarter. Three events have been voted on and approved by the LATAM ambassadors. These are UNSACC LinuxPlaya, Cs50xni, and Flisol.

CryptoRave was originally approved (or considered) but then the event got canceled or we decided not to participate. Leaving the note here like this makes it easy to remember the event in the future or in next year’s planning.

SASO Conf is an event that LATAM has traditionally done. When the yearly planning was done a tentative $1000 was going to be used for this event. This event isn’t approved yet and hasn’t got a LATAM sponsor. It exists in this entry as a planning reminder. If the LATAM ambassadors start to run out of money making decisions on these kinds of events can help make decision about what trade-offs to make or whether to ask for more money.

Are there any Quarter end activities?

At the end of the quarter we want to sweep any unallocated budget back into the main budget pot for reuse. To do this, change the last entry for the quarterly budget from Region:Q# to Region:Unallocated. The amount is automatically calculated.

Once you have processed all transactions for the end of the quarter, you may want to sweep the unspent money back as well. The easiest way to do this is to add as sweep line, as indicated below. The benefit of the sweep line is that it moves any unspent money back into the main unallocated pot so you can use it in future quarters.

  ~ every 2 years
     ; Budget
     EMEA:Q1                                      $3316
     EMEA:Q1:PyCon SK 2017                       -$465
     EMEA:Q1:CLT 2017                            -$342
     EMEA:Q1:FSAD-Milan 2017                     -$175
     EMEA:Q1:Linux Weekend Tirana 2017           -$140
     EMEA:Q1:OSCAL 2017                          -$1310
     EMEA:Q1:S.A.M.O.S 2017                      -$0 ; Event Cancelled
     EMEA:Q1:DORS/CLUC 2017                      -$315
     EMEA:Q1:Swag Production                     -$278
     EMEA:Q1:Pending Tickets From FY17           -$291
     EMEA:Q1                                      $101.42 ; quarter end sweep (1)
     EMEA:Unallocated
1 this is this is the quarterly sweep line. The number comes from the unspent report on [budget website](https://budget.fedoraproject.org/).