blog

Difio Add-On Tests Are Available

@ May 7th, 2013

Today Difio is pleased to announce the general availability of add-on tests which are designed to test and verify potential issues or known bugs. Add-on tests are provided as a subscription service for 10 $ per month. First month is free.

What add-on tests are available

  • API diff - Difio generates API definition from the package source code. Changes in API could be backward incompatible and result in application crash and runtime failures. API diff is currently available for Python, PHP and Java.

  • Full diff - this is the full git diff between two package versions. It is available for informational purposes.

  • Package Size Change - packages that change their size significantly can be a sign of a corrupted build. This test reports any size changes over 30%. See DIFIO-12243 for example.

  • File Size Change - inspects files which are present in both versions. Any size change that is both more than 20% and more than 20 KB or any file that changes from being zero-sized to non-zero sized, and vice-versa is reported.

  • Added non-text Files - new files are classified with libmagic. Any non-text file is reported. Bugs like Django #19858 can be found with this test. For example see DIFIO-12987.

  • Modified Files - lists all modified files. You should manually review the list and inspect if unwanted files were modified.

  • Added Files - lists all newly added files. New files are usually resources, tests of new functionality. Manually inspect to verify additions are expected.

  • Removed Files - files in packages should be removed only if properly obsoleted or initial inclusion was a bug. Removing modules or parts of them can break the API.

  • Renamed Files - renaming files can break API. This test lists all renames between two versions.

  • Permissions Change - file permissions change (Linux/UNIX only) could indicate security issues. In a source package without executable programs permissions should not change.

  • Symlinks - this test traverses the entire package tree and reports any symlinks found. It will report FAIL if any symlinks exist in the new package. For example see DIFIO-16005.

  • File Types Change - this test compares file types reported by libmagic between two package versions. Files should not be changing their type between updates.

  • Virus Scan - a virus scan is performed on the package using the ClamAV virus scanner. Even though it is unlikely that packages contain viruses, it’s still important to know if anti virus tools will trigger false positives.

  • Test Cases - this test reports any changes in test cases. It counts the number of available test case files in some well known locations. If new version is missing tests or has less then severity will be VERIFY or FAIL.

Subscribe Now!


Difio is constantly working on improving the service. In the mean time start following packages, invite your friends and send us your feedback via GitHub or Twitter.

API Diff Support for Java and PHP

@ Mar 10th, 2013

Today Difio is pleased to announce API diff support for Java and PHP programming languages.

The API diff feature extracts class and method signatures and compares the results between an older and a newer version. If API has changed this is a good indicator that there were substantial changes in the new package version, which require through testing.

With this release API diff becomes available for source code written in Java, PHP and Python. We are looking to support other languages as well.

What’s next

Difio is constantly working on improving the service. In the mean time start following packages, invite your friends and send us your feedback via GitHub or Twitter.

Improved Support for PHP

@ Mar 6th, 2013

Today Difio is pleased to announce improved support for the PHP programming language and the Composer dependency management tool.

Previously only PHP PEAR packages were supported and it was not possible to manually import a list of packages. Starting today, these issues have been fixed.

At the moment Difio supports three upstream sources for PHP packages:

Users are now able to manually import package list from their PHP applications using Composer.

To register PHP apps go to https://difio-otb.rhcloud.com/application/import/composer-show/? and paste the output of php composer.phar show --installed command.

For example:

$ ./composer.phar show --installed
doctrine/common                              2.3.0   Common Library for Doctrine projects
imagine/Imagine                              v0.4.1  Image processing for PHP 5.3
pear-pear.php.net/HTTP_Request2              2.1.1   PHP5 rewrite of HTTP_Request package ...
pear-pear.php.net/XML_Util                   1.2.1   Selection of methods that are often needed when working with XML documents ...
pear-pear2.php.net/PEAR2_Cache_SHM           0.1.0   Allows you to share data across requests as long as the PHP process is running. ...
pear-pear2.php.net/PEAR2_Text_Markdown       0.1.0   This is a port of Solar_Markdown.
psr/log                                      1.0.0   Common interface for logging libraries
symfony/symfony                              v2.2.0  The Symfony PHP framework
twig/twig                                    v1.12.2 Twig, the flexible, fast, and secure template language for PHP

