Interview: Infinity Developers Bowe Frankema & Marshall Sorenson

Interview: Infinity Developers Bowe Frankema & Marshall Sorenson

Last week we featured Infinity: a brand new free Anti-Framework for WordPress, BuddyPress and Multisite. I am pretty impressed with it so far and am really looking forward to seeing where it goes. To get you all up to speed with what’s going on at Infinity I did an email interview with Marshall and Bowe. It’s a long one but it’s got loads of background information about Infinity and will give you some great insight into how it works. Here’s what they had to say:

Tell our readers what Infinity is in less than 50 words?

Infinity is the first Anti-Framework – A Theme Development solution to free you from Frameworks. It gives back freedom to site owners and WordPress developers by letting you pick the features you need for your projects.

How did you come up with the concept?

Bowe: This is quite a long story, so bear with me here. About two years ago I was working on a non-profit WordPress MultiSite/BuddyPress community for people with Cystic Fibrosis. Developing such a huge multisite network install with a main BuddyPress community, potentially hundreds of user blogs, turned out to be a huge undertaking.

I dove into the world of WordPress theming because I wanted my community to be unique and to make the design consistent across the BuddyPress community and the blogs. Before I knew it I was deep into WordPress development and while I absolutely loved it, the learning curve was high. I felt that the energy I wanted to use for building my community and making it something unique was wasted on learning how to make theme options panels for my users, properly enqueueing scripts and setting up child themes to make it all managable.  Every time I thought I got something right, I read one of those damn tutorials from the WordPress gurus who told me that I was doing it wrong. It frustrated me because I felt I was on to making something great, but was not able to get it to the point where it felt it was ready. I’m a community builder who knows HTML/CSS but I’m not a programmer. And I felt quite lost in the world of WordPress development.

During that time I reached out especially to the BuddyPress developers to ask for PHP code examples and snippets, and one of the guys that always helped me was Marshall. I eventually hired him to help me with my project. It took a lot of pressure of my back, and we quickly became friends in the process. He had been coding for 10 years and had been focusing on large scale MultiSite projects for a while now. The things that took me days to figure out took him 20 minutes. Often he came up with solutions where I could expand upon his work without having to learn actual PHP, and this sparked an huge idea in both of us.

What if I would tell him the problems I encountered building my WordPress community, and he could find ways to solve them? What if he could focus on doing technical stuff behind the scenes the right way, and make them easy for me to use them?

That was the core idea behind Infinity more then a year back, and after a year of pretty much full time development, it has turned into something much more we could ever imagine, and something that we are very proud of!

What makes Infinity different from all the other frameworks out there?

Bowe: One word; Freedom. We use the slogan “More Freedom to Create” for a reason. Infinity is an anti-Framework; it frees you from Frameworks.

During my time researching the frameworks I could use for my community, I often felt that certain features were missing, or that the groundwork laid by the Framework developers did not fit my workflow. And still today there are hardly any Frameworks that really include MultiSite and BuddyPress support – it is often an afterthought  added by developers so they can say that they support BuddyPress/MultiSite. We strongly felt that we could really innovate with Infinity with this.

For example, a framework might come with a great option panel packed full of features, but I wanted to use this theme as the parent in my MultiSite network. How would my users respond to such a thing? The WordPress admin is hard enough for n00bs. Before I knew it I was spending days removing features, forking templates and getting a headache. And what if I wanted to add just a few more options? I would need to modify templates and learn PHP, or hire a developer. It just wasn’t what I wanted.

Infinity is different. Every single aspect of Infinity is modular and we spent a huge amount of time making it extremely easy to use, even for the non-technical user. With Infinity everything can be configured through a few special configuration files. These files contain normal human-readable text where you tell Infinity exactly which features/theme options/shortcodes you want to use on a per theme basis.

What our your favorite Infinity features?

Marshall: There are so many! But I think one of the most exciting things is the modular approach we took. Infinity has a powerful API where every feature, theme option, shortcode or widget can be enabled and disabled on a per theme basis. All this can be done through a very easy configuration file.

Here’s an example:

[feature]

buddypress-support = on (this would add a bunch of BP options to your dashboard)

custom-css-options = on (enables you or your users to change colors)

