mbsync(1)

NAME

   mbsync - synchronize IMAP4 and Maildir mailboxes

SYNOPSIS

   mbsync [options ...] {{channel[:box[{,|\n}...]]|group} ...|-a}

DESCRIPTION

   mbsync  is  a  command  line  application which synchronizes mailboxes;
   currently Maildir and IMAP4 mailboxes  are  supported.   New  messages,
   message  deletions  and  flag  changes can be propagated both ways; the
   operation set can be selected in a fine-grained manner.
   Synchronization is based on unique message identifiers  (UIDs),  so  no
   identification  conflicts  can  occur  (unlike  with  some  other  mail
   synchronizers).  OTOH, mbsync is susceptible to  UID  validity  changes
   (that  should  never  happen,  but  see "Compatibility" in the README).
   Synchronization state is kept in one local text file per mailbox  pair;
   these   files   are  protected  against  concurrent  mbsync  processes.
   Mailboxes can be safely modified while mbsync  operates  (see  INHERENT
   PROBLEMS  below  for  a  minor  exception).   Multiple replicas of each
   mailbox can be maintained.

OPTIONS

   -c, --config file
          Read configuration from file.  By default, the configuration  is
          read from ~/.mbsyncrc.

   -a, --all
          Select all configured channels. Any channel/group specifications
          on the command line are ignored.

   -l, --list
          Don't synchronize  anything,  but  list  all  mailboxes  in  the
          selected channels and exit.

   -C[m][s], --create[-master|-slave]
          Override any Create options from the config file. See below.

   -R[m][s], --remove[-master|-slave]
          Override any Remove options from the config file. See below.

   -X[m][s], --expunge[-master|-slave]
          Override any Expunge options from the config file. See below.

   {-n|-N|-d|-f|-0|-F}, {--new|--renew|--delete|--flags|--noop|--full}
   {-L|-H}[n][N][d][f], {--pull|--push}[-new|-renew|-delete|-flags]

          Override any Sync options from the config file. See below.

   -h, --help
          Display a summary of command line options.

   -v, --version
          Display version information.

   -V, --verbose
          Enable verbose mode, which displays what is currently happening.

   -D[C][m][M][n|N][s]],          --debug[-crash|-maildir|-main|-net|-net-
   all|-sync]
          Enable debugging categories:
              C, crash - use built-in crash handler
              m, maildir - print maildir debug info
              M, main - print main debug info
              n, net - print network traffic (protocol only)
              N, net-all - print network traffic (including payloads)
              s, sync - print synchronization debug info
          All categories  except  crash  implictly  enable  verbose  mode.
          Without  category  specification,  all categories except net-all
          are enabled.

   -q, --quiet
          Suppress progress counters (this is implicit  if  stdout  is  no
          TTY,  or  any debugging categories are enabled) and notices.  If
          specified twice, suppress warning messages as well.

