[Circle-dev] Grand Overview Of Everything
Paul LeoNerd Evans
leonerd at leonerd.org.uk
Fri Feb 13 20:28:59 GMT 2009
As promised earlier, an overview of the current state of the universe.
People who might know me will probably know I'm much better at answering
questions, than just spouting knowledge as from the lap of the Gods.
With that in mind, I hope to but doubt I shall deliver on a complete
full overview of everything in all its detail. Please feel free to ask
questions. Lots of them. I don't mind if they're sensible, or meaningful
even - I can filter that if necessary ;) Just hint what I need to say
more about...
Anyway, on with the show. I feel like a nice diagram to start with.
Pictures always help. Here is one:
X11 server
+------------------------+ ^
| circle-fe-gtk | #
| | #
ircd <==# #=======> Tangence GTK <====#
# # | IO::Async |
# # +------------------------+
# #
+-------#-----------------#------+
| # circle-be # |
| V V |
| Net::Async::IRC Tangence |
| IO::Async ^ |
+-------------------------#------+ TTY
# ^
# +--------------------------+ #
# | circle-fe-term | #
# | | #
#========> Tangence Tickit <==#
| IO:Async |
+--------------------------+
This diagram hopefully demonstrates the key programs currently present
(circle-be, circle-fe-gtk and circle-fe-term), and suggests their key
core parts.
They're all currently written in 100% perl. The main perl modules in
this diagram are, in summary:
* IO::Async - async operations, network events, timers, etc. An
event-driven base framework to build the rest upon.
* Tangence - object remoting layer. This provides remote objects, which
have methods, events, properties. They allow introspection. It is
the main are in which data is remoted between the parts.
* GTK - the perl module that wraps the GTK widget toolkit.
* Tickit - a currently major-work-in-progress attempt at a terminal
level widget set. Not entirely unlike GTK, though focused quite
specifically at doing terminal-specific things. The current
look-and-feel somewhat approximates an irssi scroller/tabbed
terminal interface, though plans are to extend this much beyond
that.
* Net::Async::IRC - IRC protocol module for IO::Async. Handles all the
lower-level IRC messaging details.
These components are the primary split in areas that can be worked on.
It ought to be easily possible for people to work on some part without
too much overlap with other pieces.
Of these pieces:
IO::Async and GTK are general-purpose modules available on CPAN.
Modifications here are not directly in scope for Circle, though
certain additions to IO::Async might be justified by use cases here
if they are generic enough.
Net::Async::IRC is supposed to be general-purpose, but isn't complete
enough yet to consider even a 0.01 release to CPAN. As it gains more
attention from Circle work, it will eventually move there.
Tickit isn't Circle-specific, it's more of another project of mine.
Currently I have a couple of other programs using it too. Long-term
plans for this involve yanking more of the code out from Perl into a
C-level library implementation, leaving the perl wrapper as a thin
shell around that library, making it useful elsewhere.
Tangence is a generic object remoting system, and the key to branching
out beyond perl. More on this subject in a later email I think... :)
And of course, there's the actual program code that glues these base
components together.
As a rough overview of code size, the following line counts may be
indicative:
circle-be: 5158 lines
circle-fe-gtk: 969 lines
circle-fe-term: 283 lines
Tangence: 5567 lines
Tickit: 3450 lines
I'm never very good at finishing messages, so this time I won't. I'll
end instead by the suggestion that next on my list of "things to write
about" are
* More detail on Tangence
* More detail on Tickit
* More detail on circle-be (as that's where most of the work really
lives)
Bye for now,
--
Paul "LeoNerd" Evans
leonerd at leonerd.org.uk
ICQ# 4135350 | Registered Linux# 179460
http://www.leonerd.org.uk/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.leonerd.org.uk/pipermail/circle-dev/attachments/20090213/5ee83f72/attachment.pgp>
More information about the Circle-dev
mailing list