There is new project on codeplex called BooLangStudio that adds Boo as supported language in Visual Studio 2008. It is still in it's infancy but the basics are there, Class Library and Console Application projects are support, as is basic syntax highlighting. The project was created by Jeff Olson, but there are other contributors, for example James Gregory who has begun porting over some intellisense support from his Boo Visual Studio plugin.

The progress is looking good:

image 

 

I have been wishing for some Boo visual studio integration for a long time. I thought I would try to contribute to BooLangStudio, however the source is on github. That means I had to learns some Git :)

It wasn't that bad actually, I downloaded msysgit and followed this Guide. The cool thing about Git is it's distributed nature which makes it very different from Subversion. The first thing I did, since I wanted to contribute was to fork Jeff Olson's repository. This is very simple, just register on github and you click the fork button:

image

When you fork a github repository you get your own remote repository that you can push commits two. After I had created my fork I could ask git to create local clone of that repository. Git does not have local "working copies" but local full repositories. This means that you can view history logs, do commits, merges, branching all locally, without any network connection.

When I had done a commit I did a push to my github remote repository. Github has very nice commit/diff visualizations:

 image

 

In your local repository you can configure a list of other remote repositories that you can pull from (pull = fetch+merge). I noticed that James Gregory had a fork where he committed his initial work on intellisense, and I wanted to try this out. So I created a local branch, added James Gregory's fork as a remote repository and pulled his changes into that branch. The cool thing is that merging in git keeps the complete history of the commits you merge, it almost looks like James Gregory committed directly to my repository.

Everything is done at the command line, there is a TortoiseGit in the works I think but I am not sure what state it is in. Here is an example of how you can merge changes from a remote repository:

$ git remote add jagregory git://github.com/jagregory/boolangstudio.git
$ git checkout -b jagrefory/master
$ git pull jagregory master
$ git checkout master
$ git merge jagregory/master

Github has a very cool network graph that shows forks and commits and where they came from:

image

The red dots on my line represents the commits that I merged from the jagregory branch. If you hover over a a dot it will show the commit info! Git and the whole concept of a distributed source control system is very cool and interesting. The usability aspects are not quite there yet, it's a lot of git commands and parameters to learn, and it takes some time to get how the concepts work.

11 comments:

Nick said...

Awesome! Can't wait to see more Boo showing up around the place - BooLangStudio will be a big help in bringing the language to more developers.

Torkel Ödegaard said...

Yes, definitely. I also hope that it will make development and use of Boo DSLs easier.

Anders B said...

Someone knows any VS 2005 implementation?

Torkel Ödegaard said...

I don't think that is someone is going to spend time on a 2005 version now that 2008 has been out a while. And the migration from 2005/2008 is pretty simple because 2008 can target .net framework 2.0/3.0/3.5, and resharper 4.0 is in beta :)

RogerAlsing said...

nchiyPretty please please get a nice installer script for it.

I tried to install the release on codeplex but there is just no way to get it create any of the template projects provided.

(I know I can dl the code and compile it and get it up and running.. but I'm just too lazy ;-) )

Torkel Ödegaard said...

I think a installer is going to be made for 0.2 release.

If you had problem getting the language service / projects to register it could be that you dont have a Visual studio experimental hive registry. I think you have to do something like "vsregex.exe GetOrig Exp RANU" and then run vstudio with "devenv /RootSuffix Exp RANU"

Anonymous said...

Install Visual Studio 2008 SDK first! Then follow instructions here: http://www.codeplex.com/BooLangStudio/Wiki/View.aspx?title=BooLangStudioInstallInstructions&referringTitle=Home

Go to Start Menu: SDK>Tools>"Start VS2008 under Experimental Hive"

And you have Boo!

Anonymous said...

Any chance there are examples of a ASP.NET MVC preview 3 Boo version

Torkel said...

I will try to make Boo work with Monorail and ASP.NET MVC in the future when the Boo Visual studio plugin has matured a little, there are some more important features that neee work now.

James Schubert said...

I came across your blog while trying to find more information on Boo integration with Visual Studio 2008.

I just thought you might like to know, if you haven't found this in the past year, that there is a project on Sourceforge for Git integration with VS2008. It's called GitExtensions and is located at: http://sourceforge.net/projects/gitextensions/

If you have already encountered this, it may come in handy for others who stumble upon your post like I did.

Torkel Ödegaard said...

@James
Thanks for the info, did not know that there was a Git visual studio integration in the works