About Rattail / FAQ
This page aims to answer some basic questions regarding Rattail.
What is Rattail?
Rattail is a collection of software, largely written in Python, which aims to provide a starting point for custom applications, built for individual retailers.
It is assumed that a retailer already has a POS system, and perhaps also an accounting, purchasing, inventory system etc. Rattail then provides a framework for a retailer-specific system(s) which "fills in the blanks" and adds custom features as required by the retailer.
To this end, Rattail offers a web UI and various other components, some of which are more or less usable out of the box, and some of which require extending via custom code. Rattail also provides code and patterns for integrating with various POS and other systems. In all cases the Rattail code tries to be structured well, with simplicity and customization in mind.
But note that depending on context, the term "Rattail" may (also) refer to any of:
- Rattail Project (see next question)
- overall collection of software provided by Rattail Project (see above text)
- any individual software component provided by Rattail Project
specifically, the rattail Python package
- any individual "system" which is based on Rattail; software or database thereof
What is the Rattail Project?
There isn't really a "Rattail Project" in any official capacity. Where encountered, this term refers to the public project and community surrounding the collection of Rattail software - in particular, what is available at the rattailproject.org website.
Why would someone use Rattail?
Presumably the only reason anyone would use Rattail, is to supplement (though typically not replace) their existing POS and other systems.
Rattail does not aim to provide a "replacement" for any type of system, per se. However it's often the case that the POS and other systems do not quite deliver all the functionality required by the retailer. Sometimes the POS (etc.) software vendor will be able to customize their system for the retailer's needs, and sometimes it simply is not possible (or financially / politically / temporally feasible) for the desired feature(s) to be added within the existing system(s).
In some cases then, the desired feature(s) may be provided by Rattail. This generally requires some custom system integration(s) for the sake of data flow, as well as the logic for the feature itself. One such example might be a customer order system which allows employees to manage/track the lifecycle of customer-placed orders. Typically in this scenario Rattail would import customer and product data from the POS system, but the customer order data would be stored and maintained within Rattail. But that is just one of a theoretically-infinite number of things you could do with Rattail; the whole point is for Rattail to provide a framework for a custom system designed specifically for the needs of an individual retailer.
What can Rattail do?
Since Rattail is meant only to provide a framework, as opposed to an "out of the box" system, just about anything you want it to do will require some level of customization, whether that's with the config or code. This means that Rattail simultaneously can "do" very little without being controlled in some way by a sysadmin and/or developer, but at the same time (hopefully) offers tools with which the sysadmin/developer may do quite a lot, i.e. by defining their own system.
Here are some conceptual things which Rattail provides or otherwise can do:
- common database(s) with extensible schema
- data batches (whatever that means to you)
- data import / export framework (bulk / en-masse)
- data sync framework (real-time, single-record-oriented)
- email bouncer daemon (process email bounces)
- email sending (config / templates)
- file monitors (arbitrary processing of incoming files)
- web UI (the world is your oyster...)
See also the Overview page.
Where can I run Rattail software?
Good question. First and foremost, the current generation of Rattail software is meant to run on the retailer's internal network only. So far the Rattail code has not received a security audit of any kind, so running on a publicly available server is not recommended.
A second point is that Linux servers have received the most testing, by far. Really the only component which has seen production use on Windows is the Rattail File Monitor service (though that has proven to work well). Theoretically the primary Rattail server could run on Windows as well, but this has yet to be tested in practice.
Finally, some Rattail software is built to run natively on various handheld devices, e.g. the Motorola MC9090-G. And since the typical setup will involve a Rattail web server, one can generally access (portions of) the website from any desktop or mobile (handheld/phone/tablet) computer.
Why is Rattail only a framework? Why not provide a POS system?
It is the author's stance that the retail world already has "enough" POS (and accounting, etc.) systems, but to a very large degree, they all "fail" when it comes to proper extensibility and customization. Rattail's focus is entirely on the customization side, since that is what is seen as lacking from the available options. Perhaps one day the project will grow to include a POS system of sorts, but that is not yet a goal.
When/where did the Rattail Project originate?
The project was conceived in early 2010 by Lance Edgar, while working at MaMa Jean's Natural Market in Springfield, Missouri. Much of the work has also involved Sacramento Natural Foods Co-op in Sacramento, California. The first commit to the (first generation of the) 'rattail' Python package occurred on Feb 13, 2010.
Ironically the project did begin with the intention of creating a new POS, but since a back-end was needed first, effort shifted to that side of things. Ultimately a niche was found in that space and the rest is history.
What kind of name is Rattail anyway?
The name is meant to be a corruption of the word "retail". It is unfortunate that "rattail" may conjure images of rats (which are no friend of retailers - generally speaking), or perhaps the infamous haircut etc. The project's semi-official mascot is the rattail fish; specifically the Hymenocephalus italicus.
When the project first began, the author wanted a name which was effectively unique within the software ecosystem at large, but otherwise did not want to spend much time on the name. The name "Rattail" came up rather quickly, and was settled upon just as quickly...for better or worse.