[Xastir-dev] Lurking again and some thoughts
Dalen Kruse
lists at blacklion.org
Sat Mar 27 17:38:19 EDT 2010
About 3 years ago, I had to put my amateur radio hobby on the shelf and deal
with Real Life. Having 2 kids and starting a side business will do that to
you. I'm now in a position where I can return to my hobby and Xastir was the
first place I came back to. It's nice to see the Xastir community is still
active!
Last night, I spent quite a bit of time combing through the mailing list
archives to see what I'd missed. I ran into the long discussion in mid-2008
about Xastir-NG. It looked like the Xastir-NG discussions had some good
points about the direction Xastir should head and what the architecture and
features should be. It seems that effort stalled, but I wanted to make a few
comments.
1. Almost every time I've seen an effort to rewrite or radically re-architect
a software product of a reasonable complexity, it either stalls on the ground
or the end result is garbage. This holds true in both the open source and
commercial world. This isn't to say that these software developers have poor
skills. It's just that the effort required is so huge that nobody knows where
to start. I'm experiencing this in my own job right now. In 2007, we
attempted a complete rewrite (to Java) of a legacy product. We lasted 18
months and it was a complete failure. Our next attempt was to use the legacy
code, but drastically re-architect it. It ended up that we didn't have a
product that we could demonstrate since we broke all of our functionality due
to the re-architecture activity. Another failure. We hit the reset button
again and we are now doing incremental improvements to the architecture while
keeping a stable and working product. We've have more success in the last 3
months than we've had in the last 3 years. This is the point I'm trying to
make: evolutionary changes, not revolutionary, will win out every time. Sure,
there are the occasional drastic re-writes that are successful, but they are
few and far between.
I'm proposing that we take this approach with Xastir-NG. By looking through
the archives, I saw several improvements that could be made incrementally.
Persistence to a SQL database: there's already some of this functionality in
the code baseline. Initially support one or two databases with the code
that's already there. Start making incremental changes to the code base to
push more and more stuff to the database. We don't need a abstract database
layer right away. Start off with supporting PostGIS and SpatiaLite. Add
others as they are requested or patches are submitted. With each new DB
supported, an abstract layer can evolve over time.
OO-design: It looks like the consensus was to use C++. Excellent choice
since C++ interfaces with C nicely. New features can be implemented in C++
while we still leverage all the Xastir goodness we currently have. If a
certain existing feature needs an upgrade, take that opportunity to redesign
it in an OO fashion.
GUI: This is one that will be harder since I've heard the GUI code is very
much tied to Motif and the rest of the code. I would guess the map display
will be the most complex to change. Two ways we can go about this: first, make
incremental changes to separate the GUI/Map from the "backend" code. Second,
start shifting all the non-map GUI code over to another toolkit. I noticed Qt
was mentioned several times in the archives. Great choice. I love Qt. At
some point, we could have a hybrid Qt/Motif GUI where all the GUI except the
map display is in Qt. Ugly? Yes, for awhile. But maybe by that point, we'd
have the GUI code separated from the "backend" enough that we could start
working on a new GUI that's more consistent than the hybrid.
2. Now if my advice in comment #1 is thrown out (I won't be offended if it is),
then the drastic re-architecture could happen. One thing I notice in the
archives is the desire to have a modular architecture where we could have an
Xastir daemon. It seems that aprsd fits this approach. I'm not an expert on
the functionality of Xastir and aprsd, so I could be way off base here. But if
I'm not, aprsd could form the basis of a new daemon architecture. I noticed
that aprsd development has pretty much stopped for a few years now, so it
could be something that the Xastir community could take over. This could also
be something that we could do with an incremental approach like I outlined
above.
OK, I'm done with this long-winded message. I don't want anyone on the dev
team to think that I'm putting them down. I'm not. I'm amazed everytime I
use Xastir and I greatly admire and appreciate what the developers have done
with this product. I'm open to comments/questions/flames.
Dalen
--
Dalen Kruse
KC0OVU
More information about the Xastir-dev
mailing list