Blue Static

Archive for the ‘Bugdar’ tag

Bugdar2 Update

Posted on September 18, 2010 at 21:52 UTC, filed under the category Bugdar. Tags: Bugdar, Bugdar2,

It’s been a while since I last wrote about Bugdar2 development, so I thought I’d post an update.

Over this summer, I managed to get a lot of work done for Bugdar2 and started working through the roadmap to the Alpha 1 milestone. The purpose of the Alpha 1 milestone was to do as much of the core backend as possible, without writing much templated UI. While I did end up writing some skeleton templates to test basic functionality, most of the backend work was tested through unit tests.

When I got to the point where I couldn’t do much more backend work without having interfaces to add and modify data, Alpha 1 was complete. The goal of the next milestone Alpha 2, which I’m currently working, is to get the basic UI shell up. I’ve started building the CRUD templates for entities like bugs, settings, usergroups, and attributes. In this milestone, the initial look and feel will come together and a round of string extraction (the first step towards localization) will occur.

Here’s two screen shots of Bugdar2 as it currently exists. These are very rudimentary and will evolve as more time is put into them.

Long-overdue update

Posted on February 9, 2010 at 05:25 UTC, filed under the category Bugdar. Tags: Bugdar, Chromium, mac os x, MacGDBp,

So I know I promised at Thanksgiving an update on the state of things. Well I lied/got busy. Sorry; these things happen. The past few months have been a whirlwind. So here’s a brief personal update before I talk about software.

In May 2009 the Mac port of Chromium (the open source project that Google uses for their Chrome browser) was starting to gear up. I’d been interested in working on a Mac browser project for a while; but Firefox’s code seemed beastly and I never have been a fan of XUL. Safari is great, but it isn’t open source. Enter Chromium: an open-source, truly native, WebKit-based browser. Consider it love at first sight. Fast forward 12 patches and four months later to August when I am nominated and made a committer. My work has all involved bridging the cross-platform C++ model (as in MVC) to Objective-C/Cocoa land. I wrote the Mac the page info window, history menu, cookie manager, font and language settings, download settings, and added favicons throughout various parts of the UI. Now, present day. Last week Google offered me an internship position in Manhattan. I’m thrilled at the opportunity and am excited to start work there in May with such smart, interesting, and talented people. I expect to learn a lot!

So now let’s talk software.

Bugdar

Last time I wrote about the future of Bugdar 2, I posted a link to a list of phases development that would occur. The original plan was to create 1.3 as a stepping stone to 2.0. That line of development has since been abandoned. Instead, I decided to greenfield the project. There were many reasons for doing this; but here are the two big ones:

  1. I have a better, more focused vision of what I want Bugdar 2 to be. When writing Bugdar 1, I didn’t have a clear goal of what I wanted — there was no philosophy to the design, I was merely thinking “copy Bugzilla, but do it better”. Overall, I think I was successful with this. But this is not Bugdar 2, at all. Bugdar 2 will be a refined, incredibly flexible system that I am excited to share with you. But because the two projects will be so different, trying to create a large, temporary scaffolding system (version 1.3) was extremely time consuming and kludgey.

  2. ISSO. Originally dubbed the “Iris Studios Shared Objects” framework. This thing is ancient. The first version dates back to when I was a rather n00b PHPer. The first commit was from 12 January 2005! Since that time I’ve had a lot more development experience and completed a Minor in Computer Science. A better, more-efficient architecture could be devised.

I wrote an entirely new PHP framework (that will require PHP 5.3+) that is a bare-minimum, no-frills framework. I call this Phalanx and the code is currently available on Github; it is licensed under the GPL version 3. Phalanx is event-driven. Rather than writing another MVC framework, I decided to look at the problem of web frameworks through the lens of functional programming. The problem with MVC on the web is the lack of state; HTTP is not persistent. Functional programming focuses more on inputs and outputs (and the transformations between them), which is how Phalanx works. Each Event class defines a set of inputs that it accepts and the outputs it will return. This also makes unit testing much more clear-cut. I won’t get into further details here, though. That’s for another post.

So before I could start moving again on Bugdar, I had to write this new framework. That took a matter of months (July – January). But I’m now back on Bugdar. Phalanx makes development really fast, and in the past two days I’ve implemented the basic user system, a preliminary Auth2 API, and initial submission and listing of bug reports. I’ve posted a new roadmap for Bugdar 2.

MacGDBp