CONFIGURATION

   The configuration file is mandatory; mbsync will not  run  without  it.
   Lines  starting  with  a  hash  mark  (#)  are comments and are ignored
   entirely.  Configuration items are keywords followed  by  one  or  more
   arguments;  arguments  containing  spaces  must  be  enclosed in double
   quotes ("), and literal double  quotes  and  backslashes  (\)  must  be
   backslash-escaped.   All  keywords  (including those used as arguments)
   are case-insensitive.  Bash-like home  directory  expansion  using  the
   tilde  (~)  is  supported  in  all options which represent local paths.
   There are  a  few  global  options,  the  rest  applies  to  particular
   sections.  Sections are started by a section keyword and are terminated
   by an empty line or end of file.  Every section defines an object  with
   an identifier unique within that object class.

   There  are  two  basic  object  classes:  Stores  and Channels. A Store
   defines a collection of mailboxes; basically a folder, either local  or
   remote.   A Channel connects two Stores, describing the way the two are
   synchronized.
   There are two auxiliary object classes: Accounts and Groups. An Account
   describes  the connection part of remote Stores, so a server connection
   can be shared between multiple  Stores.  A  Group  aggregates  multiple
   Channels to save typing on the command line.

   File  system  locations (in particular, Path and Inbox) use the Store's
   internal path separators, which may be slashes, periods, etc., or  even
   combinations thereof.
   Mailbox  names,  OTOH,  always use canonical path separators, which are
   Unix-like forward slashes.

   All Stores
   These options can be used in all supported Store types.
   In this context, the term "remote" describes the second Store within  a
   Channel, and not necessarily a remote server.
   The  special mailbox INBOX exists in every Store; its physical location
   in the file system is Store type specific.

   Path path
          The location of the Store in the  (server's)  file  system.   If
          this  is  no  absolute  path,  the reference point is Store type
          specific.   This  string  is  prepended  to  the  mailbox  names
          addressed  in  this  Store,  but is not considered part of them;
          this is important for Patterns in the  Channels  section.   Note
          that  you  must  append a slash if you want to specify an entire
          directory.  (Default: none)

   MaxSize size[k|m][b]
          Messages larger than that  will  not  be  propagated  into  this
          Store.   This  is  useful  for  weeding  out messages with large
          attachments.  K and M can be appended to  the  size  to  specify
          KiBytes  resp.   MeBytes  instead  of  bytes.  B is accepted but
          superfluous.   If  size  is  0,  the  maximum  message  size  is
          unlimited.  (Default: 0)

   MapInbox mailbox
          Create  a  virtual  mailbox (relative to Path) which aliases the
          INBOX. Makes sense in conjunction with Patterns in the  Channels
          section, though with a Maildir slave, you probably want to place
          Inbox under Path instead.  This virtual mailbox does not support
          subfolders.

   Flatten delim
          Flatten  the  hierarchy  within  this  Store by substituting the
          canonical hierarchy delimiter / with delim.  This can be  useful
          when  the  MUA  used  to  access  the  Store provides suboptimal
          handling of hierarchical mailboxes, as is the case with Mutt.  A
          common choice for the delimiter is ..
          Note that flattened sub-folders of the INBOX always end up under
          Path, including the "INBOXdelim" prefix.

   Trash mailbox
          Specifies a mailbox (relative to Path) to copy deleted  messages
          to   prior  to  expunging.   See  RECOMMENDATIONS  and  INHERENT
          PROBLEMS below.  (Default: none)

   TrashNewOnly yes|no
          When trashing, copy only not yet propagated messages. This makes
          sense if the remote Store has a Trash as well (with TrashNewOnly
          no).  (Default: no)

   TrashRemoteNew yes|no
          When  expunging  the  remote  Store,  copy  not  yet  propagated
          messages  to  this  Store's  Trash.  When using this, the remote
          Store does not need an own Trash at all, yet  all  messages  are
          archived.  (Default: no)

   Maildir Stores
   The   reference  point  for  relative  Paths  is  the  current  working
   directory.

   As mbsync needs UIDs, but no standardized UID storage scheme exists for
   Maildir, mbsync supports two schemes, each with its pros and cons.
   The native scheme is stolen from the latest Maildir patches to c-client
   and is therefore compatible with pine. The UID validity is stored in  a
   file  named .uidvalidity; the UIDs are encoded in the file names of the
   messages.
   The alternative scheme is based  on  the  UID  mapping  used  by  isync
   versions  0.8  and  0.9.x. The invariant parts of the file names of the
   messages  are  used  as   keys   into   a   Berkeley   database   named
   .isyncuidmap.db, which holds the UID validity as well.
   The   native   scheme  is  faster,  more  space  efficient,  endianness
   independent and "human readable", but will be disrupted if a message is
   copied from another mailbox without getting a new file name; this would
   result in duplicated UIDs sooner or later, which in turn results  in  a
   UID  validity  change,  making  synchronization  fail.  The alternative
   scheme would fail if a MUA changed a message's  file  name  in  a  part
   mbsync  considers  invariant;  this  would  be interpreted as a message
   deletion and a new message, resulting in unnecessary traffic.
   Mutt is known to work fine with both schemes.
   Use mdconvert to convert mailboxes from one scheme to the other.

   MaildirStore name
          Define the  Maildir  Store  name,  opening  a  section  for  its
          parameters.

   AltMap yes|no
          Use  the  alternative  UID  storage scheme for mailboxes in this
          Store.  This does not affect mailboxes that do  already  have  a
          UID storage scheme; use mdconvert to change it.  (Default: no)

   Inbox path
          The  location of the INBOX. This is not relative to Path, but it
          is allowed to  place  the  INBOX  inside  the  Path.   (Default:
          ~/Maildir)

   InfoDelimiter delim
          The  character  used  to delimit the info field from a message's
          basename.  The Maildir standard defines this to  be  the  colon,
          but   this   is  incompatible  with  DOS/Windows  file  systems.
          (Default: the value of FieldDelimiter)

   IMAP4 Accounts
   IMAPAccount name
          Define the  IMAP4  Account  name,  opening  a  section  for  its
          parameters.

   Host host
          Specify the DNS name or IP address of the IMAP server.
          If Tunnel is used, this setting is needed only if SSLType is not
          None and CertificateFile is not used, in  which  case  the  host
          name is used for certificate subject verification.

   Port port
          Specify  the  TCP port number of the IMAP server.  (Default: 143
          for IMAP, 993 for IMAPS)
          If Tunnel is used, this setting is ignored.

   User username
          Specify the login name on the IMAP server.

   Pass password
          Specify the password for username on the IMAP server.  Note that
          this  option  is  not  required.   If  neither  a password nor a
          password command is specified in the configuration file,  mbsync
          will prompt you for a password.

   PassCmd [+]command
          Specify  a  shell  command  to  obtain  a  password  rather than
          specifying a password directly. This allows you to use  password
          files  and agents.  The command must produce exactly one line on
          stdout; the trailing newline is  optional.   Prepend  +  to  the
          command  to  indicate  that  it  produces  TTY  output  (e.g., a
          decryption password  prompt);  failure  to  do  so  will  merely
          produce messier output.

   Tunnel command
          Specify  a  command to run to establish a connection rather than
          opening a TCP socket.  This allows you to run  an  IMAP  session
          over an SSH tunnel, for example.

   AuthMechs type ...
          The  list  of acceptable authentication mechanisms.  In addition
          to the mechanisms listed in the SASL registry (link below),  the
          legacy IMAP LOGIN mechanism is known.  The wildcard * represents
          all mechanisms that are deemed secure  enough  for  the  current
          SSLType setting.  The actually used mechanism is the most secure
          choice from the intersection of this list, the list supplied  by
          the server, and the installed SASL modules.  (Default: *)

   SSLType {None|STARTTLS|IMAPS}
          Select the connection security/encryption method:
          None  - no security.  This is the default when Tunnel is set, as
          tunnels are usually secure.
          STARTTLS - security is established via  the  STARTTLS  extension
          after connecting the regular IMAP port 143. Most servers support
          this, so it is the default (unless a tunnel is used).
          IMAPS - security is established by starting SSL/TLS  negotiation
          right after connecting the secure IMAP port 993.

   SSLVersions [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]
          Select  the  acceptable  SSL/TLS  versions.   Use  of  SSLv2  is
          strongly discouraged for security reasons, but might be the only
          option  on  some  very  old  servers.  Generally, the newest TLS
          version is recommended, but as this confuses some servers, TLSv1
          is the default.

   SystemCertificates yes|no
          Whether  the  system's  default  root cerificate store should be
          loaded.  (Default: yes)

   CertificateFile path
          File containing additional X.509  certificates  used  to  verify
          server identities. Directly matched peer certificates are always
          trusted, regardless of validity.
          Note that the system's default certificate store is always  used
          (unless  SystemCertificates  is  disabled)  and  should  not  be
          specified here.

   PipelineDepth depth
          Maximum number of IMAP commands which can be  simultaneously  in
          flight.   Setting this to 1 disables pipelining.  This is mostly
          a debugging only option.  (Default: unlimited)

   IMAP Stores
   The reference point for relative Paths is whatever the server likes  it
   to  be;  probably  the  user's  $HOME or $HOME/Mail on that server. The
   location of  INBOX  is  up  to  the  server  as  well  and  is  usually
   irrelevant.

   IMAPStore name
          Define   the  IMAP4  Store  name,  opening  a  section  for  its
          parameters.

   Account account
          Specify which IMAP4 Account  to  use.  Instead  of  defining  an
          Account  and referencing it here, it is also possible to specify
          all the Account options directly in the Store's section  -  this
          makes sense if an Account is used for one Store only anyway.

   UseNamespace yes|no
          Selects  whether  the server's first "personal" NAMESPACE should
          be prefixed to mailbox names. Disabling  this  makes  sense  for
          some  broken IMAP servers.  This option is meaningless if a Path
          was specified.  (Default: yes)

   PathDelimiter delim
          Specify the server's hierarchy delimiter.  (Default: taken  from
          the server's first "personal" NAMESPACE)
          Do  not  abuse  this to re-interpret the hierarchy.  Use Flatten
          instead.

   Channels
   Channel name
          Define the Channel name, opening a section for its parameters.

   {Master|Slave} :store:[mailbox]
          Specify the Master resp. Slave Store to  be  connected  by  this
          Channel.  If Patterns are specified, mailbox is interpreted as a
          prefix which is not matched against the patterns, and  which  is
          not  affected  by mailbox list overrides.  Otherwise, if mailbox
          is omitted, INBOX is assumed.

   Pattern[s] [!]pattern ...
          Instead of synchronizing only one mailbox pair, synchronize  all
          mailboxes  that  match the pattern(s). The mailbox names are the
          same on both Master and  Slave.  Patterns  are  IMAP4  patterns,
          i.e.,  *  matches anything and % matches anything up to the next
          hierarchy delimiter. Prepending !  to  a  pattern  makes  it  an
          exclusion.   Multiple  patterns  can  be  specified  (either  by
          supplying  multiple  arguments  or  by  using  Pattern  multiple
          times); later matches take precedence.
          Note  that  INBOX  is  not matched by wildcards, unless it lives
          under Path.
          The mailbox list selected by Patterns can  be  overridden  by  a
          mailbox  list  in  a channel reference (a Group specification or
          the command line).
          Example: "Patterns % !Trash"

   MaxSize size[k|m][b]
          Analogous to the homonymous option in the  Stores  section,  but
          applies  equally  to  Master  and Slave. Note that this actually
          modifies the Stores, so take care  not  to  provide  conflicting
          settings if you use the Stores in multiple Channels.

   MaxMessages count
          Sets  the  maximum  number  of  messages  to  keep in each Slave
          mailbox.  This is useful for mailboxes where you keep a complete
          archive on the server, but want to mirror only the last messages
          (for instance, for mailing lists).  The messages that  were  the
          first to arrive in the mailbox (independently of the actual date
          of the message)  will  be  deleted  first.   Messages  that  are
          flagged  (marked  as important) and (by default) unread messages
          will not be automatically deleted.  If count is 0,  the  maximum
          number of messages is unlimited (Default: 0).

   ExpireUnread yes|no
          Selects   whether   unread   messages   should  be  affected  by
          MaxMessages.  Normally, unread messages are considered important
          and  thus  never  expired.  This ensures that you never miss new
          messages even after  an  extended  absence.   However,  if  your
          archive  contains  large  amounts  of unread messages by design,
          treating them as important would practically defeat MaxMessages.
          In this case you need to enable this option.  (Default: no).

   Sync {None|[Pull] [Push] [New] [ReNew] [Delete] [Flags]|All}
          Select the synchronization operation(s) to perform:
          Pull - propagate changes from Master to Slave.
          Push - propagate changes from Slave to Master.
          New - propagate newly appeared messages.
          ReNew   -  previously  refused  messages  are  re-evaluated  for
          propagation.  Useful after flagging  affected  messages  in  the
          source Store or enlarging MaxSize in the destination Store.
          Delete  -  propagate  message  deletions.  This  applies only to
          messages that  are  actually  gone,  i.e.,  were  expunged.  The
          affected  messages  in  the  remote  Store are marked as deleted
          only, i.e., they won't be really deleted  until  that  Store  is
          expunged.
          Flags  -  propagate flag changes. Note that Deleted/Trashed is a
          flag as well; this is particularly interesting if you  use  mutt
          with the maildir_trash option.
          All  (--full  on  the command line) - all of the above.  This is
          the global default.
          None (--noop on the command line) -  don't  propagate  anything.
          Useful if you want to expunge only.

          Pull  and Push are direction flags, while New, ReNew, Delete and
          Flags are type flags. The  two  flag  classes  make  up  a  two-
          dimensional  matrix  (a  table).  Its  cells  are the individual
          actions to perform. There are two styles of asserting the cells:
          In the first style, the flags select entire rows/colums  in  the
          matrix.  Only the cells which are selected both horizontally and
          vertically are asserted.  Specifying no flags from  a  class  is
          like  specifying  all  flags  from  this  class.   For  example,
          "Sync Pull New Flags"  will  propagate  new  messages  and  flag
          changes  from  the  Master  to the Slave, "Sync New Delete" will
          propagate  message  arrivals  and  deletions  both   ways,   and
          "Sync Push"  will  propagate  all  changes from the Slave to the
          Master.
          In the second style, direction flags are concatenated with  type
          flags;  every  compound  flag  immediately asserts a cell in the
          matrix.  In  addition  to  at  least  one  compound  flag,   the
          individual  flags  can  be  used  as well, but as opposed to the
          first  style,  they  immediately  assert  all  cells  in   their
          respective           row/column.           For          example,
          "Sync PullNew PullDelete Push" will propagate  message  arrivals
          and  deletions from the Master to the Slave and any changes from
          the Slave to the Master.  Note that it is not allowed to  assert
          a    cell   in   two   ways,   e.g.    "Sync PullNew Pull"   and
          "Sync PullNew Delete Push" induce error messages.

   Create {None|Master|Slave|Both}
          Automatically create missing mailboxes  [on  the  Master/Slave].
          Otherwise print an error message and skip that mailbox pair if a
          mailbox  and  the  corresponding  sync  state  does  not  exist.
          (Global default: None)

   Remove {None|Master|Slave|Both}
          Propagate  mailbox  deletions  [to the Master/Slave].  Otherwise
          print an error message and skip that mailbox pair if  a  mailbox
          does not exist but the corresponding sync state does.
          For  MailDir  mailboxes  it  is  sufficient  to  delete the cur/
          subdirectory to mark them as deleted. This ensures compatibility
          with SyncState *.
          Note that for safety, non-empty mailboxes are never deleted.
          (Global default: None)

   Expunge {None|Master|Slave|Both}
          Permanently remove all messages [on the Master/Slave] marked for
          deletion.  See RECOMMENDATIONS below.  (Global default: None)

   CopyArrivalDate {yes|no}
          Selects whether their arrival time should be propagated together
          with  the  messages.  Enabling this makes sense in order to keep
          the time stamp based message sorting  intact.   Note  that  IMAP
          does not guarantee that the time stamp (termed internal date) is
          actually the arrival time,  but  it  is  usually  close  enough.
          (Default: no)

   Sync,  Create, Remove, Expunge, MaxMessages, and CopyArrivalDate can be
   used before any section for a global effect.  The global  settings  are
   overridden by Channel-specific options, which in turn are overridden by
   command line switches.

   SyncState {*|path}
          Set the location of this Channel's synchronization state  files.
          *  means  that  the  state  should  be  saved  in  a  file named
          .mbsyncstate in the Slave mailbox itself; this has the advantage
          that  you  needn't  to care for the state file if you delete the
          mailbox, but it works only with  Maildir  mailboxes,  obviously.
          Otherwise  this  is  interpreted  as  a string to prepend to the
          Slave mailbox name to make up a complete path.
          This option can be used outside any section for a global effect.
          In  this  case  the  appended string is made up according to the
          pattern    :master:master-box_:slave:slave-box     (see     also
          FieldDelimiter below).
          (Global default: ~/.mbsync/).

   Groups
   Group name [channel[:box[,...]]] ...
          Define  the  Group  name,  opening a section for its parameters.
          Note that even though Groups have an own  namespace,  they  will
          "hide" Channels with the same name on the command line.
          One or more Channels can be specified on the same line.
          If  you supply one or more boxes to a channel, they will be used
          instead of what is specified in  the  Channel's  Patterns.   The
          same can be done on the command line, except that there newlines
          can be used as mailbox name separators as well.

   Channel[s] channel[:box[,...]] ...
          Add the specified channels to the  group.  This  option  can  be
          specified multiple times within a Group.

   Global Options
   FSync yes|no
          Selects   whether   mbsync   performs   forced  flushing,  which
          determines the level of data safety  after  system  crashes  and
          power outages.  Disabling it is reasonably safe for file systems
          which are mounted with data=ordered mode.  Enabling it is a wise
          choice   for   file  systems  mounted  with  data=writeback,  in
          particular  modern  systems  like  ext4,  btrfs  and  xfs.   The
          performance    impact    on    older   file   systems   may   be
          disproportionate.  (Default: yes)

   FieldDelimiter delim
          The character to use to delimit fields in the string appended to
          a  global  SyncState.  mbsync prefers to use the colon, but this
          is incompatible with DOS/Windows file systems.  This  option  is
          meaningless  for  SyncState  if  the  latter  is  *,  obviously.
          However,  it  also  determines  the  default  of  InfoDelimiter.
          (Global default: ; on Windows, : everywhere else)

   BufferLimit size[k|m][b]
          The  per-Channel, per-direction instantaneous memory usage above
          which mbsync will refrain from using more memory. Note that this
          is  no absolute limit, as even a single message can consume more
          memory than this.  (Default: 10M)

CONSOLE OUTPUT

   If mbsync's output is connected to a console, it  will  print  progress
   counters by default. The output will look like this:

       C: 1/2  B: 3/4  M: +13/13 *23/42 #0/0  S: +0/7 *0/0 #0/0

   This  represents  the  cumulative  progress  over  channels, boxes, and
   messages affected on  master  and  slave,  respectively.   The  message
   counts  represent  added  messages,  messages  with  updated flags, and
   trashed messages, respectively.  No attempt is made  to  calculate  the
   totals  in  advance,  so  they  grow  over  time as more information is
   gathered.

RECOMMENDATIONS

   Make sure your IMAP server does not auto-expunge deleted messages -  it
   is  slow,  and  semantically somewhat questionable. Specifically, Gmail
   needs to be configured not to do it.

   By default, mbsync  will  not  delete  any  messages  -  deletions  are
   propagated  by  marking  the  messages  as deleted on the remote store.
   Once you have verified that your setup works, you will  typically  want
   to set Expunge to Both, so that deletions become effective.

   mbsync's  built-in  trash  functionality  relies  on  mbsync  doing the
   expunging of deleted messages. This is  the  case  when  it  propagates
   deletions  of  previously  propagated messages, and the trash is on the
   target store (typically your IMAP server).
   However, when you intend  mbsync  to  trash  messages  which  were  not
   propagated  yet,  the  MUA  must  mark  the messages as deleted without
   expunging them (e.g., Mutt's  maildir_trash  option).  Note  that  most
   messages are propagated a long time before they are deleted, so this is
   a corner case you probably do not  want  to  optimize  for.  This  also
   implies  that the TrashNewOnly and TrashRemoteNew options are typically
   not very useful.

   If your server supports auto-trashing (as Gmail does), it is probably a
   good  idea to rely on that instead of mbsync's trash functionality.  If
   you do that, and intend to synchronize the trash like other  mailboxes,
   you should not use mbsync's Trash option at all.

INHERENT PROBLEMS

   Changes  done  after  mbsync has retrieved the message list will not be
   synchronised until the next time mbsync is invoked.

   Using Trash on IMAP Stores without the UIDPLUS extension  (notably,  M$
   Exchange  up to at least 2010) bears a race condition: messages will be
   lost if they are marked as deleted after the message list was retrieved
   but  before  the  mailbox is expunged.  There is no risk as long as the
   IMAP mailbox is accessed by only one client  (including  mbsync)  at  a
   time.

FILES

   ~/.mbsyncrc
          Default configuration file

   ~/.mbsync/
          Directory containing synchronization state files

SEE ALSO

   mdconvert(1), isync(1), mutt(1), maildir(5)

   Up to date information on mbsync can be found at http://isync.sf.net/

   SASL  mechanisms  are  listed  at http://www.iana.org/assignments/sasl-
   mechanisms/sasl-mechanisms.xhtml

AUTHORS

   Originally written  by  Michael  R.  Elkins,  rewritten  and  currently
   maintained by Oswald Buddenhagen, contributions by Theodore Y. Ts'o.

                              2015 Mar 22                        mbsync(1)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.