header-logo = off (if you would like to disable the header logo upload feature)

The same is applied to adding options. If you want people to upload a photo to display in their blog sidebar, for example, you would simply do this:

[sidebar_user_photo]

type = "upload" (this is the type of option you want to add)

section = "general" (in which section of the option panel you want this to show)

title = "Your Photo"

description = "Upload a nice photo that will be displayed in your sidebar"

This option now shows up in your Dashboard right along with sample code to insert into your (child) theme template.

The cool thing about this is that the configuration files cascade down into Child Theme and Grandchild Themes (more about that in a bit!) so you could enable all kinds of features for your main community site, and simply disable them for the user blogs in your network. Because WordPress developers can easily create “Features” just as they would create a WordPress plugin, our community site will have a special section where these features can be downloaded and dropped into your Infinity theme.

This is a great concept that really excites us because of the possibilities and flexibility it offers, especially to Multisite projects.

There are a lot more though, but this interview is already getting quite long so maybe a short bullet list with some links attached to it would help!

  • Infinite Child Themes
  • Easy Dashboard Builder
  • 100% BuddyPress 1.5 and bbPress support
  • Full Multisite compatibility. Build large theme ancestries with very little effort.

We’re working very hard on getting all the features documented and we’ll write a lot more about them on our community site.

What are the benefits of Infinity for WordPress developers?

Bowe: Do you want to hear something crazy? Infinity and all it’s features are not even tied to a specific theme!

Infinity is our flagship theme where you can build Child Themes upon if you want too. It has BuddyPress 1.5 support built in, 60+ hooks, an easy Grid System and uses all the latest WordPress standards like get_template_part. But here’s the fun stuff: you can add Infinity to ANY WordPress theme and use its powerful set of built-in Features for your commercial themes or client projects. Free of charge, and we will even help you do so.

Marshall: A short technical summary would be: Infinity is simply a powerful layer of re-usable and highly extensible features that sits between WordPress and your theme(s), without locking you in to a specific design model.

Bowe: As soon as you add Infinity to your theme you can stop worrying about a lot of things, and spent more time creating awesome designs. Which brings us back to my long story at the beginning. With Infinity, I do not have to worry about doing things the right way, Infinity does this for me.

I do not have to mess around with complicated PHP code. I can develop WordPress themes exactly the same as I used to do, but at the same time use Infinity to make things a hell of a lot easier, and a lot more fun.

One of the best examples is the automatic style and scripts enqueueing that comes with Infinity. By adding a few simple lines into the infinity.ini configuration file I can do all kinds of cool things:

[style]
buddypress_development = "assets/css/bp_development.css"
lightbox_css = "assets/css/lightbox.css"

[style_conditions]
is_buddypress = "buddypress_development"
is_page:portfolio = "lightbox_css"

These 5 lines were all I needed to enqueue two CSS files for my theme. I’m even using WordPress conditionals to load the lightbox CSS script only on the “Portfolio” page, and the BuddyPress Development only on BuddyPress pages. This is a basic example, but you can do some extremely powerful and creative things without getting a headache!

I’m able to create themes for my clients/customers and give them the power to customize the theme without me having to step in all the time. I’ve cut back drastically on support because they can use the configuration files to disable/enable features, build their options and much more.

Marshall: You can use the same configuration files to build entire option panels with color pickers, uploaders, sliders and all the well known field types like text, radios and drop downs, etc.

Do you think it is useful for less advanced users? What will they get out of it?

Bowe: At the end of the day we wanted to empower the people who have awesome ideas for building websites or communities with WordPress. We wanted to create a free GPL solution that could power their WordPress (Multisite/BuddyPress) communities and offer them more freedom then with any other solution out there.

While Infinity contains a lot of power under the hood, and there is always some learning to do, you don’t need to do a whole lot with Infinity. If you just want to focus on building your community the Infinity Base theme is perfectly suited for that!

Marshall: Infinity is also a great choice for non-developers because instead of hiring a developer to create that portfolio page for you, chances are that someone else made a Portfolio extension and share it with the Infinity community. We are still in Private Beta we have a lot of things to finish up before release but we anticipated that people would be asking for all kinds of features from the start. We love that, and it tells us others get excited about Infinity too! Even Bowe keeps bugging me about things I need to add to Infinity on a hourly basis.

