ATK rocks on!

I received a blast-from-the-past email yesterday wanting to know how to format  ATK code for submitting a patch. I was going to simply refer them to the ATK GitHub project I helped create, but then thought I’d better check and see what’s been happening in the project lately (regular readers will be know I’ve been developing with Yii for the past couple year).

I was pleasantly surprised to find the project has been forked, and there’s been a lot of new development supported by the Italian company Sintattica. ATK was originally developed in Belgium, which proves open-source knows no national boundaries!

The new project still has some community relations work to do as the links and developer information in haven’t been updated since forking, and there doesn’t seem to be a public issue tracker, but it seems ATK could be off to a great new beginning. There’s even a new development branch featuring PSR-4 compatibility and a modern class system!

It’s great to see ATK continue as a presence in the rapid web app development space, and it’s rewarding to think my efforts migrating the source from iBuilding’s Subversion repo to GitHub may have helped in some small way. With the buzz that new fad frameworks attract from their fanboyz before fading away, it’s refreshing to see a truly innovative idea continue. Thanks iBuildings and Ivo for starting the project, and thanks Sintattica for your support.


ATK / Achievo Update

I’ve committed to the Yii framework now for building Maestro (check Maestro posts for more information). I’m not following the rss feed from the Achievo forum anymore, and I’ve removed (sigh…) the Achievo/ATK menu from my website so as to not mislead anyone as to my involvement. However, Achievo’s features and simple user and administrator interface are still unrivaled in an open source app of its type, and Maestro will be strongly influenced by Achievo.

In case the information is still of benefit to anyone, here’s the content from the static Achievo/ATK menu page.

– dale

Achievo / ATK

Achievo is a web-based Business Support Services (BSS) application for organizations, built using the ATK Framework and licensed under the GPL. Achievo was originally developed by iBuildings, but is transitioning to community leadership. Achievo includes a rich set of core modules, including support for employees, projects (phases and activities), timesheets, organizations, contacts, CRM (customers, campaings and contracts), and document management. There are a wide variety of Add-on modules available for additional functionality, and you can add or develop Custom modules for more more specific requirements. Achievo is stable and suitable for production.

The ATK framework is a special purpose PHP framework targeted at business applications. It allows database-type applications to be build quickly and with very small amounts of code. Its focus on business features makes it an excellent framework for HRM, CRM, data management and CMS type applications. The ATK framework was originaly developed by iBuildings, but is transitioning to community leadership. The ATK Framework is stable and suitable for production.

Adapto is a new project led by Ivo Jansch, who conceived Achievo and the ATK framework, to re-implement the concepts proven in the ATK framework to the next level, concentrating on easy to use CRUD functionality for relational databases and other data sources with only a few lines of code, and using the Zend Framework (v2) for caching, view rendering, database connectivity, etc..


Achievo and ATK Moving to Community Governance

The process has started to move the ATK Framework and Achievo projects to community governance from corporate governance.

Update 2012/07/19 – the GitHub organization created for the ATK Framework, ATK Demo and Achievo repositories is the ATK PHP Framework – (the code will be there soon!).

The ATK Framework is an open-source object-oriented full-stack PHP web application framework that enables rapid development of business-oriented web applications, such as HRM, CRM, data management and CMS. iBuildings created the ATK Framework in ~2000 and have closely managed its development project and project infrastructure, including a public web site, forum, wiki, bug tracker and code repository (although only iBuildings has commit access to the repository). iBuildings also controls the development projects of two closely related applications:

  • ATK Demo – a tutorial application demonstrating basic ATK Framework concepts, and
  • Achievo – a fully-featured and extensible resource management application based on ATK (iBuildings had used Achievo internally for managing development projects) .

I became involved in 2004 when I implemented Achievo 1.0RC1 as part of an engineering portfolio project management initiative for a high-tech product development team. Support from iBuildings was excellent, with senior developers responding to my forum posts and the lead developer even logging into my server at one point to help debug an issue related to hosting on Windows. More recently, I have selected Achievo (and the ATK Framework) for prototyping an open-source business support system for the fictional Swift Construction Company.

Over the past few years though, iBuildings’ involvement in the ATK Framework and Achievo projects has seemed to be declining, while community involvement has been growing. After a number of recent pleas from the community for iBuildings to make their intentions public, Tom Schenkenberg (iBuildings co-founder) confirmed our suspicions, but also graciously committed support for moving the ATK Framework, ATK Demo, and Achievo projects to community governance.

