Maestro Dev Review

I posted recently that Maestro development was moving from the Tryton framework to ERPNext.

There two perspectives to keep in mind when managing a project. The first is a crisp motivating vision of the goal, the second is the path to goal. The challenge is finding the path that best balances cost, time and quality, taking into account technical and operational risks and constraints. Oh, and did I also say the path needs to changes as new information becomes known, risks become better understood, new skills are learned, team members come and go…

Also, periodically review the individual steps on the path. Are the risks acceptable? Should a step be simplified or re-factored? Are there appropriate contingencies available? Backcasting can also be a useful technique, working backwards from the goal to the current position (Harry Tucker has a great backcasting visual).

Getting back to the Maestro project…

Maestro Platform Iterations

Maestro is now in its fourth platform iteration:

  • Platform 1 – Loosely coupled web apps (WebERP, MantisBT, OpenDocMan)
  • Platform 2 – Full-custom monolithic web app (Yii Framework)
  • Platform 3 – ERP framework (Tryton) with Integrated web apps apps (MantisBT, OpenDocMan)
  • Platform 4 – Single ERP web app (ERPNext)

Platform 1

Platform 1 was a loose integration of three separate web applications. Each application had integration points to the others as appropriate, such as from an Item in WebERP to the control documents for it in OpenDocMan, or from an Issue in Mantis to the Item in WebERP, or related documents in OpenDocMan.

Maestro
|-- WebERP
|-- OpenDocMan (document control)
|-- Mantis (issue management)
\-- Launch portal (simple HTML page)

Development moved to Platform 2 after the initial prototype showed the effort to understand the underlying architectures, data structures, and different coding styles of each application, and to create an overall cohesiveness, would be greater than the effort saved by using separate applications in the first place.

Platform 2

Platform 2 was a full custom web application based on the Yii Framework. A prototype was completed with a rudimentary Parts module (including CSV and PDF export) and Order module, but development moved to Platfrom 3 in March 2014 after departure of a key team member. 

Platform 3

Platform 3 was a throwback to Platform 1 (a collection of loosely coupled applications), but with the Tryton framework (including native desktop client) replacing webERP, and WordPress replacing OpenDocMan. OpenLDAP provided a single point of user management and authentication, a self-contained messaging system was provided with Postfix, Dovecote and SquirrelMail, and WordPress provided a launch portal and document control system.

Maestro development moved away from Tryton in September 2014 after the completed prototype showed the need for both core development as well as a simplified domain-specific web-based user interface, and doing both was  beyond the ability of the project team.

Maestro
|-- Tryton
|-- Desktop Portal (WordPress)
|   |-- Notices (posts)
|   |-- User Manual (pages)
|   \-- Documents (WP Document Revisions)
|-- Issues (Mantis)
|-- Messages (SquirrelMail)
\-- Users (phpLDAPadmin)

Platform 4

In the same way as Platform 3 was a throw-back to Platform 1, Platform 4 is a throw-back to Platform 2 – a single integrated web application. However, instead of a green-field development, Platform 4 is based on ERPNext.

After development moved away from Platform 2, but before starting Platform 3, two web-based ERP systems were evaluated – ERPNext and OpenERP/Odoo. Although both showed promise, Odoo had a significant learning curve for core development that would be needed, and ERPNext was still relatively young and immature. However, over the course of Platform 3 development, ERPNext made such significant progress that it became feasible to use for Platform 4.

Install mdbtools on Centos 7

Maestro depends on mdbtools for extracting part data from a Parts&Vendors database. I have always used mdbtools on FreeBSD (installing the binary package), but recently have needed mdbtools on Centos 7 for use with ERPNext. I read a number of internet posts recommending installing mdbtools from the Fedora EPEL repository but, if mdbtools is still in EPEL, I need to learn more about installing software on Centos/RHEL.

Except for installing a few pre-requisites, install generally followed the mdbtools github README.mdb.

Install pre-requisites

# yum install glib2-devel
# yum install txt2man
# yum install gnome-doc-utils

Install mdbtools

# cd /root/work
# git clone https://github.com/brianb/mdbtools.git mdbtools
# cd mdbtools
# autoreconf -i -f
# ./configure
# make
# make install

Use mdbtools

The mdbtools utilities are installed to /usr/local/bin/

mdb-array
mdb-export
mdb-header
mdb-hexdump
mdb-parsecsv
mdb-prop
mdb-schema
mdb-sql
mdb-tables
mdb-ver

Each utility has its own man page

# man mdb-export

and includes built-in short help

mdb-export --help

Install ERPNext on bare metal Ubuntu