I’ve been refactoring and cleaning up MacGDBp’s code over the past few months. It’s also been accumulating various fixes for non-critical bugs. I’d also like to re-tackle the socket/network layer for 1.4, as I tried and failed to improve this in 1.3. You can probably expect this update before Spring.

Site Redesign

I’m also working on redesign the Blue Static site. It really hasn’t changed since 2006 (insert the ‘learned a lot’ bit here) and it’s time. I’m not very far on this, yet.

Wow that’s a lot. More in the next few days. UI mocks to come.

Bugdar 1.2.3 and the Future

Posted on March 21, 2009 at 19:57 UTC, filed under the category Bugdar. Tags: Bugdar,

Today I released Bugdar 1.2.3, exactly 364 days since the last release of Bugdar. I regret that this release was so long-coming and was far overdue. This release fixes a bunch of bugs that have been accumulating over the course of the past year.

In the future, I will not drag my feet when releasing minor updates like this. The problem is that the current code base for Bugdar (currently the 2.0 Alpha) is quite incompatible with the 1.2.x line. This means, all fixes for bugs affecting 1.2.x need to be redone for 2.0 — which is a lot of duplication of effort. So, rather than continuing to do that, I came up with a better solution.

Bugdar 2.0’s development has been broken up into distinct phases. Unfortunately, due to my own lack of time, progress is slower than I would like. Therefore, I’ve decided that there will be a 1.3 branch to “bridge the gap” between the far-off 2.0 and the current, aging 1.2 branch. Phases 1-3 of the 2.0 development cycle are really underlying architecture changes that just bring the code base up-to-date. After those three phases are complete, Bugdar 2.0 will look and work essentially like version 1.2, but will be more robust and (most importantly) will have a significantly improved language system. It is after Phase 3 that I intend to branch the 2.0 development line into two (the maintenance branch 1.3.x and the current development head 2.0). This would effectively kill the 1.2.x line. And because the two branches would have a more recent ancestor, migrating patches should be easier.

This branching strategy requires little work on my part and will reduce the time I spent migrating patches between branches. Also, it will put in place a language system that will work across 1.3 and 2.0 which is crucial. I have been wanting to create a language pack exchange system so that users can collaborate on and exchange translations of Bugdar, but at present the MO/Gettext system is not good for that. This new language system will be designed to do that. And this branch strategy will get that deployed sooner rather than later.

I wish I could have some sort of timeline for when 1.3 will come out, but I can only really say “as soon as I can.”

Bugdar 2.0 Admin CP

Posted on January 7, 2009 at 18:42 UTC, filed under the category Bugdar. Tags: Bugdar,

The new Admin Control Panel in Bugdar 2.0.

The new Admin Control Panel in Bugdar 2.0.

The navigation system has changed from the tabbed navigation in the 1.1 and 1.2 series. The navigation sections are openable via JavaScript, which will allow navigation of the entire Admin CP from any page, rather than limiting navigation to the current tab section.

Pipeline Update

Posted on October 16, 2008 at 17:53 UTC, filed under the category Uncategorized. Tags: Bugdar, Commander, iD3, MacGDBp, NewzGrab, pipeline,

It’s been a while since I discussed pipelines, so I’m going to talk in this post about the state of various projects, as well as some talk on new projects!

COMPLETED PROJECTS:

MacGDBp

Released this summer, MacGDBp has been a tremendous success. This week version 1.1.2 was released, which address two bugs, one of which was a crasher. I’ve got big plans for version 1.2 and 1.3, but these will have to wait for other projects to be completed.

CMS

In my last pipeline update, I mentioned the CMS I was building for my university’s TV station. This project launched only two weeks ago, so the past month and a half I’ve been working feverishly to get this done. It’s now complete and so this will no longer be affecting development.

CURRENT PROJECTS:

Bugdar 2

The first milestone in Bugdar 2’s development phases was completed a few weeks ago. Since then, not much has happened because all of my effort went to deploying the aforementioned CMS. However, work will be resuming on phase 2 and development will be continuing. This week I went through the Blue Static bug tracker and triaged a bunch of bugs that had been left unresolved.

NewzGrab

I’ve started working on this project in the past few days. As stated in the previous pipeline posts, this is a Usenet downloader for NZB files. However, I’m writing this as a cross-platform application. Most of the code is being written using C++ and Boost, which allows it to be platform-portable. I intend to then create native interfaces for various platforms (initially, only the Mac one will be created).

MyWishlist