This application contains packages from the three different sources and they will be properly parsed and recognized by Difio.

What’s next

Difio is constantly working on improving the service. We are now looking into API diff support for PHP among other things, so stay tuned! In the mean time start following packages, invite your friends and send us your feedback via GitHub or Twitter.

New Dashboard and Follow Packages Functionality

@ Feb 25th, 2013

Today Difio is pleased to announce our new dashboard and the ability to follow packages without registering applications. Read below for more information.

Latest Releases

Latest Releases

The default dashboard page is showing a news stream of all latest releases for packages the user is following or using inside applications.

Change History

Change History

This page is showing a news stream of change analysis between multiple package versions that the user is following or using inside applications. As shown in this example the user is following bundler-1.2.1 and bundler-1.2.3 while the latest available is bundler-1.3.0 and bundler-1.2.5.

Follow Packages

Follow Packages

A new page to view and search packages is now available. Users can follow or unfollow any packages and versions they want through the buttons. Simple color codes distinguish between different states: green - user is following version; gray - version is used inside registered application; transparent - not following version. Versions which are used inside applications can only be removed/unfollowed by deleting the entire application, or deleting the package from the application. For example Pygments-1.5 is been used in an application, but Pygments-1.6 is been followed manually.

It is highly recommended to follow a particular version, not only the package name. If a user decides to follow only package name, but not versions, Difio will not be able to generate change analysis reports because there’s no basis to compare to. In this case the user will be able to see only the latest releases news stream.

Applications

This page is showing all registered applications for which Difio is monitoring dependencies. This page has been available previously and also includes the improvements announced last week. Small speed improvements have been made to this page as well.

Invite Friends

This is an interactive dialog which allows you to invite your fellows to try Difio. It only asks for the email addresses of your friends and sends them an invitation. We do not keep track of these addresses nor send any spam to them.


We encourage developers from all supported backgrounds and languages to start following packages and send us their feedback via GitHub or Twitter.

New Look and Feel for Application Info Pages

@ Feb 21st, 2013

Today Difio is pleased to announce new look and feel for application info pages. Difio keeps track of application dependencies and tells you when they change. We let you inspect the changes and make informed decision when or what to upgrade.

App Info Page

Previously the application info page was showing only the latest available updates. This made it hard for users to inspect older updates. For example if you had Django-1.4.3 you would see the latest Django-1.4.5 but not 1.4.4.

For packages which maintain several active branches it was not possible to compare installed version against stable branch versions. It was always compared to the latest from the master branch. For example if you had ffi-1.3.0 you could not see ffi-1.3.1 but would see ffi-1.4.0 instead.

Today’s release fixes this by offering the user all available updates to their packages. In addition change rate icons are replaced by color codes. The version string is now shown as a button in one of the standard colors green (low), orange (medium) or red (high). Improvement has been made to the page load speed as well. It is now significantly faster.

Email notifications still display only the highest available version. This will be changed soon to include intermediate versions. At the moment information about intermediate versions is available only via the web interface or RSS.

We encourage developers from all backgrounds and languages to register their applications and send us their feedback via GitHub or Twitter.

SofiaValley Writes About Difio

@ Jan 28th, 2013

SofiaValley is a Bulgarian blog focused on the IT life in the Sofia valley :). Today they announced a new section called SV startups which will be focusing on startups and interesting projects in the region.

We are happy that Difio is the first startup to be featured on their website and hope that there will be many others. Kudos to SofiaValley!

You can read the actual article in Bulgarian or try the English translation by Google Translate (it’s pretty accurate).

Graphical or Tabular View? You Vote, We Code

@ Jan 24th, 2013

Hello guys! We haven’t posted in a while and we’re sorry for this. Here’s an idea which is going around in our heads. Let us know what do you think.

Tabular View

Currently when you log into the application dashboard and navigate to the details view of each application you see this:

Tabular view

The installed packages are on the left while new versions are on the right. The links point to more detailed information about changes between the two versions. By default only the available updates are shown but you can display all installed packages as well.

We also have a history page which holds a snapshot of your installed dependencies whenever they change. It looks like this:

History records

These two pages inform you about the latest and greatest versions and which ones you have been using in the past. However they don’t show you any version release history nor how does your application relate to that.