Because our Component API makes it easy for developers to create these extensions, our community will have a special section dedicated to them where less advanced users can simply download the extensions and use them in their projects. Simply by dragging and dropping an extension folder into your Child Theme all the new functionality and options for this extension will automatically be added to your Infinity Dashboard. Here’s an example:

Infinity Custom dashboard

So no more setting screens spread all across the WordPress dashboard, making things a lot easier for you and the users in your Multisite network.

Tell me a bit about how Infinity utilizes HTML5 and CSS3.

Bowe: Our Infinity Base Theme uses the HTML5 doctype which means that it’s HTML5 ready. Also our the Base Theme is fully responsive, which means it looks great on all devices including mobile phones. That also includes for the BuddyPress pages! If you want to check it out just visit bp-tricks on your iPhone/iPad or any other device!

We’ve chosen not to go the full HTML5 route just yet, but plan to do so in the future, when we are 110% sure it works across browsers.

We do use a fair amount of CSS3 to spice things up. We split all of the design elements into a seperate file called “design.css”. Base.css contains all the essential wireframe css and design.css contains all the sexy CSS3 and images.

We’ve done this so developers can easily start with a completely blank slate and develop unique looking Child Themes based upon our Infinity Base Parent Theme.

We already have quite a few Child Themes ready, and one of them will be given away for free to our Beta members. It’s called Infinity+ so that should give you an idea of what it will look like ;–)

The idea of infinite child themes is pretty cool in theory, but can you give our readers some examples of how it can be utilized in practice?

Marshall: Absolutely! At first we were not completely sure on how this could be utilized but as soon as some of our clients started using Infinity we heard some pretty amazing stuff..

One of our clients created a Parent Theme which contains all of the templates, options and features for their entire network. Basically like the “master” theme. Let’s call that the “Animals Theme” to help you visualize this.

First they created child themes we call “Pets” based upon the “Animal theme”. For instance:

“Cats” “Dogs” “Fish”

These pets child themes would contain a few template modifications and some specific Theme Options specific to that category. Let’s say the Dogs theme has a different homepage template, several dog related widgets activated and default images related to dogs. Also, these child themes contained some custom options for the animal lovers specifically related to those who have pets.

Finally, they started building grandchild themes based on those Child themes. So the “Dogs” Grand Child Themes could be a Labrador Theme, a Golden Retriever Theme or a really tiny theme especially for chihuahuas!

Now that you have all this set up, the really fun stuff begins! Because like a waterfall everything cascades down from the Granddaddy Theme. For example, you could add a nice BuddyPress Profile Widget (included with Infinity Base btw) into your Sidebar and it would show up everywhere.

Or if you would like to modify an option and change it to fit the (grand)child theme you could do this:

Animal Theme Options file

[your-animal-photo]
type = "upload"
section = "general"
title = "Your Animal"
description = "Upload a nice photo that will be displayed in your sidebar"
default_value = "images/animal.png"``

Grand Child Retriever Theme

[your-animal-photo]
section = "general"
title = "Your Retriever"
description = "Upload a photo of your retriever that will be displayed in your sidebar"
default_value = "images/retriever.png"

Now this option will have a different default image and description.

When are you moving from private beta and unleashing Infinity on the world?

We are working extremely hard to get everything ready for release. The current version of Infinity is pretty stable and most our time is spent on fine tuning, writing documentation, creating awesome Infinity Child Themes and collecting feedback from our rapidly growing community. We hope to release Infinity to the public by the end of October and celebrate the launch with some great Infinity Base Child Themes with responsive design, BBPress and BuddyPress 1.5 support and a bunch of other great features. For free!

Until that time we would like to invite the WPMU.org readers to try out Infinity by joining our community. If you are a developer and want to help us make Infinity even more awesome, be sure to get in touch with us through twitter (@PressCrew) or by sending us a message on http://community.presscrew.com

They can do so with the special sign-up code “White Russian”. Which reminds us.. It’s time for a drink!

Greetings, Marshall and Bowe

Thanks Marshall and Bowe! We can’t wait for the public release! All you guys should head over to the Presscrew website and check it out now.