53
I Use This!
Moderate Activity

News

Analyzed 12 days ago. based on code collected 13 days ago.
Posted almost 12 years ago
One thing I always disliked about the way we organized our Horde repository was the fact that we have all library modules and applications lumped together in a single git repository. Of course there are some good reasons for that type of monolithic ... [More] repo. But for someone just interested in our (really powerful) IMAP library this is a drawback: The library is hidden somewhere between the other libraries and if you want to work on it you will nevertheless have to clone the whole repository. And there are other situations in which small, module specific repositories would make sense. So far I wasn't aware of a solution that would allow for a reasonable compromise. Originally I only knew that git submodule would allow including additional git repositories into a master repository. This approach has some drawbacks though. We could construct the current horde repository out of a bunch of submodules. But the work flow within this master repository would be significantly more cumbersome as git submodule interferes with the default way of working with git. git subtree to the rescue! git subtree however seems to allow for the perfect solution: Separate subrepositories can co-exist with the monolithic master repository. And any commits to either of them can be exchanged between them. The stream of commits to the monolithic master can even be transmitted automatically to the splitted repositories. None of these steps seem to introduce any additional overhead to any of these repositories.Installing "git subtree"The subtree command has been added to the git-1.7.11 release. But as many distributions do not yet offer this variant you can install the tool in a more hackish way if desired:cd /usr/lib/git-core/ wget https://raw.github.com/apenwarr/git-subtree/master/git-subtree.sh mv git-subtree.sh git-subtree chmod 755 git-subtree Replacing a "submodule" with a "subtree"A while ago I pulled the Jenkins installation procedures into our horde-support repository using git submodule. In order to give git subtree a first test run I replaced the Jenkins submodule by the subtree approach. The first step had to be the removal of the old submodule:git rm .gitmodules ci/jenkins git commit -m "Remove the jenkins installation procedures as a submodule. Prepares for replacement by 'git subtree'" Now I imported the repository previously registered via git submodule using git subtree:git subtree add --prefix=ci/jenkins --squash https://github.com/wrobel/jenkins-install.git master This pulled the external repository into the current horde-support repository at prefix "ci/jenkins" and squashed all commits of the imported repository into a single commit. The imported code is now an equivalent citizen to the rest of the code in the repository - none of the standard git work flows are affected in any way.Of course the interesting question is whether updates to this imported code can be merged back into the original repository. I commited a small change within the imported code:git commit -m "Update to jenkins-1.475" ci/jenkins/jenkins.mk This change can indeed now be splitted into the subtree again and exported to the original archive:git subtree split --prefix=ci/jenkins --annotate="(horde-support) " d73edc4878c8.. --branch ci-jenkins What happens here is that git subtree splits the path specified with the prefix option into a separate branch named ci-jenkins. It will prefix any commit transported into this branch with (horde-support) to indicate the origin of the commit. Usually the branch range given here (d73edc4878c8..) is unnecessary for the operation. But the code within ci/jenkins had been included as submodule before commit d73edc4878c8. This part of the history should not be imported into the splitted branch.After the splitting operation created the new ci-jenkins branch in my repository it should be equivalent to our original, imported repository. Thus I was able to push back to it:git push [email protected]:wrobel/jenkins-install.git ci-jenkins:master Using "git subtree" for the horde repositoryCan the subtree approach be used to have both a monolithic horde repository as well as the small modular repositories at the same time? This would be the best of both worlds: While we develop in the monolithic horde repositories we allow other developers to also watch and patch single modules. If the commits from the monolithic repo can be transferred to the modular repos on a regular basis while we can also import patches the other way around without blowing up any of the associated git repos: I'd be reTruncated by Planet Horde, read more at the original (another 3911 bytes) [Less]
Posted almost 12 years ago
All’s well that ends well. During the last few days, the first alpha releases of the Horde Framework and some of its core apps hit the announcement list. Horde 5 sports a completely revamped user interface which allows a much tighter integration of ... [More] the portal dashboard, ajax mode applications like the IMP Webmailer or traditional mode applications (whups ticketing etc). While IMP, turba and the Ingo Mailfilter are already available as alpha packages, the calendar (kronolith) is not yet done. However, today Horde release the first alpha version of the sesha inventory app. I have been working on sesha and related packages since horde 4, but things dragged on. Sesha allows to organize any kind of items in a searchable inventory. First you have to define properties like age, weight, length or location of an item. A defined group of properties makes up a category, something like an inventory type: Books, DVDs, network interfaces or computer monitors all have very different sets of properties. With sesha, there is no limit on the things you can put into your catalog. Just create categories of properties and finally add stock. Sesha has been released under the GNU General Public License and may be used free of charge. [Less]
Posted almost 12 years ago
All’s well that ends well. During the last few days, the first alpha releases of the Horde Framework and some of its core apps hit the announcement list. Horde 5 sports a completely revamped user interface which allows a much tighter integration of ... [More] the portal dashboard, ajax mode applications like the IMP Webmailer or traditional mode applications (whups ticketing etc). While IMP, turba and the Ingo Mailfilter are already available as alpha packages, the calendar (kronolith) is not yet done. However, today Horde release the first alpha version of the sesha inventory app. I have been working on sesha and related packages since horde 4, but things dragged on. Sesha allows to organize any kind of items in a searchable inventory. First you have to define properties like age, weight, length or location of an item. A defined group of properties makes up a category, something like an inventory type: Books, DVDs, network interfaces or computer monitors all have very different sets of properties. With sesha, there is no limit on the things you can put into your catalog. Just create categories of properties and finally add stock. Sesha has been released under the GNU General Public License and may be used free of charge. [Less]
Posted almost 12 years ago
All’s well that ends well. During the last few days, the first alpha releases of the Horde Framework and some of its core apps hit the announcement list. Horde 5 sports a completely revamped user interface which allows a much tighter integration of ... [More] the portal dashboard, ajax mode applications like the IMP Webmailer or traditional mode applications (whups ticketing etc). While IMP, turba and the Ingo Mailfilter are already available as alpha packages, the calendar (kronolith) is not yet done. However, today Horde release the first alpha version of the sesha inventory app. I have been working on sesha and related packages since horde 4, but things dragged on. Sesha allows to organize any kind of items in a searchable inventory. First you have to define properties like age, weight, length or location of an item. A defined group of properties makes up a category, something like an inventory type: Books, DVDs, network interfaces or computer monitors all have very different sets of properties. With sesha, there is no limit on the things you can put into your catalog. Just create categories of properties and finally add stock. Sesha has been released under the GNU General Public License and may be used free of charge. [Less]
Posted almost 12 years ago
All’s well that ends well. During the last few days, the first alpha releases of the Horde Framework and some of its core apps hit the announcement list. Horde 5 sports a completely revamped user interface which allows a much tighter integration of ... [More] the portal dashboard, ajax mode applications like the IMP Webmailer or traditional mode applications (whups ticketing etc). While IMP, turba and the Ingo Mailfilter are already available as alpha packages, the calendar (kronolith) is not yet done. However, today Horde release the first alpha version of the sesha inventory app. I have been working on sesha and related packages since horde 4, but things dragged on. Sesha allows to organize any kind of items in a searchable inventory. First you have to define properties like age, weight, length or location of an item. A defined group of properties makes up a category, something like an inventory type: Books, DVDs, network interfaces or computer monitors all have very different sets of properties. With sesha, there is no limit on the things you can put into your catalog. Just create categories of properties and finally add stock. Sesha has been released under the GNU General Public License and may be used free of charge. [Less]
Posted almost 12 years ago
All’s well that ends well. During the last few days, the first alpha releases of the Horde Framework and some of its core apps hit the announcement list. Horde 5 sports a completely revamped user interface which allows a much tighter integration of ... [More] the portal dashboard, ajax mode applications like the IMP Webmailer or traditional mode applications (whups ticketing etc). While IMP, turba and the Ingo Mailfilter are already available as alpha packages, the calendar (kronolith) is not yet done. However, today Horde release the first alpha version of the sesha inventory app. I have been working on sesha and related packages since horde 4, but things dragged on. Sesha allows to organize any kind of items in a searchable inventory. First you have to define properties like age, weight, length or location of an item. A defined group of properties makes up a category, something like an inventory type: Books, DVDs, network interfaces or computer monitors all have very different sets of properties. With sesha, there is no limit on the things you can put into your catalog. Just create categories of properties and finally add stock. Sesha has been released under the GNU General Public License and may be used free of charge. [Less]
Posted about 12 years ago
We always had a wiki page on how to create your own Horde module. The steps outlined there allow you to get started quickly. There was no specific reason though why those steps could not be automated. Based on the core script presented on the ... [More] aforementioned wiki page I created a complete script that allows you to initiate a new Horde module with a single command. framework/devtools/horde-generate-module.php fancy "Gunnar Wrobel " The line above will create the stub for the new Horde application Fancy. Once you created the new module this way you still need to register the new application in the Horde registry. This can be done within the directory config/registry.d. For details see the README file in that directory. In addition you can set an icon that should represent your module. Refer to the instructions on the wiki page for that. [Less]
Posted about 12 years ago
We always had a wiki page on how to create your own Horde module. The steps outlined there allow you to get started quickly. There was no specific reason though why those steps could not be automated. Based on the core script presented on the ... [More] aforementioned wiki page I created a complete script that allows you to initiate a new Horde module with a single command. framework/devtools/horde-generate-module.php fancy "Gunnar Wrobel " The line above will create the stub for the new Horde application Fancy. Once you created the new module this way you still need to register the new application in the Horde registry. This can be done within the directory config/registry.d. For details see the README file in that directory. In addition you can set an icon that should represent your module. Refer to the instructions on the wiki page for that. [Less]
Posted about 12 years ago
We always had a wiki page on how to create your own Horde module. The steps outlined there allow you to get started quickly. There was no specific reason though why those steps could not be automated. Based on the core script presented on the ... [More] aforementioned wiki page I created a complete script that allows you to initiate a new Horde module with a single command. framework/devtools/horde-generate-module.php fancy "Gunnar Wrobel " The line above will create the stub for the new Horde application Fancy. Once you created the new module this way you still need to register the new application in the Horde registry. This can be done within the directory config/registry.d. For details see the README file in that directory. In addition you can set an icon that should represent your module. Refer to the instructions on the wiki page for that. [Less]
Posted about 12 years ago
While updating our demo server at demo.horde.org I also wanted to get some kind of automatic reset for the demo user preferences. The aim was to allow each user testing our demo system to play around with the system in every way desired - while at ... [More] the same time resetting to the defaults once the next user logs in. This way the second user wouldn't get an unpleasant surprise and turn away from Horde if the first user selected our beloved "Barbie" theme. By the way: this one will be dropped with the redesign - I hope nobody flames our mailing lists and starts a revolution to get this pink atrocity back :) In order to achieve that I needed to move from SQL based preferences to Session based preferences. Using the latter would purge any preference changes at the end of the session. In order to provide the users with some sane and useful defaults though I also Wanted to copy the old values from the SQL database into the prefs.local.php files. This way I can set the preferences so that users are immediately greeted with a portal screen that demonstrates the twitter and facebook integration. Converting SQL based preferences to prefs.local.php default settings is something you might be interested in for your installation as well. It allows you to set appropriate defaults for one initial test user and convert those into site-wide defaults for your installation. How to do that without much hassle? horde-prefs to the rescue! horde-prefs is a small tool that allows printing, exporting, and importing of preference values stored in a backend. In order to use the tool you need to define a configuration file for the specific backend you want to access. For the demo server this has been a SQL database: $conf['driver'] = 'Sql'; $conf['params']['db'] = new Horde_Db_Adapter_Mysql( array( 'persistent' => false, 'username' => 'root', 'password' => 'PASSWORD', 'socket' => '/var/run/mysqld/mysqld.sock', 'protocol' => 'unix', 'database' => 'horde', 'charset' => 'utf-8', 'ssl' => true, 'splitread' => false, 'phptype' => 'mysql', ) ); Now you can access the stored preference values by calling the horde-prefs tool. As horde-prefs is not stored under /usr/bin on the home server but uses a non-standard location I prefix the command with an explicit PHP include path: php -d include_path="/var/www/pear/php" /var/www/pear/horde-prefs config.php guest print horde The previous command prints all preferences values stored for the guest user for the application horde: ... $_prefs['twitter']['value'] = "a:2:{s:3:"key";s:50:"183748047-vr6RLMOiYhfbfTH3qI8Lc8E32jF4UGGFbIxdkZyt";s:6:"secret";s:42:"i2DGXInJBW4kk3r2bvBdrxzUKMxL6AYS4u97WAJDyQ";}" $_prefs['upgrade_tasks']['value'] = "a:7:{s:5:"horde";s:6:"4.0.13";s:9:"kronolith";s:5:"3.0.5";s:8:"imp_auth";s:5:"5.0.8";s:3:"imp";s:5:"5.0.8";s:5:"turba";s:5:"3.0.7";s:5:"whups";s:10:"2.0-ALPHA1";s:6:"gollem";s:10:"2.0-ALPHA2";}" ... To convert this into a format suitable for the prefs.local.php files I simply used sed. php -d include_path="/var/www/pear/php" /var/www/pear/horde-prefs config.php guest print horde | sed -e "s/^\([^:]*\): \(.*\)/\$_prefs\['\1'\]\['value'\] = '\2';/" >> /var/www/config/prefs.local.php [Less]