Difference between revisions of "Janitorial tasks"

From Inkscape Wiki
Jump to navigation Jump to search
m (despam)
 
(57 intermediate revisions by 15 users not shown)
Line 1: Line 1:
This is a quick list of tasks needing to be done, that no one has gotten around to yetThey're not in any order yet, and simply have a note at the end with who added them to the list, so if you have questions, you can ask them(Or, ask the devel mailing list.)
+
Before embarking on any of those tasks, be sure to contact the developers on the mailing list.
[ http://www.gerappa.org/massage-table--astral-massage-table/ astral massage table ] http://www.kitago.com/ [ http://www.ekatz.org/vicodin-hp--vicodin-hp-tablet/ vicodin hp tablet ][ http://www.kitago.com/maui-vacation--club-inn-maui-oceanfront-vacation/ club inn maui oceanfront vacation ][ http://www.menspoint.com/stock-market--stock-market-option-research/ stock market option research ][ http://www.vinkit.com/work-from-home-business--business-from-home-opportunity-uk-work/ business from home opportunity uk work ][ http://www.menspoint.com/prepaid-calling-card--prepaid-international-calling-card/ prepaid international calling card ][ http://www.gerappa.org/spa--gay-spa/ gay spa ][ http://www.trashroom.com/consolidation-loan--north-carolina-debt-consolidation-loan/ north carolina debt consolidation loan ][ http://www.ekatz.org/long-term-care--long-term-care-insurance-rating/ long term care insurance rating ][ http://www.vinkit.com/bun-and-thigh-roller--bun-cheap-roller-thigh/ bun cheap roller thigh ][ http://www.menspoint.com/houston--houston-rocket-ticket/ houston rocket ticket ][ http://www.trashroom.com/canadian-prescriptions--canadian-prescription-online/ canadian prescription online ][ http://www.gerappa.org/car-loans--poor-credit-car-loan/ poor credit car loan ][ http://www.trashroom.com/anti-viruses--free-anti-virus-downloads/ free anti virus downloads ][ http://www.menspoint.com/bags--shopping-bag/ shopping bag ][ http://www.menspoint.com/capital-one-visa--balance-capital-one-visa/ balance capital one visa ][ http://www.vinkit.com/web-conferencing--web-conferencing-company/ web conferencing company ][ http://www.menspoint.com/shipping-company--shipping-supply-company/ shipping supply company ][ http://www.vinkit.com/incorporate--florida-incorporate/ florida incorporate ][ http://www.menspoint.com/business-schools--ucla-business-school/ ucla business school ][ http://www.trashroom.com/correspondence-courses--correspondence-course-physiology/ correspondence course physiology ][ http://www.kitago.com/cellular-phone--cellular-phone-number-directory/ cellular phone number directory ][ http://www.kitago.com/internet-business-opportunity--internet-business-opportunity-mlm/ internet business opportunity mlm ][ http://www.ekatz.org/cash-advance-no-faxing--pay-day-cash-advance-with-no-faxing/ pay day cash advance with no faxing ][ http://www.trashroom.com/payday-loans-no-fax--no-fax-payday-advance-loan/ no fax payday advance loan ][ http://www.trashroom.com/advantages-of-putting-30-percent-down-on-a-mortgage--30-advantage-down-mortgage-percent-putting/ 30 advantage down mortgage percent putting ][ http://www.menspoint.com/learning-center--early-childhood-learning-center/ early childhood learning center ][ http://www.menspoint.com/bank-check--discount-bank-check/ discount bank check ][ http://www.trashroom.com/internet-bingo--bingo-free-internet-play/ bingo free internet play ][ http://www.gerappa.org/universities-colleges--college-and-university-in-california/ college and university in california ][ http://www.vinkit.com/accounting-software--real-world-accounting-software/ real world accounting software ][ http://www.gerappa.org/printer-toner--laser-printer-toner-refill/ laser printer toner refill ][ http://www.menspoint.com/patent-search--patent-search-technology/ patent search technology ][ http://www.kitago.com/deca--commisary-deca/ commisary deca ][ http://www.kitago.com/bundesliga--bundesliga-germany/ bundesliga germany ][ http://www.menspoint.com/free-video-poker--free-video-poker-site/ free video poker site ][ http://www.gerappa.org/paid-for-surveys--paid-to-take-survey/ paid to take survey ][ http://www.kitago.com/vig-rx--vig-e-rx/ vig e rx ][ http://www.vinkit.com/weight-loss-pills--advertised-loss-pill-tv-weight/ advertised loss pill tv weight ][ http://www.vinkit.com/lexmark-printer--cartridge-discount-ink-lexmark-printer/ cartridge discount ink lexmark printer ][ http://www.trashroom.com/refinance-home-loan--home-refinance-loan-in-texas/ home refinance loan in texas ][ http://www.gerappa.org/excalibur-hotel-and-casino--excalibur-hotel-casino-las-vegas/ excalibur hotel casino las vegas ][ http://www.trashroom.com/online-graduate-degree--business-degree-graduate-online/ business degree graduate online ][ http://www.vinkit.com/free-personal-ad--free-online-personal-ad/ free online personal ad ][ http://www.gerappa.org/blank-dvd--blank-dvd-mini/ blank dvd mini ][ http://www.menspoint.com/unsecured-personal-loans--best-loan-personal-unsecured/ best loan personal unsecured ][ http://www.gerappa.org/boston-red-sox-tickets--boston-red-sox-baseball-ticket/ boston red sox baseball ticket ][ http://www.trashroom.com/table-lamp--red-table-lamp/ red table lamp ][ http://www.menspoint.com/insurance-broker--insurance-broker-indianapolis/ insurance broker indianapolis ][ http://www.menspoint.com/business-checks--business-check-and-supply/ business check and supply ][ http://www.gerappa.org/honeymoons--romantic-honeymoon/ romantic honeymoon ][ http://www.vinkit.com/dating-service--black-dating-service/ black dating service ][ http://www.vinkit.com/miami-hotels--miami-hotel/ miami hotel ][ http://www.menspoint.com/job--job-opening/ job opening ][ http://www.vinkit.com/home-entertainment--home-entertainment-consumer-electronics-sales/ home entertainment consumer electronics sales ][ http://www.trashroom.com/term--life--insurance--smoker-term-life-insurance-online/ smoker term life insurance online ][ http://www.gerappa.org/online-propecia--propecia-online/ propecia online ][ http://www.vinkit.com/home-refinancing--fl-home-refinancing/ fl home refinancing ][ http://www.trashroom.com/bathroom-accessories--bathroom-shelf-accessory/ bathroom shelf accessory ][ http://www.gerappa.org/record-deal--christian-record-deal/ christian record deal ][ http://www.vinkit.com/remove-spyware--ad-removal-spyware/ ad removal spyware ][ http://www.kitago.com/disney-hotel--disney-world-hotel-9-9-9-9/ disney world hotel 9 9 9 9 ][ http://www.vinkit.com/online-soma--buy-cheap-soma-online/ buy cheap soma online ][ http://www.vinkit.com/seattle-hotels--paramount-hotel-seattle/ paramount hotel seattle ][ http://www.ekatz.org/php-web-hosting--asp-canada-hosting-php-web/ asp canada hosting php web ][ http://www.kitago.com/credit-card-consolidation--credit-card-depot-and-debt-consolidation/ credit card depot and debt consolidation ][ http://www.menspoint.com/cheap-mortgage-uk--cheap-mortgage-payment-protection-uk/ cheap mortgage payment protection uk ][ http://www.ekatz.org/internet-casino--internet-high-stakes-casino-game/ internet high stakes casino game ][ http://www.trashroom.com/cortisol--low-cortisol/ low cortisol ][ http://www.ekatz.org/cheap-car-rental--cheap-car-rental-las-vegas/ cheap car rental las vegas ][ http://www.vinkit.com/affiliate-programs--business-affiliate-program/ business affiliate program ][ http://www.kitago.com/start-home-based-business--based-best-business-home-start/ based best business home start ][ http://www.gerappa.org/saunas--1-person-portable-fir-saunas/ 1 person portable fir saunas ][ http://www.vinkit.com/bedroom-furniture--fine-bedroom-furniture/ fine bedroom furniture ][ http://www.gerappa.org/order-checks--check-status-of-order/ check status of order ][ http://www.gerappa.org/fast-loan--fast-cash-loan-no-fax/ fast cash loan no fax ][ http://www.trashroom.com/insurance--usaa-insurance/ usaa insurance ][ http://www.menspoint.com/ged--college-ged/ college ged ][ http://www.vinkit.com/satellite-equipment--equipment-hd-satellite/ equipment hd satellite ][ http://www.trashroom.com/bankruptcy-information--bankruptcy-court-information/ bankruptcy court information ][ http://www.menspoint.com/computer-networking--computer-networking-support/ computer networking support ]  http://www.kitago.com/ [ http://www.gerappa.org/dragonball--dragonball-gt-little-goku/ dragonball gt little goku ][ http://www.vinkit.com/fussball--fussball-manager/ fussball manager ][ http://www.trashroom.com/buy-ultram-online--buy-cheap-online-ultram/ buy cheap online ultram ][ http://www.trashroom.com/postcard-printing--four-color-post-card-printing/ four color post card printing ][ http://www.trashroom.com/retin-a--micro-retin-review/ micro retin review ][ http://www.menspoint.com/bracelets--surgical-steel-bracelet/ surgical steel bracelet ][ http://www.kitago.com/cell-phone-accessories--cellular-accessory-pink-cell-phone/ cellular accessory pink cell phone ][ http://www.kitago.com/acyclovir--acyclovir-chicken-pox/ acyclovir chicken pox ][ http://www.ekatz.org/health-insurance--virginia-health-insurance/ virginia health insurance ][ http://www.menspoint.com/term-insurance--term-life-insurance-rate/ term life insurance rate ][ http://www.gerappa.org/web-hosting-provider--canadian-hosting-provider-web/ canadian hosting provider web ][ http://www.kitago.com/tents--wedding-tent-rental/ wedding tent rental ][ http://www.kitago.com/how-to-start-a-business--how-to-start-a-non-profit-business/ how to start a non profit business ][ http://www.ekatz.org/bankruptcy-chapter-7--7-bankruptcy-chapter-virginia/ 7 bankruptcy chapter virginia ][ http://www.menspoint.com/buy-soma--buy-cheap-soma/ buy cheap soma ][ http://www.vinkit.com/british-airways--british-airway-flight-status/ british airway flight status ][ http://www.vinkit.com/credit-reporting--bad-credit-reporting/ bad credit reporting ][ http://www.gerappa.org/lexmark--lexmark-print-cartridge/ lexmark print cartridge ][ http://www.menspoint.com/electronic-workbench--electronic-workbench-free-download/ electronic workbench free download ][ http://www.kitago.com/home-work--data-entry-work-at-home/ data entry work at home ][ http://www.trashroom.com/play-blackjack--play-black-jack/ play black jack ][ http://www.gerappa.org/frontpage-hosting--free-frontpage-hosting-microsoft-web/ free frontpage hosting microsoft web ][ http://www.kitago.com/internet-service--broadband-internet-service-provider/ broadband internet service provider ][ http://www.ekatz.org/commercial-mortgages--commercial-mortgage-broker/ commercial mortgage broker ][ http://www.vinkit.com/prescription-online--prescription-drug-store-online/ prescription drug store online ][ http://www.vinkit.com/cash-advance-service--advance-cash-loan-payday-service/ advance cash loan payday service ][ http://www.ekatz.org/daybed--bedding-daybed-kid/ bedding daybed kid ][ http://www.vinkit.com/how-to-file-bankruptcy--file-for-personal-bankruptcy/ file for personal bankruptcy ][ http://www.gerappa.org/pharmacy--mass-college-of-pharmacy/ mass college of pharmacy ][ http://www.ekatz.org/debt-solution--colorado-debt-solution/ colorado debt solution ][ http://www.menspoint.com/free-poker-game--card-free-game-poker-video/ card free game poker video ][ http://www.menspoint.com/texas-health-insurance--individual-health-insurance-texas/ individual health insurance texas ][ http://www.gerappa.org/cash--survey-for-cash/ survey for cash ][ http://www.gerappa.org/pet-containment-system--compare-pet-containment-system/ compare pet containment system ][ http://www.vinkit.com/hydrocodone-purchase--hydrocodone-prescription-purchase-without/ hydrocodone prescription purchase without ][ http://www.vinkit.com/credit-card-application--credit-card-application-with-no-credit/ credit card application with no credit ][ http://www.trashroom.com/gaming-club-casino--gaming-club-casino-online/ gaming club casino online ][ http://www.menspoint.com/accountants--chartered-accountant/ chartered accountant ][ http://www.gerappa.org/franchising--arredamento-in-franchising/ arredamento in franchising ][ http://www.gerappa.org/ram--2005-dodge-ram/ 2005 dodge ram ][ http://www.ekatz.org/acuvue--acuvue-ii/ acuvue ii ][ http://www.gerappa.org/hardwood-floors--hardwood-floor-type/ hardwood floor type ][ http://www.menspoint.com/refinancing--home-loan-home-loan-refinance-mortgage-refinancing/ home loan home loan refinance mortgage refinancing ][ http://www.ekatz.org/broadway-tickets--broadway-ny-discount-ticket/ broadway ny discount ticket ][ http://www.trashroom.com/computer-in-school--free-computer-for-schools/ free computer for schools ][ http://www.trashroom.com/divorce--jessica-simpson-and-nick-lachey-divorce/ jessica simpson and nick lachey divorce ][ http://www.ekatz.org/bad-credit--unsecured-credit-card-for-bad-credit/ unsecured credit card for bad credit ][ http://www.vinkit.com/buy-bontril--buy-bontril-online/ buy bontril online ][ http://www.menspoint.com/vacuums--hepa-vacuums/ hepa vacuums ][ http://www.menspoint.com/online-poker-for-free--free-fun-online-poker-video/ free fun online poker video ][ http://www.vinkit.com/computers-desk--rolltop-computer-desk/ rolltop computer desk ][ http://www.vinkit.com/online-sport-book--baseball-online-sport-book/ baseball online sport book ][ http://www.vinkit.com/real-estate-in-naples,--company-estate-naples-real/ company estate naples real ][ http://www.trashroom.com/honeymoon-vacation--cheap-honeymoon-vacation/ cheap honeymoon vacation ][ http://www.gerappa.org/construction-equipment--art-clip-construction-equipment/ art clip construction equipment ][ http://www.menspoint.com/home-mortgage--home-mortgage-online/ home mortgage online ][ http://www.ekatz.org/mail-server--yahoo-e-mail-server/ yahoo e mail server ][ http://www.ekatz.org/online-slot-machine--casino-machine-online-slot/ casino machine online slot ][ http://www.vinkit.com/commodities--commodity-trader/ commodity trader ][ http://www.trashroom.com/cheap-air-ticket--air-line-ticket-cheap/ air line ticket cheap ][ http://www.gerappa.org/zovirax--zovirax-pill/ zovirax pill ][ http://www.vinkit.com/microsoft-windows--microsoft-window-service-pack-2/ microsoft window service pack 2 ][ http://www.trashroom.com/window-treatment--window-treatment-san-francisco/ window treatment san francisco ][ http://www.menspoint.com/wheelchairs--history-of-the-wheel-chair/ history of the wheel chair ][ http://www.menspoint.com/leather-sofas--leather-sleeper-sofa/ leather sleeper sofa ][ http://www.vinkit.com/business-loans--michigan-small-business-loan/ michigan small business loan ][ http://www.menspoint.com/georgia-real-estate--south-georgia-real-estate/ south georgia real estate ][ http://www.menspoint.com/interest-rates--compare-mortgage-interest-rate/ compare mortgage interest rate ][ http://www.trashroom.com/football-picks--this-week-football-pick/ this week football pick ][ http://www.trashroom.com/discount-drugs--discount-drug-harmon/ discount drug harmon ][ http://www.kitago.com/schmuck--uhren-schmuck/ uhren schmuck ][ http://www.ekatz.org/smoking--mobile-smoking-barbecue/ mobile smoking barbecue ][ http://www.trashroom.com/home-equity-loans--oregon-home-equity-loan/ oregon home equity loan ][ http://www.vinkit.com/trade-show-displays--display-show-stands-trade/ display show stands trade ][ http://www.trashroom.com/football-odds--bowl-college-football-ncaa-odds/ bowl college football ncaa odds ][ http://www.kitago.com/ford-focus--ford-focus-price/ ford focus price ][ http://www.trashroom.com/home-office-furniture--florida-home-office-furniture/ florida home office furniture ][ http://www.kitago.com/mailing-lists--business-free-list-mailing-opportunity/ business free list mailing opportunity ][ http://www.vinkit.com/banks--scotia-bank/ scotia bank ][ http://www.trashroom.com/accept-credit-card--accept-credit-card-over-the-internet/ accept credit card over the internet ]  http://www.gerappa.org/ [ http://www.menspoint.com/date-stamp--custom-date-stamp/ custom date stamp ][ http://www.ekatz.org/credit-after-bankruptcy--after-bankruptcy-credit-restore/ after bankruptcy credit restore ][ http://www.ekatz.org/diazepam--diazepam-feline/ diazepam feline ][ http://www.trashroom.com/zodiac-casino--casino-flash-zodiac/ casino flash zodiac ][ http://www.gerappa.org/tv-stands--cherry-tv-stands/ cherry tv stands ][ http://www.gerappa.org/ins--insurv/ insurv ][ http://www.trashroom.com/payrolls--2004-nhl-team-payrolls/ 2004 nhl team payrolls ][ http://www.menspoint.com/download-soccer-games--download-free-soccer-game/ download free soccer game ][ http://www.vinkit.com/surveillance-cameras--camera-software-surveillance-web/ camera software surveillance web ][ http://www.kitago.com/career--science-career/ science career ][ http://www.menspoint.com/cellular--free-cellular-ringtone/ free cellular ringtone ][ http://www.gerappa.org/free-online-poker--free-online-poker-for-kid/ free online poker for kid ][ http://www.vinkit.com/home-mortgage-calculator--loan-calculator-mortgage-calculator/ loan calculator mortgage calculator ][ http://www.trashroom.com/loan-amortization-calculator--auto-loan-calculator-amortization/ auto loan calculator amortization ][ http://www.vinkit.com/uk-swingers--cheshire-swinger-uk/ cheshire swinger uk ][ http://www.kitago.com/las-vegas-casino--las-vegas-club-casino/ las vegas club casino ][ http://www.ekatz.org/vacation-rental--arizona-vacation-rental/ arizona vacation rental ][ http://www.menspoint.com/pos--retail-pos/ retail pos ][ http://www.vinkit.com/aerobed--raised-aero-bed/ raised aero bed ][ http://www.trashroom.com/massage-therapy-schools--massage-therapy-school-nc/ massage therapy school nc ][ http://www.gerappa.org/versicherungsvergleich--kostenlos-versicherungsvergleich/ kostenlos versicherungsvergleich ][ http://www.vinkit.com/best-credit-card-rate--apply-best-card-credit-rate-search/ apply best card credit rate search ][ http://www.menspoint.com/online-loans--online-car-loan-calculator/ online car loan calculator ][ http://www.kitago.com/sales-training--sales-call-training/ sales call training ][ http://www.trashroom.com/stop-foreclosure--stop-my-foreclosure-conway/ stop my foreclosure conway ][ http://www.kitago.com/credit-card-comparisons--card-comparison-credit-secured/ card comparison credit secured ][ http://www.gerappa.org/cars-loans--car-loan-oakland/ car loan oakland ][ http://www.menspoint.com/time-shares--florida-time-share-resales/ florida time share resales ][ http://www.menspoint.com/poker-chip--texas-holdem-poker-chip-set/ texas holdem poker chip set ][ http://www.trashroom.com/motorbike-insurance--irish-motor-bike-insurance/ irish motor bike insurance ][ http://www.trashroom.com/car-loan-calculator--car-loan-financing-calculator/ car loan financing calculator ][ http://www.trashroom.com/xanax-online--cheapest-xanax-online/ cheapest xanax online ][ http://www.kitago.com/purses--purse-frame/ purse frame ][ http://www.ekatz.org/display-case--memorabilia-display-cases/ memorabilia display cases ][ http://www.gerappa.org/college--community-college/ community college ][ http://www.menspoint.com/cortislim--cortislim-pill/ cortislim pill ][ http://www.menspoint.com/herbs--herb-store/ herb store ][ http://www.kitago.com/name-a-star--name-of-the-north-star/ name of the north star ][ http://www.gerappa.org/firewalls--nat-firewall/ nat firewall ][ http://www.kitago.com/free-online-casino--casino-craps-free-gambling-online/ casino craps free gambling online ][ http://www.menspoint.com/direct-tv-satellite--direct-programming-satallitetv/ direct programming satallitetv ][ http://www.trashroom.com/vicodin-prescription--drug-online-prescription-vicodin/ drug online prescription vicodin ][ http://www.kitago.com/internet-slot--casino-slot-internet/ casino slot internet ][ http://www.gerappa.org/chrome-wheels--nissan-chrome-wheels/ nissan chrome wheels ][ http://www.trashroom.com/short-term-health-insurance--health-insurance-short-term-texas/ health insurance short term texas ][ http://www.vinkit.com/business-cards--massage-business-card/ massage business card ][ http://www.trashroom.com/engagement-rings--design-your-own-engagement-ring/ design your own engagement ring ][ http://www.menspoint.com/business-opportunity-home-based--business-opportunity-home-based-canada/ business opportunity home based canada ][ http://www.vinkit.com/car-financing--used-car-finance-rate/ used car finance rate ][ http://www.trashroom.com/quick-cash-loans--cash-faxing-loan-no-quick/ cash faxing loan no quick ][ http://www.ekatz.org/uk-mortgages--a-mortgage-calculator-in-uk/ a mortgage calculator in uk ][ http://www.menspoint.com/valentine-day--valentine-day-coloring-picture/ valentine day coloring picture ][ http://www.menspoint.com/email-fax--email-to-fax/ email to fax ][ http://www.menspoint.com/inkjet-refill--inkjet-polaroid-refill/ inkjet polaroid refill ][ http://www.vinkit.com/personal-loans-uk--personal-loan-online-uk/ personal loan online uk ][ http://www.ekatz.org/starting-a-business--start-internet-business/ start internet business ][ http://www.ekatz.org/spanish-property--mortgage-for-spanish-properties/ mortgage for spanish properties ][ http://www.trashroom.com/real-estate-license--montana-real-estate-license/ montana real estate license ][ http://www.vinkit.com/drug-treatment-center--center-drug-illinois-treatment/ center drug illinois treatment ][ http://www.gerappa.org/payroll--restaurant-payroll/ restaurant payroll ][ http://www.trashroom.com/generic-cialis--generic-cialis-tadalafil/ generic cialis tadalafil ][ http://www.vinkit.com/trucking-job--kansas-trucking-jobs/ kansas trucking jobs ][ http://www.trashroom.com/ultram-tramadol--hci-tramadol-ultram/ hci tramadol ultram ][ http://www.kitago.com/blackjack--black-jack-card/ black jack card ][ http://www.ekatz.org/machine-tool--grizzly-machine-tool/ grizzly machine tool ][ http://www.trashroom.com/cuisinart--cuisinart-smart-power-spb-7-blender/ cuisinart smart power spb 7 blender ][ http://www.ekatz.org/embassy-suites--embassy-suite-brea/ embassy suite brea ][ http://www.gerappa.org/xango--xango-fruit/ xango fruit ][ http://www.gerappa.org/poker-download--download-game-poker-texas/ download game poker texas ][ http://www.trashroom.com/wood-flooring--flooring-hickory-wood/ flooring hickory wood ][
+
 
 +
== Improving headers for compilation speed ==
 +
 
 +
When a header file changes, any file that includes it is recompiledThis becomes a problem when a given header file is included by other header files, as it leads to a vast header include tree, wherein a small change to a seemingly minor header file causes massive rebuilds of much of the codebase.   
 +
 
 +
Fortunately for us, there are recognized techniques to mitigate this!  Here's what to do:
 +
 
 +
* Find a header that includes several other headers.  For example, the header "bar.h" might have a <code>class Bar</code> with a member of type <code>Foo*</code>, thus it includes "foo.h" to get the definition of that type. You can prune this by using a 'forward declaration', whenever the <code>Foo</code> entity is not itself used, only pointers and/or references to it:
 +
 
 +
  //#include "foo.h"  /* <-- kill the header include! */
 +
class Foo;          /* <-- replace with a forward declaration */
 +
class Bar {
 +
    Foo* _foo;
 +
};
 +
 
 +
Although there are still forward declaration headers in the source tree, those should be avoided in favor of individual forward declarations in .h files as needed. '''The exception is <tt>&lt;2geom/forward.h&gt;</tt>''', due to heavy use of templates in the 2Geom library.
 +
 
 +
(BPF) The [http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.11 C++ FAQ Sheet] explains how to code forward declarations (classes that both need to know about each other); To fully understand why, you should study the [http://www.gotw.ca/publications/mill04.htm Pimpl idiom].
 +
 
 +
== Source formatting ==
 +
 
 +
=== Header ===
 +
 
 +
* Source files should use four spaces as indentation and no tabs. Trailing whitespace should be removed.
 +
* The comment at the top of each file should have the following format. The author information is in a regular multiline comment so that it is omitted in the generated documentation. Author emails can be obfuscated, but should be real addresses.
 +
** Using a Doxygen comments with <tt>@file</tt> at the top should no longer be the normal case. The comments need to document individual classes, subsystems, etc., and not be focused on file structure. Doxygen itself normally will address file-specific needs.
 +
 
 +
/*
 +
  * Authors:
 +
  *  J. God Hacker <ihatepizza@gurus.org>
 +
  *  Ellen Epic <epicwin at email dot com>
 +
  *
 +
  * Copyright (C) 2006-2008 Authors
 +
  * Released under GNU GPL, read the file 'COPYING' for more information
 +
  */
 +
 
 +
Again, note that the comment does not start with "<tt>/**</tt>",. but only with "<tt>/*</tt>"
 +
 
 +
==== @file Command ====
 +
 
 +
* Modern C++ code should avoid global and static variables, functions, enums, etc. Legacy code migrated from C may still contain these, so will require the use of a <tt>@file</tt> command.
 +
* Note that the <tt>@file</tt> command will only be required for files that have non-class non-namespaced globals or statics. As our codebase moves to the more modern C++ practices, use of these will be reduced and removed.
 +
* Legacy files that contain a mix of functions probably warrant use of a <tt>@file</tt> command.
 +
* If feasible, moving statics to anonymous namespaces instead is preferable to adding a <tt>@file</tt> command.
 +
* Any documented entities in namespaces, of local classes, etc., will be processed even if a <tt>@file</tt> command is not present in the source file.
 +
 
 +
An example of a legacy source file using the <tt>@file</tt> command:
 +
 
 +
/**
 +
  * @file
 +
  * Logarithmic time traveling salesman solver.
 +
  */
 +
/*
 +
  * Authors:
 +
  *  J. God Hacker <ihatepizza@gurus.org>
 +
  *  Ellen Epic <epicwin at email dot com>
 +
  *
 +
  * Copyright (C) 2006-2008 Authors
 +
  * Released under GNU GPL, read the file 'COPYING' for more information
 +
  */
 +
 
 +
Note the following:
 +
* The opening doc comment is merely "<tt>/**</tt>" on a line by itself. Keeping the rest to subsequent lines aids legibility and revision tracking.
 +
* The <tt>@file</tt> command is on a line by itself, with nothing following. This is required to allow Doxygen to automatically extract the current filename.
 +
* The short description of the file contents (that follows starting on the line after <tt>@file</tt>) ends with a period. All short (aka "brief") descriptions should end with a period.
 +
* The end of the doc comment and the start of the normal comment (with authors) are on separate lines. Avoid collapsing them to "<tt>*//*</tt>"
 +
 
 +
=== Footer ===
 +
 
 +
* Every source file should have the following Emacs local variable block and Vim modeline at the end:
 +
 
 +
/*
 +
  Local Variables:
 +
  mode:c++
 +
  c-file-style:"stroustrup"
 +
  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
 +
  indent-tabs-mode:nil
 +
  fill-column:99
 +
  End:
 +
*/
 +
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
 +
 
 +
=== Include Statement Style ===
 +
 
 +
* Include style. In-tree includes should use quotes, while system headers should use angle brackets. An exception is 2Geom, which should use angle brackets, though it is local (we are preparing for it to become a standalone library one day). Includes in each group should be sorted alphabetically. The path should be relative to the <tt>src/</tt> directory. If there is a config.h include, it should go at the top and have an <tt>#ifdef</tt> guard. Here is an example:
 +
 
 +
#ifdef HAVE_CONFIG_H
 +
# include "config.h"
 +
#endif
 +
 +
#include <cairo.h>
 +
#include <cstdio>
 +
#include <glib.h>
 +
#include <math.h>
 +
 +
#include "display/cairo-utils.h"
 +
#include "document.h"
 +
#include "sp-use.h"
 +
#include "xml/node.h"
 +
 
 +
== Order of the file ==
 +
 
 +
* Each file should contain the following, in '''precisely''' that order:
 +
** When required for legacy needs, <tt>@file</tt> comment with a short description of the file's contents
 +
** Copyright comment with authors
 +
** Include guard (headers only)
 +
** System includes
 +
** Local includes
 +
** Forward declarations
 +
** Class declarations
 +
** Function declarations
 +
** Global variable declarations (note: global variables should be avoided)
 +
** End of include guard (headers only)
 +
** Emacs local variables block
 +
** Vim modeline
 +
 
 +
== Documentation ==
 +
 
 +
=== Document At Point of Declaration ===
 +
 
 +
* Items should normally be documented at their point of declaration, not definition.
 +
* For classes, namespaces, etc. this usually means to document in the .h file and not in the .cpp file.
 +
** The .h file represents the public API, or promise of functionality.
 +
** Doxygen comments have not been seen to be updated frequently enough to cause compilation issues from the .h files being touched. (Some developers had expressed concern that having comments in .h files would cause more frequent compilations)
 +
** It is easier for developers to read through a .h file for information on a class than going through an entire .cpp or set of .cpp files. Additionally, most modern development IDEs support ease of browsing, referencing, etc.
 +
* For local functions , declaring them at the beginning of the file they are local to and then implementing them later in the file allows a developer to quickly skim a summary of supported functionality. Pairing the doc comments with the initial declaration as opposed to the latter implementation helps legibility.
 +
** Of course, functions local to a single file should no longer be declared <tt>static</tt>, but instead be declared inside an anonymous namespace section in the file.
 +
 
 +
=== Make Comments Meaningful ===
 +
 
 +
* Some documentation is useless, for example "constructor" or "destructor". Such comments mark the entity as documented, when in fact it's not. Remove them.
 +
 
 +
=== @brief Command ===
 +
 
 +
* The <tt>@brief</tt> command comes from the more complex documentation format implemented by Trolltech before Doxygen was created. When the <tt>@brief</tt> command is skipped, Doxygen will use the first sentence (ending with a dot) as the brief description. An alternative is to put the description in a single-line comment. These two techniques can be used to reduce the number of Doxygen commands. In the example below, all three functions will have the same documentation. The first case depends on the variable JAVADOC_AUTOBRIEF being set to true, which is a main setting for Inkscape documentation:
 +
 
 +
/**
 +
  * Something useful.
 +
  * This function does something very useful.
 +
  * Here is its more detailed, longer description.
 +
  */
 +
void useful_function_two();
 +
 
 +
/// Something useful
 +
/**
 +
  * This function does something very useful.
 +
  * Here is its more detailed, longer description.
 +
  */
 +
void useful_function_one();
 +
 
 +
/**
 +
  * @brief Something useful.
 +
  * This function does something very useful.
 +
  * Here is its more detailed, longer description.
 +
  */
 +
void useful_function_three();
 +
 
 +
The use of <tt>@brief</tt> in Inkscape code comments is discouraged as redundant and overly verbose.
 +
 
 +
== Coding style ==
 +
 
 +
* Replace C-style casts with the appropriate C++ casts. You can compile with <tt>-Wold-style-casts</tt> to find them easily.
 +
** <tt>static_cast</tt> when the conversion is obvious, for example a floating point to integer type.
 +
** <tt>const_cast</tt> if the only difference between the types are <tt>const</tt> qualifiers.
 +
** <tt>dynamic_cast</tt> for downcasting to derived class type. Note that this is not needed to upcast to a parent type.
 +
** <tt>reinterpret_cast</tt> if the conversion does not compile with static_cast, for example pointer to integer.
 +
 
 +
Note that <tt>reinterpret_cast&lt;...&gt;(...)</tt> should be the cast of last resort.
 +
 
 +
== Elimination of old utest tests ==
 +
 
 +
It should be double-checked that the old utest tests (also see [[TestSuite-blueprint]] are indeed all obsolete. If there happen to be any left that are not obsolete they should of course be converted to the CxxTest framework (if you don't feel up to it, ask me). Finally, the obsolete files should be removed from the repository and Makefiles, making sure that nothing breaks in the process.
 +
 
 +
[[Category:Developer Documentation]]
 +
[[Category:Help Wanted]]

Latest revision as of 10:05, 6 January 2012

Before embarking on any of those tasks, be sure to contact the developers on the mailing list.

Improving headers for compilation speed

When a header file changes, any file that includes it is recompiled. This becomes a problem when a given header file is included by other header files, as it leads to a vast header include tree, wherein a small change to a seemingly minor header file causes massive rebuilds of much of the codebase.

Fortunately for us, there are recognized techniques to mitigate this! Here's what to do:

  • Find a header that includes several other headers. For example, the header "bar.h" might have a class Bar with a member of type Foo*, thus it includes "foo.h" to get the definition of that type. You can prune this by using a 'forward declaration', whenever the Foo entity is not itself used, only pointers and/or references to it:
//#include "foo.h"  /* <-- kill the header include! */
class Foo;          /* <-- replace with a forward declaration */
class Bar {
    Foo* _foo;
};

Although there are still forward declaration headers in the source tree, those should be avoided in favor of individual forward declarations in .h files as needed. The exception is <2geom/forward.h>, due to heavy use of templates in the 2Geom library.

(BPF) The C++ FAQ Sheet explains how to code forward declarations (classes that both need to know about each other); To fully understand why, you should study the Pimpl idiom.

Source formatting

Header

  • Source files should use four spaces as indentation and no tabs. Trailing whitespace should be removed.
  • The comment at the top of each file should have the following format. The author information is in a regular multiline comment so that it is omitted in the generated documentation. Author emails can be obfuscated, but should be real addresses.
    • Using a Doxygen comments with @file at the top should no longer be the normal case. The comments need to document individual classes, subsystems, etc., and not be focused on file structure. Doxygen itself normally will address file-specific needs.
/*
 * Authors:
 *   J. God Hacker <ihatepizza@gurus.org>
 *   Ellen Epic <epicwin at email dot com>
 *
 * Copyright (C) 2006-2008 Authors
 * Released under GNU GPL, read the file 'COPYING' for more information
 */

Again, note that the comment does not start with "/**",. but only with "/*"

@file Command

  • Modern C++ code should avoid global and static variables, functions, enums, etc. Legacy code migrated from C may still contain these, so will require the use of a @file command.
  • Note that the @file command will only be required for files that have non-class non-namespaced globals or statics. As our codebase moves to the more modern C++ practices, use of these will be reduced and removed.
  • Legacy files that contain a mix of functions probably warrant use of a @file command.
  • If feasible, moving statics to anonymous namespaces instead is preferable to adding a @file command.
  • Any documented entities in namespaces, of local classes, etc., will be processed even if a @file command is not present in the source file.

An example of a legacy source file using the @file command:

/**
 * @file
 * Logarithmic time traveling salesman solver.
 */
/*
 * Authors:
 *   J. God Hacker <ihatepizza@gurus.org>
 *   Ellen Epic <epicwin at email dot com>
 *
 * Copyright (C) 2006-2008 Authors
 * Released under GNU GPL, read the file 'COPYING' for more information
 */

Note the following:

  • The opening doc comment is merely "/**" on a line by itself. Keeping the rest to subsequent lines aids legibility and revision tracking.
  • The @file command is on a line by itself, with nothing following. This is required to allow Doxygen to automatically extract the current filename.
  • The short description of the file contents (that follows starting on the line after @file) ends with a period. All short (aka "brief") descriptions should end with a period.
  • The end of the doc comment and the start of the normal comment (with authors) are on separate lines. Avoid collapsing them to "*//*"

Footer

  • Every source file should have the following Emacs local variable block and Vim modeline at the end:
/*
  Local Variables:
  mode:c++
  c-file-style:"stroustrup"
  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
  indent-tabs-mode:nil
  fill-column:99
  End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :

Include Statement Style

  • Include style. In-tree includes should use quotes, while system headers should use angle brackets. An exception is 2Geom, which should use angle brackets, though it is local (we are preparing for it to become a standalone library one day). Includes in each group should be sorted alphabetically. The path should be relative to the src/ directory. If there is a config.h include, it should go at the top and have an #ifdef guard. Here is an example:
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include <cairo.h>
#include <cstdio>
#include <glib.h>
#include <math.h>

#include "display/cairo-utils.h"
#include "document.h"
#include "sp-use.h"
#include "xml/node.h"

Order of the file

  • Each file should contain the following, in precisely that order:
    • When required for legacy needs, @file comment with a short description of the file's contents
    • Copyright comment with authors
    • Include guard (headers only)
    • System includes
    • Local includes
    • Forward declarations
    • Class declarations
    • Function declarations
    • Global variable declarations (note: global variables should be avoided)
    • End of include guard (headers only)
    • Emacs local variables block
    • Vim modeline

Documentation

Document At Point of Declaration

  • Items should normally be documented at their point of declaration, not definition.
  • For classes, namespaces, etc. this usually means to document in the .h file and not in the .cpp file.
    • The .h file represents the public API, or promise of functionality.
    • Doxygen comments have not been seen to be updated frequently enough to cause compilation issues from the .h files being touched. (Some developers had expressed concern that having comments in .h files would cause more frequent compilations)
    • It is easier for developers to read through a .h file for information on a class than going through an entire .cpp or set of .cpp files. Additionally, most modern development IDEs support ease of browsing, referencing, etc.
  • For local functions , declaring them at the beginning of the file they are local to and then implementing them later in the file allows a developer to quickly skim a summary of supported functionality. Pairing the doc comments with the initial declaration as opposed to the latter implementation helps legibility.
    • Of course, functions local to a single file should no longer be declared static, but instead be declared inside an anonymous namespace section in the file.

Make Comments Meaningful

  • Some documentation is useless, for example "constructor" or "destructor". Such comments mark the entity as documented, when in fact it's not. Remove them.

@brief Command

  • The @brief command comes from the more complex documentation format implemented by Trolltech before Doxygen was created. When the @brief command is skipped, Doxygen will use the first sentence (ending with a dot) as the brief description. An alternative is to put the description in a single-line comment. These two techniques can be used to reduce the number of Doxygen commands. In the example below, all three functions will have the same documentation. The first case depends on the variable JAVADOC_AUTOBRIEF being set to true, which is a main setting for Inkscape documentation:
/**
 * Something useful.
 * This function does something very useful.
 * Here is its more detailed, longer description.
 */
void useful_function_two();
/// Something useful
/**
 * This function does something very useful.
 * Here is its more detailed, longer description.
 */
void useful_function_one();
/**
 * @brief Something useful.
 * This function does something very useful.
 * Here is its more detailed, longer description.
 */
void useful_function_three();

The use of @brief in Inkscape code comments is discouraged as redundant and overly verbose.

Coding style

  • Replace C-style casts with the appropriate C++ casts. You can compile with -Wold-style-casts to find them easily.
    • static_cast when the conversion is obvious, for example a floating point to integer type.
    • const_cast if the only difference between the types are const qualifiers.
    • dynamic_cast for downcasting to derived class type. Note that this is not needed to upcast to a parent type.
    • reinterpret_cast if the conversion does not compile with static_cast, for example pointer to integer.

Note that reinterpret_cast<...>(...) should be the cast of last resort.

Elimination of old utest tests

It should be double-checked that the old utest tests (also see TestSuite-blueprint are indeed all obsolete. If there happen to be any left that are not obsolete they should of course be converted to the CxxTest framework (if you don't feel up to it, ask me). Finally, the obsolete files should be removed from the repository and Makefiles, making sure that nothing breaks in the process.