Information for Developers:

0. Overview
1. Resources
2. Packaging
3. Contacts
4. License

------------------------
0. Overview
------------------------
OWFS is a set of packages for using 1-wire devices
on a 1-wire bus under linux and other unix-like systems.

The focus of these packages is a simple interface to the
1-wire bus. OWFS should be simple and stable rather than
comprehensive.

The main design feature of OWFS is that all access to the 1-Wire
bus is based on a simple naming scheme. Little state information
is kept. The most obvious implementations are a filesystem
(where filenames correspond to 1-wire device properties) and
a web server (where URLs correspond to 1-wire device properties).

OWLIB is the library that provides most of the low-level
function of the system. It talks directly to the (serial)
port to the 1-wire bus master and through that to the devices.
1-wire protocol, error handling, and persistent storage is all
handled in OWLIB.
DEVELOPERS can extend OWLIB to cover other devices.
  Choose a similar chip to base your implementation.
  Copy the src/c/.c and src/include/.h files, changing the names.
  Add to src/c/Makefile.am and src/include/Makefile.am
  Add to src/include/ow_devices.h
  Add to /src/c/owlib.c
  That's all that's needed, except perhaps updating the documentation in ow_table.html.

OWFS is the filesystem implementation of OWLIB. It uses
FUSE (http://www.sf.net/projects/fuse) to present the
filesystem in user space. You can write prgrams that access
this filesystem.

OWHTTP is a webserver implemtation of OWFS. It is a very simple
server, and shows information quite simply. Indeed, OWHTTPD
knows nothing of the individual 1-wire devices. All display is
based solely on the property table in OWLIB. This means that
no modification of OWHTTPD needs to be made when new devices
or properties are created.

------------------------
1. Resources
------------------------
1-Wire information is well documented at
http://www.ibutton.com

Developer mailing list (quite active):
http://lists.sf.net/lists/listinfo/owfs-developers

OWFS website has design information:
http://www.owfs.org Especially under the Advanced menu

------------------------
2. Packaging
------------------------
Each component is separately packaged (OWFS, OWLIB, OWHTTPD,
MAISON, OWAPI, etc)

Vadim Tkachenko is the main designer of the packaging structure
and code. We follow standard unix design with

  Source
Standard: xxx.tar.gz
  ./bootstrap ; ./configure ; make ; make install

or

RPM Building -- directory locations:
  RPM packages can be made without being root.
  $HOME/.rpmmacros will be used, if it exists, else created.
  $HOME/.rpm is the default target directory, specifically:
   $HOME/.rpm/RPMS/i386 for binary and
   $HOME/.rpm/SRPMS for source rpm

Note from Vadim: Caveat emptor: if $HOME/.rpmmacros exists, but doesn't
contain usable configuration, too bad. I'm not going to bother to fix
that - too many opportunities to screw up.

------------------------
3. Contacts
------------------------
Paul Alfille (paul.alfille@gmail.com)
OWFS sourceforge site (http://www.owfs.org)

------------------------
4. License
------------------------
Mostly GPL. Some of the design and device details come from
Dallas Semi (Maxim) Public Domain Kit, which has no restrictions
beyond not suing them.

Most of the actual C code here was written by Paul Alfille (me).
I personally release all my contributions as public domain, but
cannot assure you that other portions are not GPL-derived.
