Questions from a developer

Jul 10, 2008 at 9:51 AM

Hi

I'll probably look at the source code soon, but I have a couple of questions first:

What version of asp.net are you targeting, and what are your plans for the future? I don't see much on the roadmap past mid 2008 (i.e. now).

Is there a main development push in a particular direction at present?

What kind of rdf:foaf support do you have - static foaf documents, or generated from user profiles? What fields are generated in the foaf data, and is there any privacy control in it?

Do you accept code checkins from anyone, or just from your core team?

What is your policy on code quality tools (Warnings as errors, fxCop, StyleCop) and software engineering techniques such as automated unit testing?

What prerequisites (add-ons and third party software, e.g. packages such as Enterpriise Library, asp.net ajax controls, NUnit) do I need to install first before building the code?

How is your RSS support done - there is interesting RSS and RESTful web service support in WCF 3.5, but given the age of the project, you probably aren't using that.

 

Jul 10, 2008 at 10:08 AM
Oh, a couple more:
Do you have any OpenID or OAuth support (either as consumer or as source)
How do the developers co-ordinate? Is there an IRC channel, mailing list or something?
Jul 10, 2008 at 10:11 PM
Edited Jul 13, 2008 at 4:53 PM
Ok, I have answered a few things myself by looking at the code

- Though there are not many warnings during compilation, there are some
- Code is definitely not as per StyleCop standard
- FxCop is not used (you should give it a try)
- Reharper not used either
- No use of the word "OpenId" in the code, it occurs once in data and this appears to be incidental.
- Foaf data is done with a IHttpHandler

Jul 11, 2008 at 7:27 PM
- No evidence of any unit testing framework. Are there any unit tests anywhere?
- Have you considered using a logging frameworks?
- Was it a deliberate design decision to put all code in just 2 projects, or is just like that?

Jul 12, 2008 at 8:20 PM
AnthonySteele,

Just so you know. Most of these questions will have to be properly answered by Mads himself or maybe RazorAnt since they are the ones who do most of the dev work on this project. As being someone who has downloaded the code and modified it heavily to fit my needs I can answer some of these from experience though.

What kind of rdf:foaf support do you have - static foaf documents, or generated from user profiles? What fields are generated in the foaf data, and is there any privacy control in it?
They just added rdf foaf and other various web 3.0 support into BlogEngine 1.4. They are generated from user profiles. As far as I know there is not any privacy control in any of it as it is used for the social web.

Do you have any OpenID or OAuth support (either as consumer or as source)
There is no current support for this. It would be easy to add in support though, but I do not think anyone has done it. One of the goals of the project is to be agile and to contribute code without the use of third party utilities or modules. That is the primary reason why OpenID has not been put in place yet. I think there are a few topics on the Discussion tab about this if you search for OpenID. They devs aren't against it, there are just other priorities to work on. Another problem is that people who would like to contribute want to do so using a third party assembly, implementing OpenID from scratch should be easy, but it is time consuming.

While I agree that FxCop could benefit the code base and other tools like that, I just don't see too many open source projects using these tools yet. Primarily because of time constraints. It would be easy to start using these things, but you would need to find a developer willing to donate the time to add these extra analysis tools into the mix.

Have you considered using a logging frameworks?
While I would love to see BE use NLog, I do not think it will be considered. Third party modules / frameworks add extra bulk into the project and the goal is to be lean and mean.

Mads can comment on this part, but I think having the code in two projects was built around the idea that you have business logic in one project and presentation in another. I am not entirely sure how you would separate it out even more than that.

As for the Unit testing (and regression testing in my opinion) I think it is an excellent idea and if I personally had extra time to work on it I would. I personally love having testing framework in a project so when I code a modification to it I can run the test and know my stuff works. I just do not think there is anyone who has picked up the ball on this one yet and contributed this to the project. I know I was considering contributing something like this when I was done with my college work, but that just has not happened yet. I am not sure what the developers feel about this, but I would think they consider this to be important. In most open source projects though, test frameworks tend to be left as an "educational exercise" for new developers who want to start contributing to a project.

(PS- I do not consider myself an expert on this project or anything, nor was I trying to speak for the lead developers. I was just attempting to answer a few questions you had since this topic has been left blank for a while)

Jul 12, 2008 at 9:41 PM
Edited Jul 20, 2008 at 10:34 AM

Hi

Thanks for the reply.

I don't see that privacy control is against the idea of the social web, in fact it's better if people can opt out of showing all or part of the information when they want to.

For OpenId, the only major option seems to be http://code.google.com/p/dotnetopenid/

You're right that using this would be better than implementing from scratch. In so many ways. For one thing, I'm only thinking of working with this project since working with it is better than starting my own from scratch.

For logging, I am more familiar with Microsoft's enterprise library than NLog. But they're both good. However logging is easier than OpenId, so if a library would be too large, then something simpler (but less flexible) could be cooked up quite quickly.

With regards separation of core, it’s not hard to come up with ways to split up the core namespace into separate Dlls. Providers could go on their own for starters. It's just a question of if you want to or need to.

As far as FxCop or Unit tests, I could start with looking at some of this. Any thoughts on StyleCop?

Jul 13, 2008 at 9:49 AM
Edited Jul 13, 2008 at 1:38 PM
One further item, the idea that unit testing is generally an afterthought, left to the interns to keep them busy until they know enough is thankfully not universal. See Test-Driven Development
Jul 16, 2008 at 12:13 PM
So where is the right place to start with BlogEngine.net development?
- submit patches as suggested by fxCop (via what avenue?)
- Make some unit tests
- Make a patch that adds OpenId - consummer and then producer support

or just do nothing and idly wonder why the providers have a common base class rather than an interface.
Jul 17, 2008 at 11:04 AM
Edited Jul 17, 2008 at 11:06 AM

Ok, here's another Minor suggestion. Search for "Mozilla/4.0 (compatible" in the core source.
It  occurs in 3 places as user agent strings. Consolidate these as a constant in one place.
And consider sending a customised user agent string, rather than claiming to be IE7 on Vista.

 

Apr 21, 2009 at 4:19 AM
Hi Anthony,
  Just wondering if anything has been done on OpenID since the last post?

Cheers,
Sean