This project is mostly complete. A few interfaces need to be updated and created, but on the whole this is largely done. I haven’t actively worked on this in a few months, and I consider it to be one of my lower priorities.

NEW PROJECTS:

iD3

I realized the other day that the Mac lacks a good, free ID3 tag editor. I quickly found id3lib and wrote a simple Mac interface for it. Version 1.0 will be released in a few days, but will be very minimal. I intend to add more features (and more tags to edit) in the future, but the necessary fields will all be present in v1.0.

“Commander”

This is the project I’m most excited about. It’ll be a unique take on launchers (e.g. QuickSilver, Butler, LaunchBar) that is for pro-users only. I won’t be going into the details until I have something to show, but this will be one awesome app!

Bugdar 2.0 β Phase 1 Complete

Posted on September 17, 2008 at 16:58 UTC, filed under the category Bugdar. Tags: Bugdar, ISSO,

I’m pleased to announce today that Bugdar 2.0’s first development phase has been completed. During this phase, all of the Bugdar code was ported to the ISSO3 framework, allowing it take full advantage of property access control, static functions, and the latest ISSO3 conventions.

The point of this phase was to upgrade the ISSO method calls to make refactoring code a simpler process. Had this first phase not upgraded ISSO-based code, the refactoring phase (phase 4) would have been twice as long and twice as much effort because the underlying ISSO code would be out-of-date.

Next in Bugdar’s development is the admin control panel rewrite. Before this can happen, however, a new ISSO3 module must be developed to make creating the admin interface easier. This will include removing the BSPrinter classes (which currently use PHP functions to generate HTML) and replacing it with well-designed CSS style sheets that will be used in templates in the Admin CP.

Separation of the view-controller logic in the Admin CP will make the code more agile and will allow for a more intuitive interface because the HTML will not be generated via on-the-fly code, but rather by designed HTML.

Localization in Bugdar 1.2.2

Posted on March 24, 2008 at 03:22 UTC, filed under the category Bugdar. Tags: Bugdar, Gettext, localization,

Some people have been running into issues with the PHP Gettext extension. The problem is that to use the extension right, it requires that a lot of server environmental variables to be tinkered just right. And I’m not even sure it works on Windows (to be honest, I don’t test on Windows servers at all).

However, I was looking at the MO format specification and it is pretty easy to parse, so I wrote a custom implementation of Gettext in PHP. This custom implementation does not rely on the Gettext extension at all, so this will also solve the problem for people who need to localize and don’t have the extension installed.

Because I didn’t want to introduce such a sweeping change in a point-release, this is currently disabled. With a hidden toggle and a simple query, you can try out the new localization feature if Gettext is giving you trouble.

Steps to enable the new MOReader localization system:

  1. Open includes/config.php and add this line anywhere in the file:

$debug = 1;

  1. Go to Administration –> Bugdar Settings and find the setting labeled “Custom Gettext Localizer” and enable it.

  2. Run this SQL query to clear the template cache (and thus all the calls to the old localization system):

TRUNCATE TABLE template

  1. Back in includes/config.php, remove the line you added above. Debug mode should not be used in a production environment.

This hidden toggle will disappear in 2.0 because it will be the default (and only) translation system. But like I said, it was too big to make the default in a maintenance release. You will only have to enable this once (it will stick across upgrades, etc.). If you want to disable it, just follow the above steps, but just flip the switch to “No.”

On Pipelines, Expansive

Posted on February 28, 2008 at 20:59 UTC, filed under the category Uncategorized. Tags: Bugdar, free time, ISSO, MacGDBp, mkrcpt, MyWishlist, NewzGrab, pipeline, WebFreeChart,

It’s time to talk pipelines. Initially, I was going to talk timelines. But timelines have the problem of addressing time, which is very difficult when you have 40+ hours of activities and school to do during the week. So, pipelines.

I’d like to start by announcing the completion of ISSO3. I’ll go into the details of why it took so incredibly long to finish in a future post, but you should know that it is finally done. What does the completion of ISSO3 mean? It means that all PHP projects can now resume development and use this framework. ISSO3 also requires PHP 5.2, which means that any future major releases of PHP projects will require PHP5.

That’s one less thing in the pipeline!

But what else is in this (expansive) pipeline? (Note: This is roughly in order of when the items will be finished. I very may well skip around and work on various projects when I feel like it, but this order is based on how much work is done versus how much has to be done).

mkrcpt

