May 26 2008

ZenCart: Develop an Advanced Plugin Without Overwriting Core Files

At Activo, Inc. we have a few products that integrate between ZenCart and other systems. Recently, we went through the exercise of rewriting our Activo ZenCart POS (RunIt) Integration plugin so it will not require overwriting any core files. It took some time to read and research the ZenCart’s best practices and to follow the documentation, however once we learned what is available and how to use it, converting the code was a breeze. Our previous version of the plugin included already some usage of the flexibility of ZenCart but to complete the abstraction we needed to use the initSystem and the Observer Class.

Making sure that your plugin does not override any other core files or doesn’t require tweaking any core files is important for several reasons. First, overriding core files prevents smooth upgrades - it doesn’t matter how small of a change you introduced once upgraded you will always have to reintroduce the change. Second, a plugin that does not override core files have better chances (95%+) that it will interact smoothly with other non-obtrusive plugins. Third, respecting the platform’s API extends the life of your plugin over several versions of the platform that it plugins to. The following four different methods or subsystems are available for writing efficient and non obtrusive plugins within ZenCart:

Template Override Mechanism

This is the most common way of modifying your own shopping cart and making it stand out from other ZenCart systems. I believe the template override system was introduced right after ZenCart was span off of osCommerce. While, the current templating system is not my favorite (Joomla CMS has a much better template system), it does introduce all the flexibility that one needs in order to generate a custom template in ZenCart. At Activo, we have developed several shopping carts that do not resemble a typical ZenCart site. Here is how:

  • look under the /includes/templates folder - you will find the two templates that ship with every ZenCart: ‘default_template’ and ‘classic’. To add your own template, create a new folder try to use related name to your site or store and make sure to follow linux web folder naming conventions as this folder will be used for every CSS, Image, or Javascript files on your site.
  • Add the description file to your newly created template folder. This file will allow some information to be displayed in the admin area of ZenCart under Admin > Tools > Templates.
  • You probably want to add a jpeg or gif screenshot image of your template front end, however this is optional. If you do, don’t forget to place it in /includes/templates/<Your Template Folder>/images and put the name of the file inside the ‘template_info.php’ file in the ‘$template_screenshot’ variable.
  • At this point you have a template that will display everything exactly as the default_template because each file that cannot be found under your newly created template folder, ZenCart will look for the same file under the ‘default_template’ folder. So, to custromize just copy one file at a time from the default_template folder and begin customizing.

Note there is a lot more to this templating system than the files that you can override under the custom template folder. This will require its own article altogether.

‘extra’ Files Automatic Inclusion

If you spend enough time looking around the ZenCart folder, you will find a few folders that start with the words ‘extra_’. Any PHP files under these will run through execution before any page loads. The main purpose of these folders however, is to include definitions or init values necessary for some modules or components that you install or that you are writing. Since these folders run before anything ‘interesting’ happens with ZenCart, it won’t help to run scripts here. Similarly you will find ‘extra_*’ folders under the /admin/includes and some additional all around the site with more specific purposes, here is the full list with a small description for each one:

  • /admin/includes/boxes/extra_boxes - Extra submenu items for anything but the first column of the admin menu.
  • /admin/includes/extra_configures - Configurations files for admin panel plugins.
  • /admin/includes/extra_datafiles - Data files and data file definitions for the admin panel plugins.
  • /admin/includes/functions/extra_functions - Additional function files. These functions will be declared globally in the admin panel and can be used form your plugins.
  • /includes/extra_cart_actions - Custom shopping cart actions. Special logic to the shopping cart.
  • /includes/extra_configures - Configuration files which will be included in the front end.
  • /includes/extra_datafiles - Data files and data file definitions for the front end plugins.
  • /includes/functions/extra_functions - Additional function files. These functions will be declared globally in the front end and can be used form your plugins.

initSystem

The initSystem of ZenCart is an extendable system that allows programmers to define what happens on initialization while remaining within the ZenCart framework. In simple words: it lets a programmer set your plugin environment in any way, shape, or form without rewriting the ‘application_top.php’ file. From the wiki page directly:

The term initSystem, apart from being a tag used to group certain PHP files together in the new documentation, is meant to embrace all of those files that are automatically included/initialised before any ‘command’ scripts can be run.