“… we took the business decision to no longer participate in active development and stop using this framework for our commercial application development work.”

“I’d like to offer anything and everything belonging to ATK/Achievo to you guys, the true maintainers of these projects. I’m happy to hand over the servers/domains/applications/websites/repositories/etc. to the community. Please help me to get ATK/Achievo in the right hands and in the right place.”

So how does a loose collection of independent developers scattered across the globe turn themselves into an efficient project team? Tom may have offered up the reins, but it’s up to us to decide where we’re going.

Since Tom’s announcement, an informal leadership team has been formed from community members, a GitHub organization has been created for the project code repositories, and documentation is starting to be written on the GitHub ATK project wiki. Once it has been decided how to best migrate the iBuildings svn repos to GitHub, the real fun will begin!

Adding to the excitement is a recent announcement from Ivo Jansch (former iBuildings CTO and now Eugeniq founder) that he was creating a “second incarnation of ATK” called Adapto, to be released under the business-friendly BSD license. Ivo originally conceived ATK, was its lead developer and power user within iBuildings, and is a copyright holder for much of its source. Here’s how Ivo describes Adapto.

Adapto will not be “focusing on anything that is already provided by common frameworks. So I would like to leave caching, view rendering, database connectivity etc. to an existing framework (Zend Framework) and have Adapto … just contain the code that makes it great. I also have ideas to extend the UI beyond just websites (think mobile/tablet apps).

… Another point is that the codebase is quite complex and one reason for that is the 12 years of legacy. By starting fresh and not worrying so much initially about backwards compatibility, we can leave some of that baggage behind.

So while the ATK Framework has a new team who will be focusing on maintenance and feature updates to ATK and Achievo (and documentation), Adapto will be under development as a future solution for concepts proven by ATK.  However, simply from its existence, Adapto also adds to the complexity of the ATK ecosystem. Not only will developers be considering the future of ATK and Achievo, they will also be considering the future of Adapto on ATK.

To provide some possible clarity into the situation, I’d like to offer this roadmap proposal for consideration (and hopefully some spirited debate). Comments are encouraged (but be warned, I will be re-posting relevant comments made here to the ATK forum and/or Adapto mail list).

Watch out for more news, it’s going to be a fun year!


Using “new” PHP with “old” MySQL passwords

I recently encountered this error trying to connect Achievo to an existing corporate project-tracking database:

Critical: Unknown error: 2000 (mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(‘your_existing_password’). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file).

To understand what’s going on, you need to understand a couple not-so-recent developments in PHP and MySQL:

  • MySQL version 4.0 and earlier used a 16-byte password hash, but starting with version 4.1+ uses a more secure password algorithm and 41 byte hash (although still supporting the older less secure password hash if needed).
  • The original external PHP module for accessing MySQL was mysql, but the current preferred module is mysqli (MySQL Improved).
  • The original low-level c-library that mysql (and mysqli) used to actually interface to a MySQL server was libmysql (included with MySQL), but starting with PHP 5.3 they are typically compiled with mysqlnd (a seperate project). mysqlnd has many advantages compared to libmysql, but it doesn’t support the old 16-byte MySQL password hash.

The database server I needed to connect to was running MySQL v5.0, and was configured with “old_passwords” set to On, which sets password operations to use the older 16-byte password hash (possibly because the original client/server application had been developed with MySQL 4.0 or earlier).

The simplest solution would have been to turn old_passwords Off and reset my password as the error message said (assuming the password column in the mysql.usr table would hold a 41-byte hash, otherwise its width would have to be increased first). However, the dba was loath to change the server configuration in case it broke existing mission critical enterprise applications, so I needed a different solution.

Since mysql and mysqli are compiled seperately, they can use different underlying c-libraries. In other words, mysql can be compiled to use libmysql – which supports the old 16-byte password hash. That would allow using mysql to connect to the corporate project-tracking database, without any effect on using mysqli to connect to other databases.

On a FreeBSD server, it was as easy as:

# pkg_delete php5-mysql
# cd /usr/ports/databases/php5-mysql
# make config  (uncheck support for mysqlnd)
# make install clean

and then edited the Achievo file to use mysql for the corporate database instead of mysqli.