Infinity Perl : slack-get, Perl, Qt, KDE and other Open source stuffs

To content | To menu | To search

Friday 29 August 2008

Release: Slackware::Slackget v0.17

Hi,

A new version of the Slackware::Slackget module was released on CPAN.
This release features the followings changes :
 - lots of fix in order to make all classes of the module SGNC Compliant
 - Slackware::Slackget::GPG have had many methods implemented
 - change the to_string() behavior of the Slackware::Slackget::PackageList, Slackware::Slackget::Package and Slackware::Slackget::List to make them able to generate a Slackware's PACKAGES.TXT (supporting, of course, the slapt-get/swaret format for dependencies).

This module was in a need of a new release since the documentation have been updated a lot (and I personally use CPAN as my API doc reference ^^).

Arnaud Dupuis

Friday 7 March 2008

Release: Slackware::Slackget - Main Perl library for the slack-get package manager - v0.16

Hi,
The new version of the Slackware::Slackget Perl module have just been released on CPAN.
This 0.16 version add more unit tests to the test suite, should fix the incompatibility problems on Solaris, and fix some bugs in the API.
Particularly, in the Slackware::Slackget::File and in Slackware::Slackget::List classes.

Next changes in the API will be to add Java like iterators to the Slackware::Slackget::List class.

You can download this module on CPAN.


Arnaud Dupuis

Friday 15 February 2008

compatibility of the Slackware::Slackget Perl module version 0.15_99

Hi,
It looks like that the latest released version of the Slackware::Slackget Perl module is quite incompatible with the Solaris operating system.
I was expecting this kind of problem with this release because I added more tests to the test suite. And Slackware::Slackget, as its name said, is designed to run on Slackware GNU/Linux based distributions.
So before the 0.15 final release, in order to provide a very usefull test suite, I will add some more tests.
And unfortunately, I expect more issues... The more the test suite is accurate, the more it will point the problem with Slackware incompatible systems.

The problem with the Solaris systems is that the `file` command do not support the -b switch. I use the file command instead of a CPAN module to reduce the amount of dependencies of Slackware::Slackget but I will look at this and try to make the Slackware::Slackget::File class use a CPAN module if installed (like File::Type).

Arnaud Dupuis

Saturday 2 February 2008

Release: Slackware::Slackget v0.15_99 and SGNC documentation

Hi,

A new version of the Slackware::Slackget module was released few hours ago on CPAN.
This release features the followings changes :
    - modify Slackware::Slackget::File->filename() behavior to allow it to set the filename
    - fix is_heavy_word() method in Slackware::Slackget::Package, wich now return the correct result
    - update Slackware::Slackget::Date to make it fill the month-name from the month-number
    - update Slackware::Slackget::Date by overloading '<=>' and 'cmp'
    - changed all classes of the Slackware::Slackget module to be compliant with the slack-get naming convention (SGNCC : Slack-Get Naming Convention Compliant) (http://www.infinityperl.org/post/2008/01/30/slack-get-API-review)
    - add more tests to the test suite for the followings classes :
        * Slackware::Slackget::File (SGNCC & backward compatible)
        * Slackware::Slackget::Media (SGNCC & backward compatible)
        * Slackware::Slackget::Date (SGNCC& backward compatible)
        * Slackware::Slackget::Package (SGNCC & backward compatible)

It is tagged as a developers' release for the moment since all the test for all modified (SGNCC) modules, the documentation is not yet up-to-date considering all the changes made, and I still need some time to test if their is absolutely no side effects due to the changes I made in the API.

Arnaud Dupuis


SGNCC - Slack-Get Naming Convention Compliant : the new slack-get's naming convention document

Document purpose :

The purpose of this document is to "standardize" slack-get development by imposing a naming convention for both (but not only) : slack-get clients, sg_daemon, all Perl modules and the C++ library.
This include of course, all plug-in which can be released in the futur.

Vocabulary :

In the future, we will refers to the slack-get naming convention as :
SGNC: for Slack-Get Naming Convention.

Additionally, we will refers to SGNC compliant code as SGNCC (SGNC Compliant).

Scope of the SGNC :

All the code released under the "slack-get development team" label must be SGNC compliant (SGNCC).
More generally, all code released and packaged with slack-get must be (and will be) SGNCC.
The SGNC apply to all API visible method names. Every methods in a class or bundle must be SGNCC. By extension to this principle all methods in the sg_daemon, slack-get and the upcoming slack-get GUI have to be SGNCC.
All script released and packaged with slack-get should be SGNCC too. But in order to not slow down some developments it is acceptable to keep not SGNCC code in the branch/ SVN tree. If released with slack-get, this code will be optional at building and installation time. It will also be released in a different package.

Rules of SGNC :

We refer to functions and methods as the same generic term of "method".
The SGNC consist in the following 3 simple programing rules :
  1. a method name consist of lower case, English words where space are replaced with underscores ;
  2. if the method name is conflicting with Perl or C++ built-in function or language syntax, change the case of the first letter to upper  case.
  3. if a conflict was solved according to rule 2), and if the name conflicts with only one of the supported languages (Perl and C++), add a wrapper method around the renamed one, in order to comply with the rule 1).