I compile a lot of open source projects myself rather than using ports or fink. Many people are familiar with the make; make install process. One of the problems with make, though, is that there’s no uninstaller. This to me is a problem. So I decided to solve said problem. Enter two very small C programs: mkrcpt and unrcpt. Instead of typing make install, you would invoke mkrcpt. What mkrcpt does is it index all of the items in the installation path by last modified date, then runs make install for you, and reruns the index algorithm. It then stores all the changed files in a receipt file. If you ever want to uninstall a program, just run unrcpt.

What’s left: Testing and a few fixes to the receipt file format.

MacGDBp

PHP developers have access to a really cool extension called Xdebug that has remote debugging functionality via a protocol called GDBp. Both Windows and Linux have GUI clients for this protocol, but the Mac does not. The lack of a client irked me because the functionality is quite helpful.

What’s left : The basic functionality is all done, but there’s still a bit left to do to make it useable. Those items are: adding line numbers to source views, adding breakpoints (currently you use the xdebug_break() function in your code), and making an icon.

CMS

No, I’m not writing another CMS solution to compete with Joomla, ExpressionEngine, etc.. This is a private project for my university’s TV station. The website is going to be completely redone to allow for modular content blocks and dynamic templates. The project looks fairly straightforward, so it shouldn’t block things in the pipeline.

What’s left: I haven’t started writing a single line of code yet, but it’s completely planned out.

Bugdar 2

I am very excited about working on Bugdar 2, but as you can see, there are a lot of things in the pipeline. I’ll post more about this as the pipeline start’s clearing up and work begins.

What’s left: Everything.

NewzGrab

This is another Mac app that will take in Newzbin (.nzb) files and download them from your favorite NNTP server. I’ve only mapped out the classes and hand-drawn a mockup interface. More on this will be posted as work commences.

What’s left: Everything.

MyWishlist

A while ago I had a project called MyWishlist that allowed you to setup a wishlist site for you and your friends/family. I won’t go into the details here, but I’m rewriting it to be a hosted application as opposed to a downloaded one. Don’t expect it anytime soon because it’s a very low-priority item.

What’s left: Deciding what language to write it in. Ruby? PHP? Python? Who knows?!

WebFreeChart

This is a PHP5 OOP charting library. It’s boring to work on. But I need it. It’ll happen… eventually.

What’s left: Almost everything.

So, the above is a list of all the projects I’m juggling. It’s a lot. There is no timeline as to when things will be done. I wish I could give one, but with the amount of Real Life ™ things I have to do, I just work when I’m not tired, I’m in the mood, and I have free time. If those three stars align, progress gets made. I’ll keep you guys updated on any major developments. Your patience is appreciated.

The Bug Back-Log

Posted on October 17, 2007 at 13:43 UTC, filed under the category Bugdar. Tags: Bugdar, bugs, development, free time, ISSO, WebFreeChart,

If you’ve taken a look at the bug tracker recently, you’ll see quite a few bugs back-logged. I’m not ignoring them (I still check out each individual report when it’s posted or updated), and if the bug is critical I’ll, of course, fix it. But at the moment I’m focusing completely on finishing the rewrite of ISSO. My time is extraordinarily limited so things are taking a lot longer than expected, but I’m really excited to start work on Bugdar 2.0. Before I can get there, though, ISSO needs to be finished. Here’s a little update on what’s left to do for ISSO:

API

The API module is what I’m currently focusing on. The error system is getting an overhaul to use PHP5’s exception system instead of trigger_error(). Furthermore, the validation system is being rewritten to work with the new error system.

Db

Both MySQL and MySQLi modules are done and have complete unit tests. I still need to update the PostgreSQL module, however, because I don’t have Postgres on my laptop yet.

Graph

The graphing module, which has yet to be used in an application, is being removed. Instead, I have started a new project called WebFreeChart to take the place of it.

Pagination

I have yet to unit test and update the pagination module. This will pretty much stay the same, though instead of using templates (whose names are hard-coded), I’ll switch to hooks and callbacks.

Printer

The printer classes are used to generate the green-styled interface for admin control panels and the like. I have already rewritten the classes but I am unhappy with them because they’re so verbose to use. I’m now thinking of ditching it for XML-based (maybe even XSLT) generators. There’d be various XML tags for the existing classes and methods to generate form elements with the proper markup. This would separate the presentation from the logic, while still not having to worry about styling and direct HTML.

I hope to finish these things off soon to get working on Bugdar 2.0, but because my time is so limited, I really can’t give an ETA. I’ll try to keep posting updates so you’re aware of what’s going on.