Solar: Future Plans

With the new release of Solar 0.6.0, one user has asked if there is a roadmap for future releases. (Solar is a simple object library and application repository in the spirit of PEAR and Horde.)

I’m afraid there’s no roadmap, but there is a to-do list. I wrote it specifically in response to the roadmap question, and the initial contents are as follows. As you can see, it’s relatively ambitious; if anybody would like to join the project, just contact me by email; this is a good time to for interested developers to get in on the ground floor and make a name for themselves.

  • Document and write tests for existing classes
    • which will result in API changes as discrepancies are revealed
    • may add new minor classes as refactoring occurs
  • The last of the docs and testing will be the Sql class
    • they are the most complex
    • Sql_Driver classes will be converted to PDO
    • Sql_Entity class needs refactoring (far too complicated, try separate Table and Select classes)
    • Possible addition of portable pseudo-SQL string and date functions
  • Then new classes (in no particular order)
    • Foundation classes
      • Solar_Log, universal logger (c.f. PEAR Log)
      • Solar_Event, universal event dispatcher
    • Solar_Text, text manipulation classes
      • Solar_Text_Markup, transformation for BBCode, ReST, Textile, Wiki, etc (c.f. PEAR Text_Wiki)
      • Solar_Text_Diff, difference engine (c.f. PEAR Text_Diff)
    • User classes
      • Solar_User_Prefs, user preferences collection
      • Solar_User_Perms, user permissions collection
    • Cells
      • Solar_Cell_Bayes, universal Bayes filtering (for comments, trackbacks, edits, etc)
      • Solar_Cell_Hits, hit counting for page views, visitors, referrers, etc
      • Solar_Cell_Prefs, user and application preferences storage
      • Solar_Cell_Perms, user permissions storage
  • Then new apps:
    • Solar_App_Wiki (the follow-on to YaWiki)
    • Solar_App_Blog (using the Wiki engine)

A universal content model is under development as well.

Are you stuck with a legacy PHP application? You should buy my book because it gives you a step-by-step guide to improving your codebase, all while keeping it running the whole time.

2 thoughts on “Solar: Future Plans

  1. One thing I liked about PEAR::Error (I know every else hated it) was an easy way to cascade errors up to the application controller for logging and or display.

    I am curious how you are going to approach auth/prefs. Will you be explicitly tied to a database at that point? Is it possible to developer Solar apps without a DB?


    P.S. keep up the good work!

  2. Hi, Jackson — we’ll talk about PEAR_Error by email, if that’s OK, and I’ll publish the results later. It sounds like an interesting topic.

    As far as authentication is concerned, Solar_User_Auth is very PEAR Auth-ish. It has drivers for Apache “htpasswd” files (DES, MD5, and SHA1 encrypted), .ini files, LDAP, POP/IMAP mail, and SQL database. There is also a special “multi” driver that lets you fall back through different authentication sources (this function was inspired by PEAR LiveUser).

    I have no approach on prefs storage yet. 😉 The Solar_User_Pref approach, though, will mimic the Solar_User_Role approach; that is, it will collect from different sources (Sql, Ldap, File, etc) and not attempt to write back to those sources. Solar_Cell_Prefs, on the other hand, is almost certain to use an SQL backend; however, it need not be the only source of user preferences. (Does this make sense? Note the difference between the User info collector, and the Cell for storage.)

    To address the larger point you asked about: no, there will be no explicit ties to a database when it comes to collecting user information. The key, for me, is to make it easy to collect from various sources, whether they be SQL, LDAP, file, or whatever else. And yes, it’s possible to develop Solar apps without a database.

    Hope this helps; please let me know if it does not. And thanks for taking the time to comment. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *