Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
development_proposals [2007/10/18 10:06] – miker | development_proposals [2010/03/28 18:12] – self serve password reset proposal dbs |
---|
| ====== Potential TODOs awaiting proposals ====== |
| |
| ===== Student summer or co-op projects ===== |
| |
| This wiki page contains project ideas and resources for students and mentors. Candidates who start a project with skills matching the ''Requires'' field will be able to be productive on a given project faster and will probably accomplish more over the course of the project, but project mentors are willing to help you develop those skills (particularly understanding of OpenSRF and Evergreen) if you don't already have them. |
| |
| Don't feel constrained by this list - if you have other project ideas, feel free to let us know on the [[http://libmail.georgialibraries.org/mailman/listinfo/open-ils-dev|mailing list]]. |
| |
| ==== Suggested Projects (in no particular order)==== |
| == Port OpenSRF to the GNU Build System == |
| * **Benefits**: Simplifies the install process and improves portability |
| * **Requires**: Experience with the [[http://en.wikipedia.org/wiki/GNU_build_system|GNU Build System]] |
| * **Explanation**: The current install process is a home-grown process using Make and some local install scripts. Replacing this with the GNU build tools will create a more formalized and well-understood install and configure process. |
| |
| == Create Configuration file editor / generator == |
| * **Benefits**: Simplifies install process |
| * **Requires**: Understanding of the OpenSRF and Evergreen configuration files |
| * **Explanation**: Currently, Evergreen and OpenSRF and their dependencies use a number of configuration files in different locations on the system. This complicates the install process. A single interface for entering settings and having those settings propagate to the various configuration files would improve the install process. |
| |
| == Create one or more system packages for different flavors of Linux == |
| * **Benefits**: Makes it possible to install OpenSRF and/or Evergreen using the standard package management tools for one or more Linux distributions. |
| * **Requires**: The ability to create and test packages in at least one format, or the ability to learn this skill. Learning to create packages will probably take most people a week for the basics, two weeks for more complex packages. Some basic scripting knowledge would help with creating reasonable default configuration files at install time. |
| * **Expalanation**: The current install process requires system administrators to install a mix of native system packages, Perl and Python modules, and locally compiled code. Native system package formats such as [[http://www.ibm.com/developerworks/library/l-rpm1/|.rpm]] (Fedora, Red Hat, SuSE, etc), [[http://www.linuxdevices.com/articles/AT8047723203.html|.deb]] (Debian, Ubuntu), and [[ http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1|ebuilds]] (Gentoo) removes most of the steps involved in the current install process by ensuring that all package dependencies are installed and by automating much of the system-dependent configuration. To successfully complete this project, you may be required to create system packages for the external dependencies that do not currently have system packages available on a given distribution (for example, Perl and Python modules). This is a good thing - it should offer a gentle introduction to system packaging before tackling OpenSRF as a single package, and you might have the opportunity to become a maintainer of that package for that distribution. |
| |
| == Improve Platform Independence == |
| * **Benefits**: Encourages the spread of Evergreen by broadening the set of operating systems the software will run on. |
| * **Requires**: Understanding of the Evergreen installation process and understanding of the development tools available on the destination platform. |
| * **Explanation**: Currently, Linux is the only widely deployed operating system in use with Evergreen. We would like to broaden the scope to include FreeBSD, OpenSolaris, and possibly OS X. Though a full port to Windows is outside the scope of this project, porting a subset of the software to Windows given appropriate Windows expertise is also an option. |
| |
| == Log Analysis Tools == |
| * **Benefits**: Allows for easier reporting and troubleshooting |
| * **Requires**: Understanding of Evergreen log file output and layout as well as a firm grasp on Unix utilities (e.g. grep, cut, etc.) |
| * **Explanation**: Most log parsing is done by hand with ad-hoc scripts. A simple user interface (web or shell-based) to analyze certain transaction and error information in the logs would be a great benefit to administrators who don't wish to build local custom scripts |
| |
| == Development of more explicit error messages and error handling / defensive programming == |
| * **Benefits**: The system should respond in a more expressive manner to both expected and unexpected events. |
| * **Requires**: Understanding of Evergreen components and how they piece together in a running system. |
| * **Explanation**: Many of the existing system messages are esoteric in nature and often only provide a small amount of information to administrators. More expressive error handling would allow for faster resolution of bugs and misconfiguration errors. |
| |
| == Unit tests / Unit testing framework == |
| * **Benefits**: In particular, automated unit tests will speed up the release process by allowing developers to rely on a known set of existing tests instead of building ad-hoc testing scripts or hand testing. |
| * **Requires**: Knowledge of the tested components |
| * **Explanation**: There are 2 general types of unit tests for Evergreen: those which test standalone components and those which test published methods. Standalone component tests have a smaller scope and are generally simpler. Published API tests stress various layers of the system and generally need to be able to accommodate a wider range of responses. |
| |
| == Testing/demo data generation tools == |
| * **Benefits**: Access to an automatically generated set of test data will not only allow for broader, more rigorous testing, it will allow developers to drop and re-create databases for quick development turnaround. |
| * **Requires**: Understanding of Evergreen objects and a basic understanding of how objects interact within a relational database. |
| * **Explanation**: In some regards, this project could be an extension of the unit testing framework. However, it serves the broader purpose of allowing users to quickly generate data for demos and a common dataset for bug verification. |
| |
| == Create a Migration Toolkit for Migrating from one ILS to Evergreen == |
| * **Benefits**: A common toolkit for institutions migrating from the selected ILS to Evergreen |
| * **Requires**: Knowledge of the export processes from the selected ILS, import and policy definition processes for Evergreen. |
| * **Explanation**: All ILSs are different in crucial ways with respect to how the store and export bibliographic, transaction, and policy information. Creating a toolkit for a single ILS will not only provide institutions that use that ILS a migration toolkit, it could be used as the basis for a broader set of migration toolkits. |
| |
| == Create a Ruby/PHP OpenSRF Client Library == |
| * **Benefits**: Additional OpenSRF libraries will allow for easier development of ILS plugins for existing and future Ruby/PHP applications. It also opens the door the general OpenSRF development from the Ruby and PHP communities. |
| * **Requires**: Understanding of OpenSRF |
| * **Explanation**: OpenSRF currently has client libraries in Perl, C, and Python. New libraries generally broaden the scope of OpenSRF, which makes it more applicable in more places, even where Evergreen is not in use. |
| |
| == Create Plugins or Integration Toolkits for Third-party Patron Interfaces (a.k.a. OPACs) == |
| * **Benefits**: Current users of a given system will have the ability to migrate to Evergreen without changing patron interfaces |
| * **Requires**: Understanding of how to access the needed data in Evergreen as well as how to integrate with the chosen interface. |
| * **Explanation**: Third party OPACs including [[http://www.vufind.org/|VuFind]], [[http://about.scriblio.net/|Scriblio]], [[https://rubyforge.org/projects/blacklight/|Blacklight]], etc., offer enhanced search and discovery interfaces for library patrons and typically offer some level of "plug and play" infrastructure. Writing a plugin for a particular interface would allow all Evergreen users to take advantage of the interface. |
| |
| ==== Mentors ==== |
| * Dan Scott: denials at gmail.com |
| * Sally Murphy: error23 at gmail.com |
| * Mike Rylander: mrylander at gmail.com |
| * Bill Erickson: billserickson at gmail.com |
| |
| ==== Resources ==== |
| * Evergreen [[http://open-ils.org/|Home Page]] |
| * Evergreen [[http://svn.open-ils.org/trac/ILS/|Repository]] |
| * OpenSRF [[http://svn.open-ils.org/trac/OpenSRF/|Repository]] |
| * [[http://libmail.georgialibraries.org/mailman/listinfo/open-ils-dev|Open-ILS-Dev mailing list]] |
| * IRC Channel #evergreen at irc.freenode.net |
| * Evergreen and OpenSRF [[http://open-ils.org/downloads.php|Downloads]] |
| * [[http://www.gnome.org/~federico/docs/summer-of-code-mentoring-howto/|Mentor How-To]] |
| |
| ===== Development Proposals under discussion ===== |
| |
| ==== Easing user installation, deployment and maintenance; or Getting FIT ==== |
| * it's long, so see it [[build_install_deploy_FIT|here]] |
| |
| |
| |
| ==== OpenSRF over HTTP in JavaScript ==== |
| * Give browsers the ability to use most of the advanced features of OpenSRF, like stateful sessions and streaming responses. [[opensrf_over_http|Read the proposal here.]] |
| * **update** A Python implementation of the HTTP translator has been developed as well as the OpenSRF Javascript library which takes advantage of the gateway. After the [[http://svn.open-ils.org/trac/OpenSRF/browser/trunk/src/python/osrf/http_translator.py|Python gateway]] is given a good workout, porting it to C will be the next step. |
| |
| ===== Other projects ===== |
| ==== Academic Reserves ==== |
| * [[feature:academic reserves|Request for Comments (RFC)]] by Dan Scott, 2008/07/01 |
| |
| ==== Installation (server) ==== |
| //probably to become the Build/Package/Deploy proposal pending from miker// |
| * "Gentoo ebuild, RPM, and Debian .deb files for installing Evergreen." -- [[sofware_bounties|Software Bounties]] |
| * Eric Lesage creates Gentoo ebuild for 1.0.1 (per [[http://list.georgialibraries.org/pipermail/open-ils-dev/2007-January/000206.html|e-mail to OPEN-ILS-DEV]] ) |
| |
| |
| ==== Notification System ==== |
| * Scratchpad page for [[scratchpad:notification_system|notification system discussion.]] |
| * [[feature:notifications|Notification subsystem design.]] |
| * See [[http://list.georgialibraries.org/pipermail/open-ils-dev/2007-January/000204.html|Bill's post to OPEN-ILS-DEV]]) |
| |
| ==== Patron Records ==== |
| * Ways to speed up loading of patron records for patrons with hundreds+ fine records/etc. --[[http://list.georgialibraries.org/pipermail/open-ils-dev/2007-January/000208.html|discussed on OPEN-ILS-DEV]] |
| |
| |
| ==== Patron Self-registration ==== |
| * Anticipated to be long, so [[scratchpad:patron_self_registration|Look here!]] |
| * mentioned on #OpenILS-Evergreen by Stompro, 7/20/07 |
| ==== Self serve password reset ==== |
| * [[dev:proposal:Self serve password reset]] |
| * Proposal created 2010-03-28 |
| |
| ==== Simple Self Check Client ==== |
| * [[scratchpad:simple_self_check|Notes on the design and usage of a simple self check client.]] |
| * This has been created, was introduced in [[feature_list_1_2_3|version 1.2.3 (August 2008). "Web-based Self-Check kiosk mode"]]. |
| * Code for this feature - http://svn.open-ils.org/trac/ILS/browser/trunk/Open-ILS/web/opac/extras/selfcheck/ |
| * Features: |
| * Patron Login. |
| * Item Checkout. |
| * Item Renewal. |
| * Receipt Printing. |
| * To see Web-based Self-Check Kiosk mode in action go to https://demo.gapines.org/opac/en-US/extras/selfcheck/selfcheck.xml. Login with admin, demo123. |
| |
| ==== Telephone Notification ==== |
| * [[scratchpad:Telephone_Notification|Telephone Notification Discussion]] |