3.x Roadmap for Omega

himerus's picture

As usage continues to rise, and the adoption of Omega by users more and more willing to contribute time and energy to making the project better, it is time to start working on the 3.x version.

This post will serve as an outline, and be updated as the discussion continues on this thread, and in IRC (#drupal-omega)

There are many new & great features in the works that will greatly enhance performance and usability of the Omega theme forthcoming.
Replies to this thread should outline new features that should be there, interfaces that should be enhanced/clarified, etc. As valid ideas come in, they will be added to this outline.

  • Segmentation of Alpha > Omega

    Omega will be splitting into two "base" themes. Alpha will become the minimalistic base theme with all the preprocess functionality, as well as the basic grid structures. Omega will become the "enhanced" base theme with many more options and configurability.

    This will allow for many users to enable core functionality of the 960 grid, HTML5, and advanced preprocess functionality without the added weight of some of the Omega features for those that may not use/need them. Enabling Omega (which will become a subtheme of Alpha) will give all the advanced features, including the new responsive grid and more.

  • Performance Enhancements

    Preprocess/Process performance

    CSS performance

    Theme Settings performance

  • Responsive & Extendible grids

    After some of the lead work on adaptive/responsive layouts in Omega (http://groups.drupal.org/node/137424) The new 3.x version will really capture a simplified and extendible way to configure grids.

    By default, Alpha/Omega will provide the default mobile layout (regions stacked), a narrow grid (720px), a normal grid (960px), and a wide grid (either 1200px or larger). These are broken in the Alpha core as "narrow", "normal", and "wide". Each grid set has a seriese of files that are auto-loaded based on settings for 12, 16 and 24 column grids. These are now broken out into individual files so that if you are only using 12 columns site-wide that the CSS loaded is more efficient. The 24 column grid is being redone so that rather than the 950 usable pixels (by Nathan Smith) actually now will fall in line (940 usable px) with the 12 and 16 so that they can all be mix/matched as needed.

    The flexibility I've seen here already is amazing, and allows for ANY subtheme to define overrides for the narrow, normal and wide grids with ease, and generate your own grid css (will be documentation, and a script soon that will handle this easily)

  • Zone/Region Flexibility

    In Omega 2.x zones were introduced, which allowed for a logical way to group regions into their grid container. However, these WERE coded in a way such that it was reading the placement and order of these items out of the .info file only.

    In 3.x, now you will be able to reassign the "section" (zones above content, content, and zones below content) which a zone is tied to through the interface, as well as assigning regions to another zone. This makes everything entirely flexible, and will allow for other regions/zones to be placed in the content zone, which was currently limited to the primary content region & sidebars.

    This flexibility gives us the power to move forward with the Omega UI and allow for drag and drop placement of the regions/zones where ever we decide, as well as the ability to quickly create new zones AND regions ON THE FLY. This will be powered by Omega UI, and using drupal_alter, can inject those new zones regions that aren't defined in the .info file, as well as provide an export/rewrite of the .info to push changes back to code.

  • Optional CSS Loading

    Now all of the optional CSS is defined in the .info in an array with more meta data so that any CSS defined there gains a setting in the interface to quickly enable/disable it. Lots of great things can happen with this.

  • Region Ordering

    In 2.x only dynamic zones (using push/pull classes for content first ordering) were allowed to be ordered. In 3.x ALL regions will have weights, and those using static can be ordered, which will change the order those regions appear in source. Dynamic regions will behave in a similar manner that they have, by assigning a "primary" region (content region for example) that is the region that will always be first in source order, and the width of that region will be determined to take up any space left over by the presence/absence of other regions in the zone. The other "non-primary" regions in the dynamic zone will be allowed to be weighted also, but will be rendered in source in the order they are placed in for the settings. So the primary region is always first in source, but the non-primary regions are ordered in the way a static zone would be by placing them in source in the order chose via settings.

  • Block Powered

    Since in D7, things like $messages, $action_links, etc did not make it into blocks to be placed at will, this time around, Alpha/Omega will be turning those into "blocks" rendered on the fly in a region of your choice with a weight that will interact with the weight for other blocks in that region. So you could place $messages inside your content region, and give it a weight of say -50, moving it all the way up, or you could give it a weight that situated it between two items in that region. This is great news! A lot of the settings/options related to this are only available if you are NOT using the Blockify module (http://drupal.org/project/blockify)

  • Branding Region

    The branding zone/region will also be getting an overhaul, making it more flexible (without template edits) to show/hide the logo, site title, slogan, etc. This will be much the same as it acts now, but be less dependent on editing the region--branding.tpl.php to accomplish tweaks to that branding area.

  • ...
  • ...
  • ...
  • ...
  • ...

Comments

I started outsourcing some of

fubhy's picture

I started outsourcing some of the basic code from Omega into a new base theme called "Alpha". This one will serve as a Base Theme for "Omega" and will allow themers to choose wether to use the basic "Alpha" or the extended "Omega" theme. This is mainly for performance reasons and minimalistic layouting. The Alpha base theme will contain nothing except:

  • Theme settings UI
  • Support for adding conditional CSS files in the .info file (enable / disable via theme-settings)
  • Outsourced Preprocess / Process functionality in theme subfolders with preprocess-HOOK.inc files.
  • All the grid stuff

Minimalistic approach
The Alpha theme will only provide the Reset.css
Other css files can either be added via the .info files of the subthemes or via HOOK_alter (by modules)

The Alpha theme will only provide three basic grids (12, 16 and 24 columns for 960px containers) - Those can be extended with HOOK_alter via modules or via the .info files of the subtheme (the omega_ui module will hopefully be able to allow the user to generate custom grids and add them to these settings with HOOK_alter)

Performance Part 1
Currently I am tuning the performance of omega / alpha by caching the preprocess / process hooks in a theme-registry-like manner. This makes is_file checks on all the possible hooks on every single page load obsolete as all the available hooks are being registered on HOOK_theme_registry_alter ...

Hook processing order: "Deepest" base theme -> Base theme -> Subtheme

The .inc preprocess and process files can now be provided in a more "clean" way by wrapping the code inside those files in functions like "THEME_alpha_preprocess_page(&$variables)". However, inline code will still work, too.

Performance Part 2
The grid CSS will be redone / cleaned up heavily and split up into seperate files by type of grid. We will also make sure that only the necessary grid types are being loaded for a page. This is done by checking each zone in the current page structure to see what grid it uses to filter out the obsolete CSS files.

Performance Part 3
Overall code cleanup and adding some functions to access the theme settings more effective. This will also increase the performance slightly.

Summary
The basic stuff around the fundamental ideas of this theme (grid) will be ripped out of Omega and put into a new minimalistic base theme named "Alpha". This theme will provide all the grid related functionality aswell as alot of functionality for extending it. Omega will do just that (extend alpha) with all the stuff that omega currently has (minus the stuff that will already be in alpha, logically) and therefore allow for themers to choose wether they want to start on the Omega level (extended features) or start on the Alpha level (basic features).

We are aware of the fact that this introduces a lot of changes to the way that Omega works but up to now it looks like upgrading won't be a pain at all.

We are open to suggestions!

Awesome!!!

himerus's picture

The contents of this post were merged into the initial post.

Alpha/Omega location

himerus's picture

The contents of this post were merged into the initial post.

Himerus and me had an awesome

fubhy's picture

The contents of this post were merged into the initial post.

Ooookay.. So I think I found

fubhy's picture

The contents of this post were merged into the initial post.

sub-themes

cpelham's picture

If Omega becomes a sub theme of Alpha, will we still be able to have Omega sub themes (such as Gamma)?


Christopher Pelham
Director
CRS (Center for Remembering & Sharing)
http://www.crsny.org

CRS (Center for Remembering & Sharing) is an arts & healing center located just south of Union Square in Manhattan.

Absolutely!

himerus's picture

Yes, definitely!

Drupal 7 has fixed a LOT of issues related to deep nesting of subthemes....

Alpha is now intended to be the core of it all with Omega for even better enhancements.

So Omega IS a subtheme of Alpha, but you can and the majority of the themes I produce will be subthemes of Omega still... However, it would be possible for someone to just use Alpha as a base theme for the slimmed down features it will contain.

A lot is still up in the air on how it all functions, what features go where, but it WILL be worth the effort, and only enhance Omega as a whole.

On Alpha. . . .

jpw1116's picture

Jake, I commend all the work you're contributing on Omega. Just getting my feet wet, though, I'm at a little roadblock already.

I want to scrap my modest 2.x test installation and jump aboard 3.x for the long haul. I presume I'll be recreating my subthemes under 3.x.

Here's the rub: now that you bring up Alpha being Omega's base theme, I see that Alpha isn't even spec for D7 yet: http://drupal.org/node/619200/release

Are you implying that we should wait, or can I dive in with Omega 3.x and new subthemes in D7 now, and expect that those will port to Alpha somehow? (Also, if the name "Alpha" is still mutable, maybe changing it a bit would help--going for H-Alpha or something else unique would really help distinguish it from the alpha/beta/rc jargon that floods search results. Thanks!)

Well....

himerus's picture

Thanks for the kudos!!

Alpha is not and never will be on the alpha project page...

It is INCLUDED in the Omega package, and is completely ready to go. I'm working on some final CSS touchups (for Omega subthemes) at the moment that will allow me to be happy releasing alpha2 of Omega 3.x tonight.

I would highly recommend moving to 3.x. It is looking quite stable, and today we just got the IE solution situated so that sites would still render "nicely" in IE 6, 7, and 8 which do not understand the responsive media queries.

Great news re. IE

chiebert's picture

This is exciting news, Jake - especially the IE bit. Looking forward to a long, happy run with this framework!

Can Omega 3 just act like 2.0?

jefdrupal's picture

Jake,

I am in the same boat. I'm have no real skills, but can bumble my way through things. Css takes me a bit of floundering. I just started with Omega 2 (and am fighting with superfish menus :)

Can I install omega 3.X and basically turn everything off so it behaves like 2.0? I want to get the site up and running and I didn't want to get tempted to get distracted by all the Omega 3 stuff and spend a lot of time on that. Then again, I didn't want to waste time on 2.0 and then do it all again in 3.0. So that's my dilemma. Again, if I had a greater understanding of css and design, 3.0 might be a simple choice, but then again...

Alpha is not a seperate

fubhy's picture

Alpha is not a seperate project. Alpha is included as a subfolder in the "Omega" package (as a base theme for the base theme so to say).

jpw1116's picture

A-ha. Now it's clear.

I wondered, because on the Omega project page ( http://drupal.org/project/omega ) you're aware that "Related projects" contains a reference to Alpha (namely, http://drupal.org/project/alpha ).

Again, I would vote for disambiguating high-value names as early on as possible.

I can't wait to try 3.x soon!

Oh right.. But the related

fubhy's picture

Oh right.. But the related Projects is nothing that we can control as they are being shown automagically because of similiar "Tags" :(

Omega Framework

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week