Zen Cartâ„¢ uses a (non Object Oriented) page controller pattern to decide the scripts to run, based on HTTP_GET parameters. The most important of these is the ‘main_page’ HTTP_GET parameter. Depending on that parameter, a command script is then run. Each commmand script resides in a directory in /includes/modules/pages.

The essence of how to use it is well described in the wiki page. What’s nice here is that ZenCart’s own internals make use of this system and you can see it under the ‘init_includes’ folder. It is fairly easy to add your own init script files and extend ZenCart to fit your needs. Make sure to read all of the documentation on the wiki page since there are some easy-to-overlook pitfalls like file name conventions and the order of which things happen in this system.

Observer Class

The Observer Class system of ZenCart is a sophisticated way to avoid core hacks in common places. It is a design pattern that is being used a lot in operating systems, and GUI design. It introduces a notion of events. A set of global events is declared throughout the ZenCart system and you can define your own logic or set of tasks that can be invoked by attaching your class to a specific event or a set of events. The list of events is pretty vast with the latest version of ZenCart (ver 1.3.8a) and can be seen at the wiki page for this system.

Conclusion

The above four methods of customizing and extending ZenCart is all that a good programmer needs in order to develop a robust, scalable, modular, and secure shopping cart website. These systems do not exist in osCommerce or any other open source shopping cart systems out there, at least not at the same level of maturity.

Enjoy!

Resources:

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

One response so far

Apr 13 2008

About Linux Distros: Ubuntu and CentOS

A few weeks ago, we setup a new production LAMP server to host a few of our client’s sites, medium size eCommerce websites. I wanted to share our experience as we came across the three big (and free) Linux distributions while we evaluated and setup the machines. We have previously setup Ubuntu Server 7.04 for our development and staging environment while researching the related family of North American Linux distributions: RedHat, Fedora and CentOS.

CentOS vs Ubuntu Install Screenshot

I’ll start with the positive: in the last few years Linux distributions in general have become main stream OS and most of the installation process is user friendly. Almost each distro offers the ’server’ edition of the OS which comes mostly configured with what a production LAMP server needs to have installed already. The installation packages are clearly labeled for i386 or x64 bit, and most even offer a net install which in CentOS case only requires downloading about 7MB of ISO file and the rest is done on the fly.

Now, let’s delve into the differences that affected our decisions, labeled according to key points and in order of importance to us:

Setup Efficiency: ROI and Learning Curve

I had the experience for setting up both Ubuntu server and CentOS server editions on two different machines. Both machines had similar configurations of two 500GB harddrives mirrored in hardware Raid1 with a 3ware card, and Intel Pro dual NIC. The rest of the hardware setup is pretty much the standard Intel based processors. Both Ubuntu and CentOS had no problem in recognizing all the hardware on the machines and the setup process went pretty smoothly. The differences began showing after the initial setup: while CentOS shows an additional very helpful setup (NIC assignments, firewall, and services setup) Ubuntu had no such thing and showed the login prompt right after boot. What I found surprising is that Ubuntu required additional steps in order to download and install SSH using aptitude - if one chooses a server edition, shouldn’t it be setup for you by default?

Although aptitude is a great package management software, I have found that the server version of Ubuntu is just not mature enough or simply chooses the minimalistic approach which doesn’t fit my understanding of a server distro. Many of the tasks that were performed by CentOS by default or had options for that during the install were missing in Ubuntu. At the end of the day, setting up Ubuntu took days while CentOS took hours. Did I say ROI? CentOS is the clear winner.

Package Management Systems

Ubuntu prides itself on apt-get and aptitude which builds itself on top of the debian package management system while CentOS, Fedora and RedHat, use the rpm and yum package management systems. After using all systems I can clearly say that I favor the yum and rpm package management systems.

First, with apt-get/apt-cache/aptitude I had to constantly refer back to the documentation on Ubuntu’s site and I still cannot remember which one do I use for searching, installing, upgrading, describing, or removing packages - do we really need the separation? With both yum and rpm simply provide a separate option and you are good to go, all the information is flowing into the terminal and it took me only one glance of ‘man yum’ to understand what and where.

