An Introduction for Developers

Introduction

GNU Enterprise is a meta-project aimed at developing a complete enterprise level business environment. It will consist of tools to quickly build business applications. Several packages and modules will be available ready for out of the box use or readily available to extend or customize to your needs. There will be templates by industry type so you are only getting the base of what your industry type would use.

Why?

Businesses seeking to move to digital processes often find themselves with limited options. They find themselves choosing between the following options.

Purchase proprietary shrink-wrapped software

This option has many drawbacks which include but are not limited to.

  • The business is forced to adapt their processes to conform to the rigid requirements of the purchased software.

  • A single source for updates and maintenance.

  • Their fate is tied to that specific vendor.

  • Often such packages have high entry costs many small or new businesses can not readily afford.

Pay a consultant to create their software

This solution is better than a shrink-wrapped solution. The software is usually tailored to the exact business needs. It does have a few drawbacks however. The software is tied to a specific consultant or company, usually by copyright, in the same manner as shrink wrapped software. If the consultant closes down their business, their customers can be left without any means of support. If source code is not available the system can't be maintained. If the source code is available, a new consultant must be paid to learn the entire system before maintenance is possible. The unique nature of the system has left the business vulnerable.

Maintain an in-house programming team

This solution is better than paying a consultant if a business can afford the personnel needed to maintain the systems. But hiring only a single programmer leaves a business in the same position as with a consultant. Many smaller companies cannot afford several full-time programmers. The unique nature of the code requires all development and testing to be done in-house. Since the software isn't usually shared outside the business it doesn't get the levels of peer review needed to achieve the highest quality.

None of these solutions provide a business with the security and freedom they deserve. Often businesses find themselves making compromises in their business practices and paying large sums of money to vendors they don't particularly care for simply because they are "locked in" to a specific solution.

It doesn't need to be this way.

Features

Modular System Design

GNU Enterprise objects are defined at application run-time. This allows a system to be easily and rapidly modified by end users without risk of compromising the core system.

A technically savvy business owner can browse a list of modules from a library on the GNU Enterprise site. She can pick various packages and modules that are of interest, install them via a tool like RPM, check out their features, remove the ones she doesn't like, finish up her testing and go live. As new packages and modules become available she can add and remove them as she desires (within reason). She ends up with a system that is exactly to her liking w/o the expense of hiring a consultant to customize the system.

To achieve maximum modularity and be all things to all people within reason, GNUe is looking at the following approach. GNUe will be a set of tools to build business applications. With these tools modules will be built. Modules will be bundled by similar function to create packages. One problem in doing this is the different needs of different industries. A doctor has a very different billing situation than car dealer ship for instance. Therefore, there will be "templates" by vertical industry if need be. The concept is GNUe->Packages->Modules->Components where components can be reused among modules. Modules are bundled by type ex: accounts recievable, accounts payable, general ledger are bundled in accounting package. Then multiple packages make up GNUe. Then each vertical industry can have specific templates if desired to make customization minimal from set up to setup. (Further documentation and flow charts coming on this subject.)

Open Architecture

Every effort has been made to open the GNU Enterprise system to developers and users. CORBA provides a clean interface to the objects that comprise a functional GNU Enterprise system. All data is stored in a relational database system. The database structures are well documented and accessible via standard SQL. XML is used to define forms that are parsed and executed by a wide variety of clients.

Powerful Development Framework

The base distribution of GNU Enterprise will contain several powerful tools. Tools like GNUE Forms, GNUE Reports, GEDI, GEAS and EWOK will allow developers to rapidly develop GNU Enterprise applications.

Consistency

Widespread deployment of GNU Enterprise will allow programmers to become familiar with the core GNU Enterprise components. They should require little time to get up to speed on a specific company's modifications to the code. This frees the programmer from learning the details of a unique system that is useless to them in other jobs. They can spend more time doing what they enjoy, writing code to solve unique problems.

Freedom from Single Source Vendors

A consultant can assure their customer that in the event they were unable to maintain the software it would be easy to find others familiar with the core system. This also provides the business some assurance that the consultant won't hold a monopoly on their systems, that they are free to let others work on their code.

Easy Maintenance

Since modules are used to store alterations to the system. Modifications made by the end site are stored separately from the generic distribution. Updates to the generic system can be applied without effecting local changes. Consultants need not maintain several virtually identical source trees with individual customer alterations, simple modules store all the changes.

Package Library

A person setting up an GNU Enterprise system would have access to growing number of packages for the system. These packages could be specialized for specific areas of business (manufacturing, legal, etc.) and would allow a programmer to produce a fairly specialized system in short period of time then tweak the system to meet the exact needs of the business.

Reuse of Free Software

Every effort has been made to reuse existing code and projects where feasible.

Versioning System

Due to the modular nature of GNU Enterprise care must be taken to ensure that packages are compatible with one another. To ensure this level of compatibility every package and object must register it version level upon installation. This allows other packages and objects to specify which items, and versions of those items, that they are dependent upon.

Best Practices

