Road Map Ideas

Coordinator
Jan 19, 2010 at 9:34 PM
Edited Feb 2, 2010 at 5:22 PM

Here's a list of some of the features/changes we had talked about or considered implementing in Graffiti 2.0 & 3.0 before Telligent Graffiti development was stopped and the project eventually open sourced.  We of course can do some or none of this in the CodePlex project, but wanted to get the list out there for feedback. Your thoughts and additions/changes are appreciated! =)

  1. Migrate Graffiti's data access code to use SubSonic or NHibernate. It's currently using DataBuddy, which was a custom tool somewhat similar to SubSonic 2.x and is not an option moving forward. Need to consider how much effort it would be to switch to each one, and which database platforms we would gain/lose.
  2. Drop support for Access as a database (related to #1 above). Not used very much and difficult to handle complex sql and maintain support.
  3. Move logic related to handling views and checking whether a view exists to a separate non-web dependent set of objects to improve performance and testability.
  4. Create one very polished main theme that is included when you download the core Graffiti CMS package. It should be customizable in the browser to meet the needs of most users (colors, headers/footers, some basic formatting, etc). You would still be able to download and install additional custom themes of course.
  5. Make categories more extensible, remove the direct relationship between categories and posts. For example a category could be a container for an application/plugin like a simple forum, wiki, or calendar.
  6. Add support for N levels of child categories. Would need to create a new navigation admin UI to handle this.
  7. Create a simple way for users to build forms using the UI.  Many web sites need different types of forms to capture input and you shouldn't have to write code to create basic ones.
  8. Replace (or at least improve) the web editor - make it easier to embed images and videos.
  9. Support the Atom publishing protocol (in addition to the MetaWeblog API which is already suported).
  10. Create a better way for add-ons to add new admin sections/pages.
  11. Make various services plugable so you can switch providers for things like search, file storage, theme storage, spam checking, views/rendering, etc.
  12. Support for a mobile optimized theme
  13. Remove dependency on the three Telligent components that Graffiti 1.3 still uses and you have to download separately (editor, dynamic configuration, and custom UI controls) - find open source alternatives.

Added items 12-13 from feedback below

Coordinator
Feb 2, 2010 at 2:09 PM

Replying to myself... Anyone else interested in Graffiti feel free to jump in at anytime. =)

Since Graffiti 1.0-1.2 is no longer available (I believe), I realized we should get a stable binary release up ASAP. That way people will have something to use without having to build the source or wait a long time for a major release.  So far we've only made minor improvements since Graffiti 1.2 (the url routing is the biggest change) and no database changes. So getting a 1.3 release out the door should be pretty painless - just need to do some more testing around the routing and making it easier to determine IIS version and whether it needs to be enable/disabled.

I created a 1.3 branch from trunk yesterday to keep it stable.  Trunk will be undergoing major changes as we work on some of the items from the list in the first post.

Editor
Feb 2, 2010 at 2:56 PM

Sounds good.  In the near future, I was planning on working with #1 from your list (implementing NHibernate) unless there are objections...

Feb 2, 2010 at 3:00 PM

I am also interest in contributing. I am newer to Graffiti than some, so perhaps a piece that doesn't require in-depth knowledge of the entire system to work on...open to suggestions.

 

Coordinator
Feb 2, 2010 at 3:34 PM

That's great, thanks guys!

Brian, I've been looking at SubSonic 3.0 ActiveRecord and Fluent Nhibernate for moving Graffiti's data access layer to. I believe SubSonic would be easier to move to up front (because of how db-centric the Core code is) but wondering if nhibernate might be the better choice for the long term. e Do you have experience working with nhibernate?

ejbrennan99, there will definitely be many areas like that. Especially once the data situation gets worked out in Trunk (which should be the first thing we do for 2.0), we can put up a list of features for people to grab.

Feb 2, 2010 at 3:54 PM

Kevin,

Sorry for the delay, in the list of items, I would like to see as well a mobile theme, so Graffiti can display different themes depending on the request from the browse. Any chance to be on the scope?

Also I could take the Atom publishing, looks straight forward.

Coordinator
Feb 2, 2010 at 4:41 PM

Sure, scope is going to be flexible depending on who wants to contribute what. :) I would also like to see a mobile theme.

Right now it's just Dan Hounshell and I actively working on the code. But I'm hoping we can get help from a lot of different people going forward. This thread is very encouraging.

