7.14.2008

First OpenSource Project Up! Work Starts.


Hello, this is the 3rd time I write this post.

Now, why your asking is this the 3rd time?
Because I don't have much luck with blog editors! Especially
Google's, that is why I am now using their new improved one. I just hope it doesn't mess up my formatting again. All I want to do is write, compose and post! But this is a serious struggle.

This time I am using ScribeFire. An Add-on that is integrated into my FireFox browser. It is VERY cool. I MEAN AWESOME! I can even size it to my 22' screen! Google doesn't miss the boat on too many thins, but here, well it sailed.
Now on to the post.  -

P.S.  - Post, action Post Update

While ScribeFire was excellent for me managing, creating, and posting - my little evil friend at Google somehow managed to mangle the nice presentation... I simply grabbed the text, placed <font> tags at beginning, and end, with a few <a hrefs...>, inserted the tag for the <image> and called it quits....UNCLE I said..



Background

Its about my first Open Source project I just posted a CodePlex.

"CodePlex is Microsoft's open source project hosting web site."

A definition of the service from the CodePlex team. Since I am focused on the .NET programmer (do other non- - it made sense for me to try my first open source project here instead of SourceForge.NET.

So I had to pick a project. Well I was working on developing all kinds of IDE Add In's for work and home. Integrated source reflectors, automated solution backup - based on ZipStudio [Upgraded ZipStudio source is at "Willem Rue" Blogz, a NICE Add-In that really helped me a lot once I automated the backup process at the project level], and some others. The same things I see out here now.

I had already developed a version of SQLString as task tray application, and was using it - but this was an opportunity to re-develop the idea and take it much further, and at the same time learn a brand new (for me) namespace (was NOT going back to do the Compact one!!).

 

What is SQLString?

So, this project - SQLString what is it?

SQLString is a simple SQL code generator that works within the Visual Studio 2005/2008 IDE. I had used a SQL code generator many years ago years ago and loved it.  I knew it could help me now,  but could never find it except in websites. Where I work - access to the web isn't reliable, or fast so I made my own. (NOTE to boss, this version, I made at home - off the clock).

The initial requirements were simple enough, but they grew. I couldn't make a version 2 without some serious enhancements!

Functional Requirements (blah blah blah - ode to a friend)
  1. Allow the user to either paste or have linked into the control a specific SQL statement.
  2. Select a target language and based on the language chosen, allow the user to select from a pre-defined list of data types compatible with the selected language (I am NOT a functional, but many friends are!!!)
  3. Enable the user to select a customizable template, or additional "header" and "footer" snippets (Visual Studio 2005 Code Snippets for example...).  [Best example I could come up with]
  4. Generate a source code statement which is compatible with the selected language.

    Base User Parameters related to SQL Code Generation

    1. Default the generated statement into a standard variable or allow the user to define a variable. 
    2. Define the "wrap" point for the characters in the generated statement. Default is 80, which currently means if a WORD will cause the generated string to exceed that parameter it will be wrapped to the next line. 
    3. Enable the generated SQL statement to be:

  • 1. Allow the user to insert the generated statement into the current IDE document at :

  • this.ApplicationObject.ActiveDocument.Object("TextDocument") as TextDocument;

  • 2. Enable the user to save the results into both the CODEKeep Library and XML Files.   CODEKeep (my current customers would recognize) is a place to store the generated SQL/Program Logic.  Like a storage for it - permanently, but with the ability to generate daily changes to the db and export them as XML or - whatever.



I know, wild!! I even went to Microsoft Research to check on the other language they have released for the IDE named F#. If it will be in the IDE, I was going to support it.

Ready For CODEPLEX

I know which project I will submit to CodePlex, just need to make sure I have it documented enough for them. The few options that CodePlex presents in the beginning for a new project are:

  1. Name
  2. Description (up to 2000 chars, but only the first 190 can be seen - DUH!!)
  3. URL.
  4. Email verification.


HA!!

Glad I was prepared.

Of course I may have gone overboard for a simple SQL Code Generator, but I like to have more documentation than too little. After your project is created, now you must provide details.

Project Description

Here you provide more detail on what the project is, and does. But now the fun begins because who wants to provide such information to the world in plain text, when there is a nice markup language available? So, now you have to learn that! Not a problem, but I couldn't figure out how to set an external URL to have a nice name IBM like instead of showing www.ibm.com.

I lost a lot of time playing with that trying various permutations on their URL command like:

[url:www.ibm.com]IBM and [url:www.ibm.com , title=IBM],and several others. None of which worked (CodePlex is new, so I am patient).

Doing a list or table was so easy, I almost abused it. I then provided some screenshots so users would have context. Meanwhile there is this enormous message in big red letters reminding me that I had

30 DAYS TO PUBLISH OR MY PROJECT WILL BE DELETED.

That is motivating!! I can understand though. Disk is expensive!! (Well until I walked into Best Buy last week and saw 1TB external USB drives on sale for 199!!! - I am running out of ports).


Add Team Members

This was a one man show. If someone wants to help, no problem! But no one to define.


Upload Source

Now, this is where the fun begins. CodePlex offers many source code control tools to integrate with, from Team Explorer Client (Microsoft Solution) to TortoiseSVN. I had already narrowed my choices to TortoiseSVN or to the CodePlex Client - a command line based utility which had directly interface to the TFS servers at CodePlex.

Since I had not used any Subversion based tools, I felt more comfortable with the CodePlex Client. I still have to get TortoiseSVN for work!!

Now there is a nice configuration file to which must be created, with some documentation (minimal at best). The moment I added in the parameters for my Diff and Merge tools, it thew exceptions. With no handler, to get any reason why.

Note to self:
Next time you have this situation and the source code and an ERROR - fix it.  I mean, I had the code, I knew the language, I could do what was needed to fix it..but I was thinking in the box....DUH!!


So I start taking out the parameters one by one. Eventually - it comes back to a working state when there are virtually NO PARAMETERS!

(What I learn through much trial and error is that I should wait to establish comm from my system to CodePlex servers with the Client - BEFORE setting the SourceGear or TortoiseMerge/Diff tool parameters...)

Fine, so, now I need to:check-in my project for the first time!


But there is no such command in the CodePlex Client. OK, fine, I try add - but that is to add files/directories after they are checked out- DUH!?

Now, remember - I have NO project files on their server. I search thru the Wiki and find some answer...

cpc checkout [projectname]

Which is so logical!

This I learn from someone who stayed up very late trying to use the CodePlex Client - and he was kind enough to post his notations into the Wiki.

Eventually - I get the project uploaded.


Select A License

I thought I might select the GNU license, but I went around and looked at a lot of the licenses other projects had, and was surprised in the variety. When researching the Open Source Foundation, they had so many licenses, even NASA had an open source license - I just went and decided to use the Microsoft one. No particular reason why, just hope they don't get any rights because of it!


Update the Issues

There were several. I think the most critical being the data model is still in flux.


Create A Release

Now this was interesting. I had already created the base set of files when I uploaded changeset 19719. But for a Release, it did not draw from what was checked into the repository but required I upload files from my local file system - again.

Along with each file - provide a description. I created the Alpha Release 001 and placed it into PLANNED status.

CodePlex gives you several statuses for a Release

(Which we may review for adoption on my current project)

  1. Alpha—the first feature-complete build of the software that is ready for testing. Some developers may also use the term "Alpha” for software with limited functionality.
  2. Beta—a feature-complete build of the software that has passed system and regression testing.
  3. Nightly Build—as implied, a build of the software generated after the developers have completed their work for the day. This is often an automated build.
  4. Production—the final release to be delivered to the end users.
  5. Release Candidate—a build of the software that is potentially ready for final release to the end user, barring any “show-stopping” issues that come to light.
  6. Special Build—a software build that is generated for any particular reason, often at the request of a project member or members.
Tags

Now update the "tags" that I think should be used as part of a search in order for people to find my project. I select several, from .NET 2.0 to Java/J#.


Status Check

OK, I have made the new project - provided detailed information on it's design, uploaded the files, selected a license, identified issues, created a release - OH yes - PUBLISH IT!!!

There is still more to do,

Add News Feeds and but the most difficult part for me...

After You Publish Your Project, Increase Traffic and Evangelize Your Project

I was never a salesman!! But we shall see how it goes.


Now work Begins!!


Oh, and this is a screenshot of SQLString in action!!