Because GNUe will be in use in a wide variety of industrys and will have influence from many developers as well as many users best practices will be developed. This allows companies new to the digital age or just forming to see how some well established companies are using technology and to build off their successes if they wish. In the future we see possibility of GNUe user groups as well as GNUe conferences and/or GNUe team showing presence at open source conferences.

Internationalization

GNUe already has representation on development team from Austria, Spain, Belgium, Norway, Finland, Estonia, United States and others. Which guarantees strong support for both foreign currencies, multi-languages (docs and applications) as well as 24/7 developer end user support and close proximity for conference / user group attendance. Something not even large scale ERP products are doing well.

Examples

The best way to understand what GNU Enterprise does is through examples.

High Level Demo

We'll start with a very high level demo which involves the sale of an item from inventory. The sale of this item has caused the inventory levels to drop below the reorder point (in this example there are no parts kept in stock so reorder point is zero)

The entry of the sale into GNU Enterprise would cause the inventory system to review the part.

The inventory levels are too low so either a purchase order could be automatically generated or the purchasing department could be notified with a request for purchase.

Once the order is placed with the vendor the system tracks these tentative parts so that additional sales can be processed with approximated ship dates.

When the parts arrive, their entry into the system alerts the shipping department with a list of orders that can now successfully be shipped. Accounting is notified that the order has been received and vendor payment is acceptable. The delivery efficiency of the vendor is tracked based upon the vendors promised delivery date vs the actual date of product arrival.

The shipment of the parts cause an invoice to be generated of the accounting department that the customer should invoiced.

Payment from the customer closes the order.

Consultants

Consultants can use GNU Enterprise to reduce the time they spend maintaining custom solutions for their customer. In addition they can greatly increase the speed in which they can respond to customer requests.

As an example we'll look at the steps Carl D. Consultant takes to install and customize GNU Enterprise to meet the needs of his customers.

We'll first start at the local car dealership where Carl

  • Installs GNU Enterprise - Core

  • Installs the Car Dealer template(s)/package(s) which were created by some other car dealership. And, in the spirit of sharing uploaded to the GNU Enterprise package(s)/template(s) library. The template(s)/package(s) specifically....

  • Modifies the CRM module included in the GNU Enterprise install to include a field to track a customers favorite type of car.

  • Installs the needed components, modules, and packages to provide an auto maintenance history system to the repair shop.

  • Tweaks the generic inventory module to handle issues specific to automobiles

  • Installs the needed components, modules, and packages to maintain an auto parts counter

  • Installs his custom birthday tracking component. The component specifically....

  • Modifies the CRM module included a field to track a customers date of birth.

  • Installs a component that generates a report of customer's upcoming birthdays. This allows the dealer to send birthday greetings to his prior customers.

  • Installs module(s) to add specific modifications to the system the car dealer requested.

At the local doctors office

  • Installs GNU Enterprise - Core

  • Installs the Medical Facility template(s)/package(s) which he created and maintains for this customer. He has also made these template(s)/package(s) available to others via the GNU Enterprise web site. The template(s)/package(s) specifically...

  • Adds features needed for insurance tracking

  • Adds patient medical records tracking

  • Install pharmacy template, found on GNU Enterprise web site, to maintain the local office's pharmacy. This template specifically....

  • Tweaks inventory module to handle drug expiration

  • Modifies CRM module to check current medical & check for drug interactions

  • Altered his generic medical facility package to include features this customer did not want shared with other users of GNU Enterprise. Features they felt gave them a competitive advantage.

  • Installs his custom birthday tracking component

  • Installs module(s) to add specific modifications to the system the car dealer requested. These modules specifically....

At the local school

  • Installs GNU Enterprise - Core

  • Installs Maintenance template(s)/package(s), which was donated to GNU Enterprise, These template(s)/package(s) specifically....

  • Tracks building maintenance

  • Provides a preventative maintenance system

  • Installs Education template created by the staff at O.P.U (Our Public University) and donated to GNU Enterprise. The template specifically....

  • Tweaks inventory module to deal the students not parts

  • Adds sports event tracking module

  • Installs customizations he developed for the school to handle the schools odd dining system

All the modules above come with modification files for screens, new screen definitions, triggers, fields, objects, functions, etc. He verifies the systems, their screens, completes testing, trains the staff, and gets paid.

Now we release the new improved basic distribution (Now with 50% more bytes in every tarball!)

He simply does something like

rpm -U generic-1.6.8.rpm

at all sites

He runs a few tests, charges the customer the upgrade fee. Or, because he's in and out so quickly his yearly maintenance fees are inexpensive so his customers don't mind subscribing to them.

He's not burning any time merging GNU Enterprise updates into sections of code he had to alter for each business. He's not hand merging his screen changes into the system.

Kathy then releases a new Maintenance template that adds a feature the school has been talking about but would cost more than they care to spend on Carl to create. Carl says, "Tell you what, since you're such a good customer. And I'm such a great guy. We'll get it done for only $$ instead of $$$$". He does a

rpm -U maintenance-2.0.1

tests, trains. Schools happy because they got their feature. Carl's happy because he's made a little money where he would have made none.