I think for now it's best to submit code changes via patches (unless it's something really major) and we can start adding contributors as moderators on the CodePlex project. And then those who regularly contribute or need to work on a major change can be "upgraded" to developers to give you direct access to check-in code.

It's my first time coordinating a big open source project, so apologies in advance for my screw ups. :P

Coordinator
Feb 2, 2010 at 5:12 PM

Thanks Kevin. I know I really appreciate you coordinating the project. I am sure you and ScottW went to bat inside Telligent for this gift to the community. One item not on the list I would like to see is a new WYSIWYG editor; I've run into all kinds of issues with the built in version when dealing with IE (not sure much in other browsers, but my clients tend to default to IE).

I agree in getting a stable 1.3 binary release. I think this will allow the community to continue to adapt Graffiti CMS without having to be able to download and compile the source. I know it took me a bit to get my workflow worked out to go from source to just what I needed for web (though my robocopy script has worked great now that I have it done).

Yes, getting the data access code moved to SubSonic or NHibernate is a major move forward for the community. I love SubSonic, though have never used NHibernate so I can't really say which direction would be best. Dropping Access I can't imagine being an issue at all, though it sure would be nice to get VistaDB support added back in. I would also LOVE to see support for something like MonoDB.

Numbers 5 and 6 would be the next major step forward in my opinion. And then 7 and 10 would be next on my personal list.

The only other item I have thought of is making Widgets easier to develop. I am not sure how this would work, but this could be more like creating an ASP.NET user control where you just add an .ascx file and then can call that control from anywhere in your theme. Again, not a clue what a proper implementation of this would look like, but just wanted to throw it out there. 

Again, a big thank you to you, Scott, and Telligent! I am really looking forward to this projecting thriving forward.

Coordinator
Feb 2, 2010 at 6:29 PM
albertpascual wrote:

Kevin,

Sorry for the delay, in the list of items, I would like to see as well a mobile theme, so Graffiti can display different themes depending on the request from the browse. Any chance to be on the scope?

Also I could take the Atom publishing, looks straight forward.

There was a plugin that allowed this to an extent, but I could never get it to work right.  I think it would be better to expand on this, not just to allow a mobile theme, but actually let you drive themes based on the user agent - that way you could make it look like a native iPhone app for iPhones, along with some of the unique functionality available to iPhones, and a more standard mobile version for other phones.

Coordinator
Feb 2, 2010 at 6:32 PM

I actually would like to actively help out with the project as well - Scott approached me to this end around the time that the open source was announced.

Coordinator
Feb 2, 2010 at 6:38 PM