Graphical View

Our proposal is to implement a graphical view as shown on the mock-up below:

Graphical view

On the vertical axis are all the dependencies used by your application. By default only outdated ones are shown, sorted by their name for readability.

On the horizontal axis are all available versions for that particular package shown as markers. A tooltip shows you the package name and version. Density and scale is based on release dates. Zoom will help you investigate more closely.

The marker or the tooltip can be a link to the standard page where these two versions are compared and analyzed. The marker icon can be left as is or be one of the icons representing Low, Medium or High change rate.

Individual packages can be turned on or off of course.

Application state is shown as a line connecting the versions you have installed. Previous states, where dependency versions were different can be represented as similar lines on the left. The leftmost being the oldest history record. State lines can also be turned on or off if the view gets too crowded.

You Vote, We Code

The ball is yours now! If this page gets over 50 tweets, comments, shares or likes we are going to implement this in Difio. A breakdown of features will be posted in the comments below. Please vote up or down for any of them. Features that get promoted will be implemented.

If you have any other ideas or suggestions please let us know. You can use the comments form or submit them via GitHub or Twitter.

Difio Adds Application History Tracking

@ Nov 27th, 2012

Today Difio is pleased to announce support for tracking application history. Difio keeps track of application dependencies and tells you when they change. We let you inspect the changes and make informed decision when or what to upgrade.

Our team has added a new feature to track changes in the list of dependencies used by applications. Every time you upgrade, add or remove a package from your application dependencies Difio creates a history record. As always, don’t forget to re-run the registration script or to manually refresh your apps after changing the dependencies!

Every application starts with a single history record, reflecting its latest state. Later you can review your app history and revert to previously used versions for example. Difio is planning to add more goodies to the history page in a future release. If you have an idea and want us to implement it, please post it on the ideas dashboard!

This new functionality is accessible on the application details view via the Last check-in hyperlink, as shown below.

Link to history page

We encourage developers from all backgrounds and languages to register their applications and send us their feedback via GitHub or Twitter.

Difio 1.9 Release Announcement

@ Nov 14th, 2012

Today Difio is pleased to announce version 1.9 of our dependencies monitoring service. Difio keeps track of application dependencies and tells you when they change. We let you inspect the changes and make informed decision when or what to upgrade.

This release includes several new features and website updates.

API diff

The API diff feature is exploring packages source code and builds their API definitions. Then definitions between your currently installed package and the latest upstream version are compared. Changes are presented as a colored diff format for better readability.

API diff is accessible through the main update view, next to changelog, commit log and bugs list as shown below:

API diff example

API diff is initially available only for Python. For Python we support detection of class definitions, function definitions and decorators.

Example showing no API changes can be seen with a recent MySQL-python release.

Example showing new classes being added and some functions changing can be seen with a recent django-social-auth release.

API diff support for other languages will be added in future releases!

Refresh manually imported apps

It is now possible to refresh the dependency list for manually imported applications. Simply click the Refresh button as shown below and import the dependency list again.

Refresh button

The refresh functionality has always been present for all of our PaaS registration agents.

Share the package list

When you need to match your dev environment with the production one, or ensure dependency similarity between multiple nodes you need the list of already installed packages.

In this release Difio adds a new button labeled Package List which exports all installed dependencies as plain text. The format is name==version. You can share this list with other developers as needed.

Minor improvements and bug fixes

We have also done lots of minor improvements and fixes to our website. They are invisible to the naked eye so no need to tell you more :).

We encourage developers from all backgrounds and languages to register their applications and send us their feedback via GitHub or Twitter.

Difio Adds Initial Support for cloudControl

@ Nov 5th, 2012

Today Difio is pleased to announce initial support for cloudControl. Difio provides insight of available updates for open source components. It lets you inspect changes and take informed decision when or what to upgrade. This improves software life cycle planning and minimizes possible regressions and downtime.

We have added two new registration scripts allowing cloudControl developers to subscribe their applications to Difio. At the moment there is support for Python and Ruby programming languages. Difio is working together with cloudControl to add support for Java and PHP as well, so stay tuned!

We encourage developers who use cloudControl to register their applications and send us their feedback via GitHub or Twitter.