NOTICE.txt - Roller copyright notices and credits


COPYRIGHT NOTICES

This product includes:

* Snippets of code from the Blojsom blog server
    Copyright 2003 David A. Czarnecki & Mark Lussier. All rights reserved.

* Snippets of code from the Pebble blog server
    Copyright 2003 Simon Brown, All rights reserved.

* Code written by Sun Microsystems, Inc. 
    Copyright 2009 Sun Microsystems, Inc.

* Code written by Dave Johnson for RSS and Atom in Action
    Copyright 2005 David M Johnson (For RSS and Atom In Action)

* The Xinha WYSIWYG editor, which includes HTMLArea
    htmlArea License (based on BSD license)
    Copyright (c) 2002-2004, interactivetools.com, inc.
    Copyright (c) 2003-2004 dynarch.com
    All rights reserved.
    http://trac.xinha.org/wiki/Licence
    
* Snippets of code from Spring Mobile
    Copyright (c) 2010-2014 Pivotal, Inc. All Rights Reserved. 

OTHER NOTICES

* Roller includes icons by Mark James (http://www.famfamfam.com/lab/icons)

* Roller uses JavaMail
     COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
     Copyright (c) 1997-2011 Oracle and/or its affiliates. All rights reserved.
     https://glassfish.java.net/public/CDDL+GPL_1_1.html

CREDITS

Roller committers (in chronological order): 

David M Johnson
Lance Lanvandowska (emeritus)
Matt Raible 
Mindaguas Idzelis (emeritus)
Jaap Van Der Molen (emeritus)
Anil Gangolli
Henri Yandell (emeritus)
Allen Gilliland (emeritus)
Elias Torres (emeritus)
Matt Schmidt (emeritus)
Jeff Blattman (emeritus)
Craig Russell
Greg Huber
Ganesh Mathrerootham (emeritus)
Shelan Perera (emeritus)
Glen Mazza (emeritus)
Gaurav Saini
