principles.h

Go to the documentation of this file.
00001 /*
00002  * principles.h
00003  *
00004  * Not a real header!  This is just here for Doxygen.  Don't use this header.
00005  */
00006 
00007 /// \ingroup wavepacket_top
00008 /// \defgroup princip_guide Principles and Guidelines
00009 ///
00010 /// General principles and coding guidelines for the Wavepacket family of
00011 /// libraries and programs.
00012 ///
00013 
00014 /// \ingroup princip_guide
00015 /// \defgroup principles General Principles
00016 /// General Principles
00017 ///
00018 /// These are general principles that guide all projects.  Or at least, these
00019 /// are the principles that I adhere to and enforce for my projects:
00020 ///
00021 /// - <b>Security is the top concern.</b>  We respect local policies and
00022 ///     permissions (in particular, we never try to work around them).  We
00023 ///     write defensive code that does not allow people to intentionally or
00024 ///     inadvertently compromise their system through our software.
00025 ///
00026 /// - <b>Our software is a guest on the user's machine.</b>  We ask permission
00027 ///     before doing anything interesting or dangerous.  We leave if asked,
00028 ///     and clean up after ourselves.
00029 ///
00030 /// - <b>We respect privacy.</b>  Our software excels at what it is
00031 ///     advertised to do, and does nothing else.  We take only what personal
00032 ///     information is required to operate (if any), do not move it off the
00033 ///     host computer without explicit permission, and never share it with
00034 ///     third parties ever.
00035 ///
00036 /// - <b>We are stable.</b>  Our software can run continuously for weeks
00037 ///     or months or years and not crash due to leaks or other problems.
00038 ///     We handle invalid inputs and behaviors gracefully.
00039 ///  
00040 /// - <b>We are fast and frugal.</b>  Every bit of software is profiled and
00041 ///     timed.  We use the minimum resources required to do the job, and do
00042 ///     it fast.
00043 ///
00044 /// For security tips, see the SANS Top 25 Most Dangerous Programming Errors:
00045 /// http://www.sans.org/top25errors/
00046 ///