Second, in the particular case of apache, vhosts, and extensinos, aptitude allows flexibility at the price of re-arranging the apache.conf and vhosts.conf into a collection of files and folders. Yum does a similar thing as well, however I still found yum’s method to keep the original httpd.conf mostly intact which allowed my familiarity with the basic apache configuration skill to take over and finalize install in no time. In my opinion, the deviation from the standard has no benefit whatsoever. The price of flexibility comes over familiarity but yet yum had the upper hand and ease of use.

Third, setting up a package that requires dependencies is equally good in both systems: they both do a very good job of finding the dependencies, looking their download sources, installing and setting it all up. However, I did find that yum had the best reporting system and after it gathered all the information it showed a useful status report while asking permission to proceed - this is valuable for sys admins and it does save time. Once more, yum feels like a more mature package management system.

Production OS? Stability vs Cutting Edge

Here is where I wanted to introduce a bit of the feeling we all shared after setting it up, plus the feeling of some colleagues of mine who I consider to be Linux Admin Gurus. At the end of the day, when all is setup and configured, the feeling from the CentOS system was much more secure and I knew exactly what is installed and what is not. Conversely, Ubuntu server did not give me that worm fuzzy feeling that ‘all is good’ and if I needed to make a change, I would have to refer to documentation first before I touch the server.

When I ask some Linux Guru colleages who manage production linux clusters on a regular basis, they all point to CentOS or RedHat due to stability and performance record. In other words, you won’t get the latest cutting edge packages like Ubuntu or Fedora - but it is guaranteed to be much less flawed.

Conclusion

The bottom line is that distro preference is a personal decision. Personal to the individual who administers the systems and personal to the organization. We’ve chosen CentOS over Ubuntu, Fedora, and RedHat. The only option I see that might change is adopting RedHat due to the technical support that is offered for a fee. Hands down, CentOS provided the fastest configuration time, lowest learning curve, better ROI, superior package management system, and a good fuzzy feeling of stability. Thanks to CentOS, we can get back to our main passion: Web Development…

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

9 responses so far

Mar 25 2008

Free Open Source ICO File Format for Photoshop

Once in a blue moon, a web developer will need to format or re-work the favicon for the website they are working on. What are the alternatives? Download a shareware from download.com. Any of those applications will need installation. Most people start complaining within a month or even a week if they haven’t purchased a license. I always try to avoid such ad-hoc installations, because you never know what else you might be installing on your machine. In other words, it’s not safe or stable.
open source file format plugin for Photoshop
A nice, free, and open source alternative is the open source file format plugin for Photoshop. This little plug-in works on Mac, PC, and even VISTA platforms. It supports Photoshop versions up to CS2. If you have Photoshop installed on your machine, all you have to do is download the zip, and copy the plugin (1 file) into the right folder. On my laptop the path to the folder was:
C:\Program Files\Adobe\Adobe Photoshop CS2\Plug-Ins\File Formats

Reopen your Photoshop and you are done! drag and drop the ico file or save your image as (use “Save As…”) and choose the ICO file format.

If editing icons were a bit easier than playing with pixels. On a side note, what happened to the transparency with icons? That’s a question for another day..

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

One response so far

Mar 17 2008

3 Pitfalls to Avoid for a Faster Ektron CMS400 Website

Server performance is one of the most important functions of websites today. Users expect immediate response when clicking around your site. Even a 3.5 seconds delay may send them somewhere else. Also,  search engine crawlers (like Google) will rank you lower as a result of high latency. Hence, it is not only important to practice a faster website delivery, it’s a necessity. Recently, we have assisted our clients with server performance, which we supported using Ektron CMS400 v7.0.4. Here are the three main server performances we have noted after testing and tracking down the cause of website delays by using the Trace technique in .NET:

1. Avoid XML/XSLT Tranformations for Controls Output

After researching the cause of a huge latency greater than 2 seconds on every page refresh, we have discovered that about 50% of the latency was during the Page_Load occurrence. A more thorough research revealed that the 50% in delay was occurring during the XSLT transformations of all the controls on the page.
By caching these controls, (this solution is only partial and not recommended), and changing the way controls are rendered onto the page, we were able to reduce this latency to less than half. Therefore, we recommend building your Ektron site with the basic Ektron controls, and if you need a special way to present the information, use the code behind to generate a display of the data while you gather the data through the Ektron API and process the data programmatically. In other words, avoid XSLT altogether.