The slack-get development team

Monday 10 December 2007

slack-get development diary #4

Hi,
There is a lot to say for this development diary #4 !

Perl module: Slackware::Slackget vs slackget10 :

First of all, the Perl part of the project (currently the biggest part). As you may all know now : the slack-get Perl module is now listed in the official Perl Module list on CPAN in the Operating System Interface category. And for this big promotion the module changed its name from slackget10 to Slackware::Slackget.
If some of you still wondered : slackget10 is officially abandoned, and today, completely outdated.
I added a lot of features to this module like the stackable backends. I also released on CPAN a debug module which add the support for a debug:// network protocol. This is a totally fake protocol which help development by outputing loads of informations on the standard output. The module name is Slackware::Slackget::Network::Connection::DEBUG. It's not a part of the Slackware::Slackget distribution, it's even not in the SVN trunk but in branch/perl-modules.
One of the big improvement of the Slackware::Slackget module is its test suite : the latest release on CPAN (0.14) haven't encounter even 1 fail !
I also tried a lot to make the module platform independent, and more generic. I have rewrite lots of code in order to take all the interdependent code out of the modules. It's now partially done and the next module which will feel my scalpel is Slackware::Slackget::PkgTools... I saw some horrible things inside of this one !

The slack-get suite programs : sg_daemon and slack-get :

Everything have changed ! Beginning with slack-get : this program wasn't available 2 weeks ago. It's a command line client for the sg_daemon it allow you to query the daemon. At the moment I write this development diary (svn revision 110) you can perform the following actions with slack-get : search a package (based on it's name, or anything in the description of this package), ask the daemon to rebuild the installed packages cache, ask the daemon to reload it's media list, ask the daemon to rebuild the update list. Well... now it only lack the possibility to install, upgrade and remove packages to be released... I'm already on the remove part (the easiest ^^).
Let's show you some search request performed on a cache which contains the official Slackware current repository, Linuxpackages repository and my own perl-modules repository (totally outdated) :

This is a big improvement since it actually do something... You may wonder how it is possible for me to implements 3 or 4 possible actions (features) for slack-get and have wait for so long before doing it. In fact it's now very easy and quick to add features to sg_daemon and slack-get because the base architecture is done coding (and well designed :D).
From now on, the remaining features I will include before releasing a first version (without any GUI but with the CLI client) are :
  • install package
  • upgrade package
  • remove package
  • run background for the daemon
Once it'll be done I will bundle it and release the 1.0.0-alpha2 version. Obviously, it will be a testing version.
In the real coding side, the last SVN revision of sg_daemon include tons of improvements like : automatic message formating, a first version of the backend stack negotiation system (between the daemon and the client), a real and simple network protocol, a powerfull and working base architecture and a bullet proof internal communication ! (with that if I don't attract some geek devs I don't know how to do it ;-) ).
The next big part of the work will be the implementation of collaborative part. But fortunately, a huge amount of this code was already wrote in slack-get-1.0.0-alpha1. To give you an example, all the code related to the master/slave mechanism is already written and slack-getd is able to work with many other daemons withtout to much pain in the configuration side (assuming you talk XML...).
But in addition to the existing code (that I will still need to port to the new event-based architecture), I want to add an "auto discover" feature to allow many sg_daemon(s) to work together without any configuration or human supervision. I want the daemons able to  elect a master, change their mode between master and slave, and many other distributed stuffs like that, based on some simple rules (what's the sysload, the average sysload, etc.) in total autonomy (if the sysadmin allow it !).
In addition to all of this development, I will publish a debug backend for Slackware::Slackget::Network to allow developers to track the state of a network message during the encoding and decoding process.

Some news from the GUI point :

I made a graphical interface to get the list of official Slackware mirrors (from the "Get Slack" page of the official website). It's still not finished (it cannot update the medias.xml file yet), but it's already working to get the list and writting it down to the hard disk. I think this dialog will be part of the final slack-get GUI.
And since it's the first screenshot I can show, here it is :

Well... nothing to climb to the roof but it's a beginning :)
All the testing GUI are available from the SVN branch : branch/gui_test.
The GUI is the next main development priority after getting the daemon working.

I think I'm done with this week (and a half...) diary, I'll keep you informed !

Cya

Arnaud Dupuis.

Thursday 6 December 2007

Slackware::Slackget is born !

Hi,
As I announced many times, the slackget10 is now dead since the Slackware::Slackget namespace was created on CPAN.
I already released 2 versions of this module and will keep going !
With the last release, I finally managed to fix the test suite in in order to pass all tests on all testers architectures (even on Cygwin !).
I also improved a lot the network backend system by making it stackable and even if some problems are still here the global thing is on the rails.

What I'm not very happy with is the remaining problems with the S::Sg::Network module... On the paper it works just great, I can take the output of the decode() method to give it as input to the encode() one and all runs perfectly smoothly (see the network-backend.pl test script). But in real life... the sg_daemon and slack-get have some difficulties to talk to each other...

Anyway things are going pretty well and I have a lot to write in the "development diary" !!

Cya !

Arnaud Dupuis

Monday 3 December 2007

slack-get perl module change its name !

Hi,
Like I announced on the developers' mailing list, the slackget10 was about to die. It's now done. The PAUSE (Perl Authors Upload SErver) admins sent me an email confirming the creation of the Slackware::Slackget registered namespace on PAUSE/CPAN.
I will modify all the library to fit the new namespace and release the changes as soon as possible.
One more thing : I created a new branch on the SVN for the GUI tests ;-)