Also, I have a patch that I'm going to submit that I wrote in order to support a plugin that I'll be releasing shortly as well.  The plugin is for user profiles (as I requested in http://graffiticms.codeplex.com/WorkItem/View.aspx?WorkItemId=11633).  I wasn't really sure that it made sense to make this a part of the main code, because it would require hard-coding some paths, where I can provide some flexibility in the plugin.  Once I've posted the plugin, maybe someone can identify a way to add it into the base code, if it does indeed make more sense there.

The patch is to provide two new events - at the beginning of the Application startup and at the end of the Application startup.  This allows the flexibility to perform actions at the beginning of the Application_Start event as well as at the end.  I figured on two events because I personally wanted to be able to add routes before UrlRouting.Initialize() was called, but also saw the need to be able to do things after that as well.

Coordinator
Feb 2, 2010 at 7:59 PM

Okay, I just saw Kevin's checkin (38676) with the event for adding routes, so I'm going to update my plugin to use that and delay adding this patch, because I don't know that it's necessary.  If someone has the desire for the patch, then let me know and I'll submit it.

Coordinator
Feb 2, 2010 at 9:01 PM

Wow, lots of great feedback today and great hearing that so many people are interested in contributing.

@BrianZalk - that would be great. I was worried about updating the data layer as I have only minor experience with NHibernate and none with SubSonic.

I'm excited about getting the 1.3 binaries released and can't wait to start working on the 2.0 branch.

Coordinator
Feb 2, 2010 at 9:10 PM

@madkidd - Thank you. I am also really liking SubSonic, but also having never used nhibernate I don't want to ignore that if others think it's a better solution.  Maybe we should start a thread just about the DAL..

@albertpascual - I agree. You likely wouldn't want a "mobile" theme for all browsers, just when a mobile user agent is detected. Great to hear you are interested in the Atom service. :)

@charlesboyung - Awesome! Scott has been really busy lately so haven't had the opportunity to talk with him about Graffiti in quite a while. Glad you are on board. :)

Do you think using the two events you created would be better than the Routing one I did? I started out with a general App startup event before switching to a route-specific one.. but not sure that's the way to go. Perhaps a more general event(s) would be better.

I'm going to rollback the changes I made to the CategoryAndPost routing in the 1.3 branch. I had started hacking on it over the weekend to make it compatible with unlimited nesting of categories, but that is going to be a trunk feature not 1.3. So for 1.3 would be better to reverrt the C&P route urls to the less-greedy ones.

Feb 3, 2010 at 6:25 AM

Hi Kevin

First you guy's are doing a nice job coordinating the opensource effort for Graffiti CMS!!!

Second, I would like to see some multi-language support so that it's easy to create site's where the user is able to switch languages (different templates for multiple languages? ) .

Also nice to have is the means to create a post in different languages.

The language support would be nice if you want to use Graffiti as a cms instead of a blogging engine.

Greetz D

 

 

Feb 6, 2010 at 4:45 PM

I'll start working on the Atom and I'll submitted as a patch, I'll add it at Graffiti.Core.Api, let me know if you wanted somewhere else.

The mobile theme by user agent is why many people move to wordpress, their iPhone theme is amazing, is any good designer that can create that theme for Graffiti CMS? Adding a redirect to a different theme on the user agent won't be a big deal, the design itself would be the hard part I think. 

Cheers

Al

Feb 6, 2010 at 5:18 PM

Can someone give me a link for the 'amazing' wordpress/iphone theme. I'd like to check it out and then I can see what would be involved in porting it to Graffiti.

Coordinator
Feb 6, 2010 at 6:38 PM

@nieuwda - Thanks! I agree that language support would be nice, and I do want to tackle that at some point. But it will require a pretty big effort to get there as English strings are sprinkled throughout many places right now (controls, pages, some back-end code, plugins, etc).

@albertpascual, ejbrennan99 - Sounds great. I believe most WP themes have pretty liberal licenses like Creative Commons so we could certainly adapt them and just include an attribute link in the footer.  Core.Api is perfect for Atom.

Feb 6, 2010 at 7:18 PM

ejbrennan99 - Just download wordpress from wordpress.org

Kevin - I'll start atom and deliver to you via patch if you want or any other way you prefer.

Updating my blog http://alpascual.com to the latest version right now.

Feb 9, 2010 at 10:54 AM

I would love to see grafitti take the route via asp.net MVC and using the repository pattern. I think this pattern is extremely powerful.

 

With regards to subsonic etc... i must admit i haven't paid much attention to these tools in the past....  But also i think its a good idea to not forgot about Entity Framework which in the new version of .net (not released yet) has a lot of the problems resolved..

 

My 2 cents :-)

Feb 10, 2010 at 8:14 PM

Hi-

I have an ATOM feed generator that I wrote for my site (www.briandesmond.com) for backwards compat when I migrated off of CS. I'm not quite sure how to submit it here, but I'd be happy to provide it in the form of a CS file via email - brian at briandesmond dot com

Feb 11, 2010 at 11:53 AM

Dropping Access support might not be the best idea here. 

Graffiti used to be a payed product, but now that it's open source it might be used a lot more with very cheap hosting and people who don't want to spend any money on databases.

For cheap shared hosting accounts people are usually stuck in medium trust environments and the only 2 databases that run in those environments (with .Net drivers) are Vista DB and Access. 
Vista DB costs money.

Some of these cheap hosting accounts do however offer Mysql, which might be a solution to what I just said but still. 

 

Feb 11, 2010 at 11:59 AM

Actually, Graffiti runs fine in medium trust with sql server - that is how my account is setup.

Feb 11, 2010 at 6:18 PM

SQL Lite might make a suitable middle ground replacement for VistaDB and Access?

Feb 11, 2010 at 7:10 PM

This is great to see - I am glad to see that Graffitti CMS is now open sourced and back alive.   But agreed with some of the posting here - I think we should move away from Access.  And honestly I'm going to try to install Graffiti CMS on my shared hosting tonight and see how it turns out. 

 

Feb 21, 2010 at 7:18 PM

Nice, I like NHibernate, hope use it in Data Access

 

Feb 24, 2010 at 11:59 AM

I'm not sure how much of an overhead it is to maintain, but it would definitely be good if you can maintain support for MS Access.  Having Access is one of the things that makes it so simple to use Graffiti - and ease of use is a major differentiator for Graffiti when comparing it against other engines.