2. Make Use of the Flex Menu Ektron Control

Most of the Ektron sites that we’ve had the chance to work on were structured similarly. The main menu was a set of multi-level menus, which are all rendered by a style-specific XSLT. In some cases, before running through the XSLT, a script was passing through the menu items to find the one that needed to be ’selected’.
Why should we reinvent the wheel?
If you read Ektron’s documentation, you will find a few menu controls that can be very handy: DHTMLMenu, Menu, SmartMenu, and FlexMenu. Each one has its advantages and disadvantages. In short about each one:

  • DHTMLMenu: My least favorite. Uses too much JavaScript and doesn’t render nicely for SEO
  • Menu: The simplest one to use for basic menu systems
  • SmartMenu: I like this menu because it’s a styled and nested unordered list. It can also support section 508 and highlights the selected menu item by a client side script, which is a lot more performance friendly
  • FlexMenu: Our tests indicate that this menu control is the fastest if you have a sophisticated XSLT. It seems like Ektron simply provided a flexible menu control specifically for XML transformations.

We recommend the use of the SmartMenu, and if you insist in using XSLT to display a menu, use the FlexMenu as the alternative.

3. Make Use of the .NET Caching Mechanism

A simple thing for developers to set, isn’t it? Well, you can’t imagine how many sites we’ve seen without any caching beyond what the default settings allow. There is so much more to cache, it is almost a crime not to make use of it in our technology-driven age.

Ultimately, the above lists are just a few main performance issues that we have found with many Ektron sites. The items above alone can improve the site’s performances by up to 50%. However, this list is far from complete by any means. Hardware, Paging, Deadlocks, Server Environment, and even Bandwidth need to all be reviewed in order to improve performances.

Fast Surfing!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

2 responses so far

Mar 10 2008

10 Key Search Engine Optimization Items - Feeding the Spiders

Most of today’s internet traffic originates with a search. It’s no secret that most of the traffic that originates  comes from Google. Hence, when you start analyzing and tweaking your site so you will get more traffic, you target Google’s policies on improved rankings.

Google looks at the basic HTML page from a standards point of view. In other words, Google’s crawler/spider tries to identify key information that is labeled and described correctly. Search engine spiders appreciate the extra information and consider well labeled and well described information extra ‘tasty’. The following are key items to consider when building any web site in todays search engine centric world.

Spider Web

1. Search Engine Friendly URLs (SEFs)

Try to make use of a good folder and file naming structure. The folder should describe the category or section of the site and the file name should summarize in a few words (typically 2-5 words) the subject of the page. Today, many websites are database driven either eCommerce or Content Management Systems (CMS), however, any respected system has a way to make sure that the URLs are self describing and conform to the site’s content logic. Make use of the ReWrite URL module for Apache or .NET’s URL aliasing mechanism. Additionally, many content management systems like Ektron CMS400, Joomla CMS, SiteCore, and SiteFinity allow the content editor to define the page URL or setup an automatic rule to generate the page URL when published.

2. Page Titles - the <title> html tag

The second place that the crawler/spider will look for additional information about the page will be in the page title. Similar to the SEF, we recommend using a reverse hierarchy of the page with respect to its section and category. Something like the following would work great:
{Page Subject} - {Section} - {Site Name} - {Site Slogan}
If the Page Title matches the SEF - even better!

3. Meta Tags - the description and the keywords

Yes, it is true that search engines do not rely solely on these hidden pieces of information anymore. However, it is noticeable that sites with well written meta tags has an advantage over sites that disregard these tags completely. The key points are a short list of keywords for the page (not for the site!). Typically, you should have 2-5 main keywords for the web page. Ideally, each web page has its own dedicated keywords. The description is a short summary of the web page and usually about 2-3 sentences will suffice.

4. Breadcrumbs - another enforcement of the subject in the web page

Breadcrumbs are the little list of words describing the path to the item. They are usually located under the header and at the top of the page. The repetition of the information is what really assists with the search engine optimization. We typically recommend the reversal order of the title, something like:
{Home Page - optional} - {Section} - {Category} - {Page}

5. Performance Optimization - allowing the spiders to crawl faster