Cya,

Arnaud Dupuis

Tuesday 27 November 2007

New Network backend mechanism

Today I implemented the new slackget10::Network mechanism I wanted to. What is it you ask ?
Clearly something which will help everything to be super-easy to improve. As you may know (or not) the slackget10::Network Perl Module has been completely redesigned and will be largely recoded.
The changes are quite important and the API is completely new. It's now a front end module (like slackget10::Network::Connection is) and it aim at providing a unified interface for all kind of "protocol" implementation.
The idea is to answer the question : "what are you doing with an incoming network packet ?". The answer is simple : you decode it, you interpret it, you build the answer and you encode the answer before sending it.

Continue reading...

Sunday 11 November 2007

New slackget10 Perl Module release - version 0.11

Hi,

Well.. I changed so much slackget10::Network::Connection* modules that I made a release of the whole module on CPAN !
This release features :
  • Dynamic driver loading. As explained in another post I made the driver loading code completly dynamic. From now on, you just have a slackget10::Network::Connection::<PROTOCOL>.pm module to add support for <protocol>:// protocol to slackget10::Network::Connection.pm.
  • New slackget10::Network::Connection API. Loads of things have changed in the API of this class. First it's now event driven and it means you have to pass a InlineStates => {} parameter to the constructor. Then the old construction behavior (with only one parameter) is now deprecated and unsupported. Please have a look at the documentation for more information about this.
  • New slackget10::Network::Connection::*.pm API. It's now way easier to create a protocol driver ! You just have to create a module with the 3 followings methods defined inside : __test_server(), __get_file(), __fetch_file(). They'll be called by slackget10::Network::Connection.pm wich will take care of everything (like event throwing).
This class is now fully usable out of the box in other programs than just slack-get, and that was one of the goal of the slackget10 module !
I'll made a HOWTO on the wiki to explain how to create a driver.

Good day

Arnaud Dupuis

Saturday 10 November 2007

Week end planning

Hi ,

I'm working a lot on slack-get this week end ! Today's morning was concentrated on slackget10::Network::Connection modifications. I made quite a lot of them. I made two major changes in the module architecture :

  1. I made the protocol driver's loading completly dynamic (no more static, hardcoded hash table to track authorized protocols)
  2. I changed all drivers (slackget10::Network::Connection::*) and made them independents from the slackget10::Config. The "config" parameter is not required anymore. In place of this option you have to give the "download_directory".
The other thing I planned for the week end is to polish my skills with Qt4. I'll try to make the configuration widget for the GUI this week end... even if I can't promise anything.

I also updates the Wiki by creating some API documentation pages.

Let's keep the pace !

Arnaud Dupuis

Wednesday 24 October 2007

new release of the slack-get Perl Module - slackget10-0.10

Hi all !


After doubt and interrogation, even after I though to dismiss the slack-et project it couldn't be helped... I enjoy developing this tool !
So be it. Here is the latest release of the slack-get Perl Module. Tons of thing are new since there was a not-released version...
This release main features are :
  • loads of bugfixes (starting with the test suite)
  • removed unused modules
  • removed deprecated modules
Well a lot of things !

I'm now working on the slack-get communication protocol. This protocol is full XML based and have to be well designed to support all situation of usage.
It also have to be bulletproof and highly error resistant.

By the way the slack-get devel mailing list have open, please find more information on this at Sourceforge , you can also find more informations about slack-get SVN on Sourceforge.

You can find all documentation and source of the new version of slackget10 on CPAN

That's all for the moment.

Good day

Arnaud Dupuis