This is my first post about the software I created called Debreate.
WHAT IS DEBREATE?:
Debreate is a utility designed to aid in packaging software & media for Debian & Debian-based Linux systems, such as Ubuntu & Linux Mint. It can be considered a GUI front-end for command line utilities like dpkg, & potentially more. But it does more than just run a packaging command. It organizes data & files into a staged directory tree, a required step before the back-end packaging utility can be run. It also allows data to be saved to project files & re-opened for editing. It provides a wizard-like interface & organizes the necessary input information into sections or pages, simplifying to potentially complicated process.
The project was started a few years ago while looking for a simple solution to creating Debian packages with a graphical user interface. I came across the project Packin, hosted at SourceForge. The software did what I wanted at the time. But as I got more into developing I wanted it to do more. Packin, however, did not seem to be actively developed. I had been trying to learn how to write code (or script) & decided this would be a good time to attempt my own project.
I wasn’t interested in learning Java (the language that Packin is written in). I had been dabbling in Python & decided to go with the wxPython toolkit since it was cross-platform (though this shouldn’t have influenced my decision at the time since Debreate was intended specifically for use on Debian Linux platforms) & used native widgets for most systems. wxPython wraps around the C++ library wxWidgets. I chose to have the project hosted on Sourceforge, perhaps one of, or the most, popular open-source software hosting sites at the time.
I took a break for a couple years, working on some other projects & things. I joined the Arianne Project & ended up learning some Java while working on the game Stendhal. This has probably turned out to be the most helpful experience I have had yet learning how to code.
After my break, I have resumed work on Debreate & am pretty excited about where it is going. While the project is still hosted on Sourceforge, I have migrated it over to GitHub, from where I now do most of the development. Moving to GitHub seems to have attracted the help of other developers. The site makes contributing to the projects of others very easy & enticing. After only a week or so after moving to GitHub, I already had a few offers & suggestions. Overseeing & critiquing contributions to my own projects is not something that is comfortable or comes naturally to me. But I am getting more used to it & am happy to say that there are others who have now contributed code to Debreate. Up until this point, there had been help with translations into different languages, but I had been the only code contributor (as far as I remember; I apologize if this is not the case).
I want to give a very big thank you to Hugo Posnic (Huluti) who created Debreate’s new homepage. I am not especially skilled at writing webpages, & managing a site is difficult as it is. But Hugo has used his excellent skills to create a modern page with more innovative features. This new design helps me worry less about posting updates to the site & focus more on the project itself.
I am working on two upcoming releases. The first of which will be version 0.7.12 with some bug fixes & compatibility with wxWidgets 3.0. Plans are to release it within the next few days. This will likely, & hopefully, be the last release for the 0.7.x line.
The next release will be 0.8.0. I am more enthusiastic about this release & have probably put more time & testing into it than any other. It has many improvements & some new features (full changelog):
• Copyright templates generation (introduced in 0.7.11)
◦ Uses more directories for retrieving templates
‣ /usr/share/common-licenses (system licenses, previously the only templates used)
‣ Templates shipped with the app stored in its installation directory
‣ User-defined templates can be added to /home/[username]/.local/share/debreate/templates/licenses
▹ These templates take priority over those from the other searched directories
• Installation of license & changelog texts use a more Debian-like standard
◦ Changelog is compressed with Gzip
◦ License text is installed to the standard directory /usr/share/doc/[package]
• Project files are now stored in a compressed archive rather than a single text file
◦ Uses .dbpz file extenstion
‣ Projects can be compressed in multiple formats:
▹ Uncompressed (tar archive)
▹ Gzip compressed tar archive
▹ Bzip2 compressed tar archive
▹ XZ compressed tar archive
▹ Zip compressed archive
◦ Retains compatibility with reading legacy text format (.dbp)
• Projects MimeType association
◦ application/x-dbpz & application/x-dbp are now associated with Debreate
‣ While 0.7.12 supports association with the application/x-dbp, this actually started with 0.8.0 development
• Logging & debug log window
◦ Program logs to help with debugging are now stored in /home/[username]/.local/share/debreate/logs
◦ When logging level is set to “debug” a log window is displayed showing some output of the program
‣ The log window displays the output saved in the current log file
• Command line arguments now supported
◦ There was some support for this in earlier versions but has been improved
‣ legacy: Use wxWidgets 2.8 rather than 3.0
▹ This command will likely be removed & support for wx 2.8 dropped in the future
‣ -v|--version: Displays Debreate version
‣ -h|--help: Displays help/manpage contents
‣ -l=|--log-level=: Sets logging level to one of the following
▹ error (default)
‣ -i=|--log-interval=: Set the refresh rate for log window when debugging is enabled
▹ Higher value is lower frequency
▹ Default is 1
◦ Input project file
‣ The last argument supplied, if not an option, is assumed to be a Debreate project file or archive
‣ Project files are loaded from an argument just as would be from the File → Open menu
Recently, I have also created a PPA on Launchpad for distributing future releases. It’s possible that I will move the releases into a more general PPA & delete the one specific to Debreate.
WHAT TO EXPECT IN THE FUTURE:
I plan to have many more changes in the 0.8.x line, one of which will be the option to create man pages for a package. Development to implement this has already been started & a “Man Pages” page can be previewed if Debreate’s log level is set to “debug”. Currently the page is useless & does nothing in the final build.
It is also planned to be able to create multiple menu launchers (a.k.a. .desktop files) for a single package.
One of my most desired features is to be able to use Debreate to create Debianized source packages. While creating binary .deb packages is great & useful, it does no good if a developer wants to get a package into an official Debian/Ubuntu APT repository or Personal Package Archive (PPA) hosted on Launchpad. Debian source packaging takes a fairly different road altogether & is a bit more complex. As it was with me, it can be quite daunting to a new developer/packager. The task to create a binary package from source can be part of the Debianization process. Currently, Debreate does not use this method. It works purely with binary data & a simple packaging command to create .deb packages. One of my greatest hopes behind Debreate is to make developing & packaging for Linux distributions more appealing to software developers. I am hopeful to have this feature implemented in the 0.8.x lineup or begin 0.9.0 with it.
Another thing I am hopeful for is to make Debreate usable on platforms that are not Debian-based. Theoretically, it is already possible to use it on FreeBSD, since the OS supplies a version of dpkg in its Ports & Packages repositories. I would like to make use of various packaging methods to allow the software to be used on systems that do not supply Debian packaging utilities. One possible method would be to use or supply a custom version of the Unix archiver (ar), which is the actual format used in binary .deb packages. Unfortunately though, there are some complications. The ar format has never been standardized, which has resulted in different variations. This has created incompatibilities between versions. These incompatibilities are present in Debian & derived systems. The ar archiver supplied by Debian (& apparently most Linux systems) is a GNU derivative, while the dpkg utility uses a format similar to that of the BSD variant.
• Debian forum thread on .deb built with dpkg vs with ar
• FreeBSD ar format manpage
• Descriptions of BSD & GNU variants on Wikipedia
• Wilmer van der Gaast's post about .deb files
HOW TO REQUEST FEATURES OR REPORT BUGS:
Debreate is hosted at SourceForge & GitHub.
Use the following links to request features or create bug reports:
◦ Feature requests
◦ Bug reports
More on alternativeTo.net