One of the reasons why many of the top ranking sites are simple informational pages or basic HTML pages is because they are served extremely quickly. In today’s world of large pipes of bandwidth, most internet users still (believe it or not) use dial up modems or DSL with very limited bandwidth. While it is true that bandwidth has improved in recent years, the pace of improvement has not come close to the pace of which pages grow in size due to graphics and special effects. Hence, performance is critical. Make sure to use tools like YSlow (FireFox extension) and Performance Analyizer to measure and improve your sites performance.

6. Valid, Semantically XHTML and CSS

Crawlers, unlike browsers depend on the validity of the HTML which builds the page. While most browsers tolerate bad web page structures, spiders are known to penalize for such defect. In addition to the validity of the web page, it is important to make use of semantic HTML. Semantic HTML is a way to label, tag, and as a result style web pages which describes the content not placement or any styling characteristics of the content. In other words, if a specific side box contains information about manufacturers, label the div tag with class=”manufacturers” or id=”manufacturers” instead of “second_right” or “brown_box” etc.

7. Avoid Nested Tables, or Tables for Layout as a Rule of Thumb

Table layouts and nested tables create significant overhead of unnecessary HTML tags and clutter. The clutter makes it hard for the spiders to differentiate between important and non-important information. Additionally, with well formatted XHTML and CSS, it is fairly easy to bring important information to the top of the page therefore giving it higher weight when indexed.

8. CSS and Ordered Lists Menus Instead of JavaScript or Flash Based Menus

Yes, it is cool to have a flashy animated menu or a smooth transitioning javascript based menu, but the bottom line will get affected. Spiders cannot read these menus. A good main menu shows on all pages in the same place, a flash or javascript menu will not only prevent guiding the spiders but also force the spider to skip important pages. According to the spider, if there is no link to the page, the page doesn’t exist in the spiders’ point of view.

9. Bottom Links - the Best Place to Remind Spiders of Additional and Important Pages

In addition to the main menu links, bottom links are a great location to place links that were left out. The bottom links are a great example of using web pages length, which are unimportant from a UI perspective, but key for SEO. Simply add or repeat links to the important pages at the bottom of the home page, and even at the bottom of every page in the site. This is also the place where you can try different variations of the links:

<a href="mylink">Wholesale</a>
...is very different from:
<a href="mylink">Wholesale Coffee for Restaurants and Grocery Stores</a>

10. Reduce the Size of JavaScript and CSS Files

There is really no need to have inline Javascript or CSS clutter in web pages anymore. The amount of free and open source tools and the commercially available tools allow any professional web developer to collect, minify, and compress JavaScript. It allows developers to collect, consolidate, and compress CSS code. An additional benefit of extracting this code and placing them in a separate files is the fact that once the files were read once by the browser, they are cached for a while. Each browser has separate algorithms and default lengths of caching, which therefore speed up the site and use less bandwidth. One improvement means double the fun!

So now, go back to your drawing board, and spice it up for the spiders!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

5 responses so far

Sep 25 2007

What mode; Release or Debug?

Published by joepurnell under .NET Framework

One of the Toolbar items in Visual Studio.net version 1.1 that I found very insightful was the Release Solutions Configuration dropdown. If the solution is set to Release or Debug mode this dropdown reflected it. If you wanted to force a compile in Release or Debug mode, you could also do so through it. However, in version 2.0, it’s hidden. If you want to make it display on your tool bar you have to follow these steps:

  1. Right Click the Toolbar
  2. Checkmark/Select “Build” (might already be selected)
  3. Click the “Toolbar Options” down-arrow (lower right-hand side of the “Build” controls)
  4. Click “Add or Remove Buttons”
  5. Click “Customize”
  6. Select “Build” in the left “Categories” column
  7. In the right column “Commands”; scroll down and drag “Solution Configurations” to the Toolbar

Anyone know of best practices to use when configuring between Debug and Release modes?

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

No responses yet

Sep 21 2007

Subversion to the Rescue

Published by joepurnell under Web Development

It just isn’t enough to have the best tools in the world if you don’t know how to use them.  Consider Visual Source Safe; a wonderful product in its own right.  But I, like a novice dude-ranch tourist facing an unbroken thoroughbred, was left frustrated by its wild side to take over the read/write properties of code and markup files.  What to do, what to do. 