This post is essentially the same as my Install ERPNext on bare metal Centos 7, but using Ubuntu 64b 14.04.1-server. I ran into difficulty installing ERPNext on Centos, and now understand some subtle but critical differences between a DigitalOcean Centos 7 droplet, and a Centos 7 install on bare metal using the Centos Everything-DVD ISO. As a result I’m switching to Ubuntu, which is also supported by setup_frappe.sh.

I’m starting with a Dell Optiplex 755 and the DVD iso file for 64-bit Ubuntu 14.04.1 LTS .

  • Boot into the MEBx BIOS (Ctrl-P instead of F2) and disable Intel ANT ME BIOS Extension (that doesn’t play nice). ThinkWiki has a good article, and besides knowing the default password to get in (admin), you MUST change the password – and it MUST be a strong password
  • install Ubuntu from ubuntu-14.04.1-server-amd64.iso
    • server name (whizzer.local), timezone, and first user
    • disk partitioning – select Guided – use entire disk and set up LVM
    • no automatic updates – automatic updates could be distracting, and it can probably be figured out later
    • collections: OpenSSH server, Mail server, Samba file server
      • mail server configuration type: Local only (The only delivered mail is the mail for local users. There is no network.).
        • Other options: 1) Internet site (mail is sent and received directly using SMTP), 2) Internet with smarthost (mail is received directly using SMTP or by running a utility such as fetchmail. Outgoing mail is sent using a smarthost.), and 3) Satellite system (All mail is sent to another machine, called a ‘smarthost’ for delivery.). I don’t think this will handle having virtual users (instead of system users with system accounts).
      • Postfix Configuration: System mail name: whizzer.local All mail addresses default to here if a host isn’t specified.
      • Create SSL certificate (name: localhost)
  • Reboot!
  • Fix “no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory”
    • http://ubuntuforums.org/showthread.php?t=2214042
  • connect using WinSCP and copy public ssh key to /root/.ssh/, also copy authorized_hosts and id_rsa (openssh), and reboot (don’t know how to stop/start ssh on Ubuntu either).
  • follow Easy Way in ERPNExt frappe bench README.md
  • point browser at the server ip address
    • server produced ERPNext login screen, so it seems the basics are working.
  • Access the server from a browser (port 80), and sign into ERPNext as “Adminstrator” using the password output at the end of the setup_frappe.sh execution.
  • Backup the database after completing the setup wizard.

Compared to Centos, wkhtmltopdf installed correctly, and did not have to be manually installed afterwards.

setup_frappe.sh log

dale@hotstuff:~$ wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
--2014-11-20 03:49:46--  https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 23.235.47.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|23.235.47.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11561 (11K) [text/plain]
Saving to: ‘setup_frappe.sh’

100%[===============================================================================================>] 11,561      --.-K/s   in 0s

2014-11-20 03:49:47 (61.5 MB/s) - ‘setup_frappe.sh’ saved [11561/11561]

dale@hotstuff:~$ sudo bash setup_frappe.sh --setup-production
[sudo] password for dale:
Installing for Ubuntu trusty amd64
In case you encounter an error, you can post on https://discuss.frappe.io

Adding debian mariadb repo
Installing packages for Ubuntu. This might take time...
Installing wkhtmltopdf
Adding frappe user
setup_frappe.sh: line 300: hash: pip-2.7: not found
setup_frappe.sh: line 302: hash: pip2.7: not found
Installing frappe-bench
Setting up first site

Frappe/ERPNext is installed successfully and is running on port 80.
Frappe password: xxxxx
MariaDB root password: xxxxx
Administrator password: xxxxx

The passwords are also stored at ~/frappe_passwords.txt
You can remove this file after making a note of the passwords.
dale@hotstuff:~$ 

Backup database

Maybe…

systemctl status mariadb.service
mysqldump -u root -p --databases site1.local > ~/erpnextbkup/erpnext-1.sql

Restore database

Maybe…

mysql -u root -p site1.local < ~/erpnextbkup/erpnext-1.sql

Communicating with an Open Source Project Community

When the ERPNext project was starting up, I recommended being explicit regarding controlling various rights for the good of the project:

  • source code license
  • source code copyright ownership
  • name and logo trademark control

Seeing the project today, I commend the ERPNext team for their professionalism and being up front and clear about the rights, and will use this post as an excuse to experiment with the ERPNext project’s stated preferences for sharing code snippets and screen shots when posting to the project’s message board.

All very cool, and I really like the message board.

Also, I found out Greenshot, an open-source screenshot application for Windows, will send directly to imgr. Very cool, but I don’t understand how providing this anonymous service benefits imgur, maybe the images will be gone in 24 hours. I’ll check back tomorrow.

ERPNExt README.md file from Github