You can only scratch your noggin so much in your futile attempt to google “Best-practice vss” before you give up the search or lose your hair.  I wasn’t sure I was using the source safe the right way, and training on a tight deadline was out of the question at this point.  I needed the version control to allow me to work on a local copy of my files and then port them over the network to another development machine and have it work the first time.  The trouble was, the references never carried over.  In hind sight, I should have known to save the projects in a uniform directory structure for that to take place, but the best practices of that were no where to be found.  I only found out about that little bit of information from a coworker who was extremely well versed in his own version control skills.  The problem though, was that his version control of choice was not Visual Source Safe, but a set of open source tools.

Enter Ankh and Tortoise, two open source subversion tools that our php guru carries the banner for, much to the chagrin of my pro-Microsoft traits.  As an aside, one can only endure so much frustration, sticking up for Microsoft’s premier version control product against a banner wielding fanatic, when one has only enough information and training in it to be a little bit dangerous.  I had a wild thoroughbred, he a donkey.  Mine was a better bet to win the race if you were a jockey.  His was a better worker under any rider, let alone his better experience. 

I gave in, we made the switch and so far this donkey is a powerhouse. 

You know, I think I’ll start a list of my own best practices.  Please feel free to add your own to help out those aspiring jockeys out there.  So in brief, here are some best practices I would recommend with Visual Source Safe

1. If you’re going to develop using Visual Studio.net on a local system and share the VSS as a team, I recommend you set up a standard directory structure across the board.  Everyone put their projects in c:\projects\[name of website].  Then when you check in the files the references will all match when someone across the building, checks out your code for editing.

2. … add your own

 Best wishes,

Joe 

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

No responses yet

Aug 02 2007

My ZenCart site is down [Problem Solved]

Published by Ron Peled under Web Design, ZenCart

The Problem

This morning, we got a few calls today from clients complaining about not being able to login into the administrator panel of their shopping carts. They were all using ZenCart ecommerce. After a 45 minutes on the phone with LiquidWeb (a hosting company that excels in support) we figured out the problem: each time you login into the admin panel of ZenCart, a quick ‘Update Check’ is being done. The Update Check is using a webservice to display the latest update from the official ZenCart site. However, this morning the official ZenCart site was down which halted the login process altogether.

The Solution

After you unsuccessfully try to login, use the same browser window or tab and go to this URL: http://www.[YourDomain].com/admin/index.php and try until you manage to login. Once you are logged in, go to ‘Configuration’ > ‘My Store’ page. Click on the 8th option from the bottom, the one that says: “Show if version update available” and change it to false. Click on update and you are done. Try to logout and log back in again.

A better solution will need some coding. What we recommend is setting a timeout on the web service query to 10 seconds. The only problem with this is that it will require modifying the core files which is always a bad idea. For now, the above solution should work.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

No responses yet

Jul 29 2007

Why we chose Eventum over any other issue tracking system?

We recently signed a few website maintenance agreements for multiple websites each. To better manage these websites and our development progress we needed an issue tracking system. So, we looked around and found a few systems. Our shortlist consisted of a few open source and obvious ones out there: Bugzila, RT, & Mantis, one fairly unknown open source system: Eventum, and one commercial system: Kayako.

We were looking for a system that its main purpose is issue tracking not bug tracking. It is a very saddle difference but it makes the life of the non-technical user, such as our clients, much easier. We wanted to make sure that the technical jargon used within the project will suite our clients without changing a whole bunch of language files and templates. Another required feature is the ability to create issues and track them via emails. Last, we wanted to use an issue tracking system that we can easily add or remove features by digging into the code and still have a solid and stable foundation.

Since at Activo we specialize in .NET and PHP web development environments we didn’t want to experiment with any other environment like Perl or Python, automatically two systems were removed from our shortlist before even installing them. Personally, I have used RT previously in a different company and I must say that it does meet more than the basic needs. Previously, one of our team members has tried to install and test Bugzilla. Unfortunately, he has installed the previous stable release (2.X.X) and it needed some heavy configuration and didn’t offer a crisp/clean look & feel.

We were left with three PHP based issue tracking systems: Mantis, Eventum, and Kayako. Here is how the different platforms scored:

Issue Tracking System

Issue vs Bug tracking

Issue creation by email

Manageable and solid code

Mantis

The system is oriented for the more technical user and carries the title of ‘bugtracking’ system.

Issue creation via email is only available as a patch. Email notification for issue updates is available right out of the box.

First, the code seem to still be in beta or unstable mode. Second, as we were browsing the public demo online, we found a few php errors and warnings at the very top of the page – which we thought wasn’t acceptable.

Kayako

Issue tracking system. Feature rich and well tested.

Feature is supported out of the box.

As expected the software did require installing Zend Optimizer on our server. Since our development server requires some advanced configuration options this was out of the question. However, it seemed like 99% of their code was open source except the portion that checks for the license which made this candidate as a great option for us.

Eventum

Issue tracking system. Feature is fairly rich but still remains easy to understand and use.

Here is where Eventum excels, from version 2.0 their email management has improved significantly with queuing and granular preferences per user for email routing, updates, and tracking. In fact, one can handle entire issues by using emails only.

The code is maintained by a few members of the MySQL team. It seems like the MySQL software development team is using this system internally which guarantees stability. Other than the template system, the code is well structured.

We had to make a decision between Kayako and Eventum and finally we had a poor experience with Kayako’s technical support team which steered us in Eventum’s direction. After installing, testing, and forgetting about the system for a while we ran into some problems with the email queuing feature. For some reason our cron tabs consistently returned error messages and emails were not being transferred back and forth smoothly. After some digging we found some permission issues and fixed it. Now that it is working well and most importantly serves our needs, we can declare Eventum as a winner.

Thank you MySQL!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

2 responses so far

Mar 11 2007

7 Key Focus Areas when Revamping Websites

Published by Ron Peled under Web Design

Recently we helped relaunch the www.jeremiahspick.com website. This website was using a 3.5 year old osCommerce, it now runs on the latest ZenCart open source e-commerce platform. Here I summarize the top 7 improvements that made a lot of difference:

  1. Decide on goals and show them in your layout, design, and development:
    The previous site had a bunch of HTML pages on the root folder which served as an informational basis site and the shopping cart was one level down in the subfolder: /shop. This served great for 2-3 years but we realized that Jeremiah’s Pick site first goal was to sell online and the average user who comes to visit the site, is looking to buy their great coffee. Hence, we brought the shopping cart to the root folder, and in fact the shopping cart runs the entire site. This includes a full use of the ezPages component in ZenCart which serves as a limited content management system.
  2. Centralize the main menu:
    Previously, the site was set to be navigated via three or four different menus, depending on what page was the user at. The new site has one simple navigation bar in the son-of-suckerfish technique which implements a nice SEO sensitive menu.
  3. Reduce the number of clicks to action (CTA):
    In this case, the action was defined as a purchase, add to cart, or inquiry submission. Hence, we made sure to reduce the number of unnecessary categories, subpages, and therefore clicks. We did so by consolidating pages, reorganizing the sitemap and separating groups of products into the minimum necessary subcategories.
  4. Revamping a website means a better look:
    Call it in any way you wish, the site still need to impress your existing users. In 2-3 years, the wealth of stock images and digital cameras have improved quite a bit. Make a use of it and push the limit of your designer. Show the final draft to a few of your friends/colleages/strangers and look for the ‘WOW’ reaction within 3 seconds. If you don’t see it, go back to the drawing board.
  5. Build a dynamic platform, not only a website:
    Today, there is no reason a new website cannot be fully managed by the computer illiterate. Use content management systems, WYSIWYG editors, database driven shopping cart, etc. Make sure the user has full access to all the elements on their page, especially the front page.
  6. Automate processes:
    If the website shares user database with an outside email management software, look for their API and connect your shopping cart with their system directly. Connect the order process to a real time shipping calculator. Connect the cart to a real time credit card gateway. Make the daily report available for a quickbooks import.
  7. Track Results:
    Once the new site goes live, the work is far from over. Track your results, either your results are hits, user registrations, or online orders, make sure to save the results from the past year and compare it for the next couple of weeks on a daily basis. Question any significant variation, if it is negative, work to correct it, otherwise make sure the results are real.

Websites are one of the most important assets of any business today. Don’t overlook any detail and make sure to always have your users in mind when you work on revamping your website.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • LinkedIn
  • Live
  • NewsVine
  • Reddit
  • Slashdot
  • Technorati
  • StumbleUpon
  • description

No responses yet

« Prev