comments edit

UPDATE: Whoops! I linked to the wrong versions of putty and pageant. I corrected the links.

UPDATE: June 1, 2006 Sourceforge has changed the CVSROOT in use for each project. The server hostname now has the project unix name prepended. For example, to connect to RSS Bandit’s CVS repository, connect to rssbandit.cvs.sourceforge.net.

Introduction

This post is dedicated to the .NET head who’s grown up on Visual Source Safe and suddenly finds himself (or herself) in the midst of an open source project hosted by SourceForge. CVS is very different from the check-out, check-in pessimistic locking approach taken by VSS. I hope to demistify it just a bit so you can start hacking away at the numerous .NET based open source projects hosted on SourceForge.

Disclaimer

Keep in mind that I’m basing this on my experience. Although there are multiple Windows CVS clients, I’ve only used TortoiseCVS. However, I’m sure these experiences apply to WinCVS as well.

Software

Before we begin, please download the following tools.

Generate SSH Keys

The next step is to run PuTTYGen to generate your SSH keys.

  1. In the Parameters section at the bottom, make sure to select “SSH2 DSA’. \ PuTTYGen Screenshot
  2. Click the “Generate“ button.
  3. Follow the on-screen instructions (“Please generate some randomness by moving the mouse over the blank area“). Key generation will be performed immediately afterward.
  4. Upon completion of key generation, enter username@shell.sf.net in the “Key comment“ field, replacing ’username’ with your SourceForge.net user name. This comment will help you identify the purpose of this key.
  5. Enter a passphrase and confirm it.\
  6. Click on the “Save Private Key“ button and save your private key (using the .ppk extension) somewhere you’ll be able to find it again.
  7. Good, now you can post your keys on SourceForge. Keep PuTTYGen open to where it is because you’ll need it later.

Posting Your SSH Keys

The point of this process is so that you don’t have to enter your password for every single CVS file operation. In order to do that, CVS needs a copy of your public SSH key. To do that, make sure you are logged in and…

  1. Go to your account page.
  2. Scroll down to the “Host Access Information“ section.
  3. You should see a section about the Project Shell Server. Click on the “Edit SSH Keys for Shell/CVS“ link.\
  4. This will provide a form in which you can post your public key. The text to post in here is displayed at the top of PuTTYGen in a text box with the label “Public key for pasting into OpenSSH authorized_keys file:“\
  5. Make sure to follow the instructions on the page. Multiple keys can be posted, as long as there is one per line.

There is a delay before your keys are fully posted, so be patient.

Getting Pageant Involved

Now is where Pageant gets involved. Pageant is a little service that runs in your system tray. It’s primary purpose is to provide authentication into SSH. It holds your private keys in memory, already decoded, so you can use them without having to enter your passphrase all the time. Instead, you enter your passphrase once when you start pageant.

  1. After installing and running Pageant, you can double click on its icon at any time. It looks like a computer with a hat on it.
  2. Simply click on the “Add Key“ button and find the private (*.ppk) file you created earlier. That’s it!

Checking Out A Module

At this point, you are all set to get going.

  1. Make sure you’ve been added as a developer to the project you’re going to work on. A project administrator would have to do this.
  2. In Windows Explorer go to the folder you wish to check the code out into.
  3. Right click and select the “CVS Checkout“ command.\ CVS Checkout Command
  4. You will need your username on SourceForge and the project UNIX name. For example, if your username was “haacked“ (it isn’t, because that’s mine) and the project you were working on is “subtext“, you’d enter the following information
    • Protocol: Secure Shell (:ext)
    • Server: projectname.cvs.sourceforge.net
    • Directory: /cvsroot/subtext
    • Username: haacked

    \ CVS Checkout Module Dialog

  5. Wait patiently as the project is created on your local machine.

Now Write Some Code

Note that you only have to checkout a module once. Afterwards you can run the update command to get changes committed by other developers. It’s a good idea to do this before and after you make any changes.

CVS Update

Commiting Changes

After you’ve changed some files, their icons be marked with an orange arrow. To commit your changes, right click and select the Commit command. Please make sure to enter an informative comment.

To commit multiple changes, right click on the root folder and select Commit. You’llget a list of all changed files. You can check the ones you wish to commit and commit them in bulk.

Adding Files

If you add a new file to the project, you’ll need to add it to CVS and THEN commit it. To add a file, simply right click on it and select “CVS Add“.

Know when to ignore

TortoiseCVS is not integrated with Visual Studio.NET. Thus it doesn’t know that there are some files you do not want to add to CVS such as *.suo, * and maybe the “bin“ and “obj“ folders. To ignore folders, simply right click on them and select “CVS Ignore“. This will create a .cvsignore file in the directory. It’s probably not a bad idea to add this to the repository so that others don’t accidentally add “ignored“ files.

You can also set ignored files using file patterns within TortoiseCVS’s preferences dialog. Right click on any file and select “CVS“ -> “Preferences“. Under the “Ignored Files“ tab, enter file patters such as *.user.

Submitting Patches as a Non-Developer

If you do not have developer access, you can still submit patches to a project. In most SourceForge project sites, there is a “Patch“ section where patches can be submitted. In order to learn how to submit and apply patches, read the following article “Using a Windows version of GNU Patch.exe with CVS and Diff Files“.

For More Information

Conclusion

I hope this gets you on your feet when joining an open source project in SourceForge. If you find any errors, omissions, and such, please let me know so I can correct it.

[Listening to: Check It Out - Lee Burridge - Nubreed 005 CD1 (6:36)]

comments edit

Alright, it’s time for me to pull this ratty old thing out of the closet, dust it off a bit, and step onto it. Yes, my pedestal.

In this week’s newsweek, there’s an article entitled “How To Build a Better High School” which starts out with an anecdote about a student who transfers to the number 1 school in the nation (according to Newsweek). To demonstrate the rigor and difficulty of this school, the article highlights that the first assignment for in this student’s AP European History class is to…

…memorize the map of Europe and be able to draw every country, along with 10 captials, 10 rivers and 10 bodies of water.

My goodness what a brain teaser! Can anyone say “busy work”? Is this what passes for great education today? I can just see this student twenty years from now as a diplomat or foreign policy analyst.

Well sir, before we head into this meeting, do you understand the historical context surrounding the animosity between these two nations and how their cultural differences have stoked this hatred?

Hmm… Not really, but I can draw you a pretty map with turquoise rivers.

Now in all fairness, I’m sure they will cover meatier subjects, but is this rote memorization necessary? Is it preparing them to be thinkers and leaders of the future? Rather than relying on rote memorization, involve them in a discussion about the history, culture and politics of these countries and point it out on a map as you do so. They’ll figure out where these countries are located.

Rote memorization has its place (like sports statistics), but by highschool it should be at a minimum. Ok, rant over. I have to go memorize some HTML entity codes.

[Listening to: Just Be - Tiësto - Just Be (8:46)]

subtext comments edit

Subtext Logo For the past several days, I’ve been consumed with working on the Subtext blogging engine (not to be confused with the Subtext programming language). It’s been the most fun I’ve had writing software since, well, since working on RSS Bandit as a matter of fact. ;)

Speaking of RSS Bandit, Dare offers some good advice for those starting an Open Source project. I’m going to have to pick his (and others) brain some more and maybe write a short article with advice on starting and continuing an open source project. Especially since I’ve already violated one piece of his advice, which is to save the announcement till you have a release, in order to generate more excitement.

Despite not having a release yet, I have seen some excitement in the community over this project and I appreciate all the well wishers. If you’re interested in taking a look, you can get the latest source code at any time, but you’ll have to use CVS until we get a release prepared. I was working furiously to get an installer package ready, but upon the advice of the team, I put that aside so we could focus on having a more compelling release first. That also bought me some time and breathing room as I was completely stuck on a problem using WiX.

So far, some of the interesting features I’ve implemented are…

  • Friendly and informative error pages for missing blog_config records and malformed (or just wrong) connection string.
  • Skins can now add an edit link visible only to the admin user to the ViewPost page. So when viewing a page as an admin, you can click the edit link to go directly to the post editor. Sometimes I like to edit an older post and hated having to page through so many records. Instead, I can use Google to find the post and then click the edit link.
  • Fixed the MetaBlogAPI. I hated the fact I couldn’t edit old posts with w.Bloggar. Now I can.
  • Syndication compression (for aggregators that support it) using contributed code.
  • Applied a contributed patch to add “image”, “license”, and “copyright” elements to the RSS feed for those that want it.
  • Comments can be turned off after a configurable number of days.
  • … and more!

Already it’s at a point that I can’t wait to deploy it to my own blog. But I’m going to hold off till we can implement a few more features and get the installation package together. That’s the biggest technical challenge right now and I welcome any offers of help on that.

My pace on this project will slow by necessity as I get my consulting projects moving forward. But I have to admit, I’m having so much fun on this I often catch myself daydreaming about finding a wealthy patron to sponsor me to work on open source projects. But a foot set firmly in reality snaps me out of that stupor and back to writing code.

[Listening to: Plantastic - Artifacts - Lee Burridge - Nubreed 005 CD2 (6:01)]

comments edit

This just cracks me up. Especially after reading #1 through #3 and then you get to #4, I can’t stop laughing. If you’ve been these various venues (rave, dance club, hip-hop club, etc…), you’ll totally get this humor.

You know who you are. Standing behind that deck of turntables, holding one headphone to your ear, being pretentious and aloof as you play with knobs and shuffle through records. You can just settle down, because nobody cares that you’re a DJ.

Take a read.

comments edit

Today has been an awful day, starting just past midnight, I lose the database for my site. Later, I played in the most dreadful soccer game ever. We only fielded ten players, but the other team only had seven showup to start! Yet, they managed to put three in the back of the net by half-time.

At half time, one more of their players showed up and one of ours had to leave, leaving us with a only a 9 to 8 advantage (which felt like a disadvantage at this point). If it wasn’t for a red card one of their player’s drew for kicking me in the chest while I was down on the ground, they probably would have scored 10 goals in the second half, rather than keeping the score at 3 to nill. It was complete and total humiliation.

Now, after recreating my blog entries (an upbeat note), my Toshiba M205 takes a dive with the blue screen of death and won’t boot properly. GodDamnPieceOfShitSonofabitch!!!

Anyways, I’m annoyed, but not too down about it. Heck, I live in Los Angeles, it’s sunny outside, and my wife made me a nice coffee. I really can’t complain. But I just did, didn’t I. ;)

UPDATE: I forgot to mention that my office smells like dog piss because Twiggy has taken a liking to doing her dirty deed in a particular corner of the room. Just lovely.

comments edit

As a developer, I like choice. For example, WiX doesn’t currently support managed custom actions. You can hack it together, but they won’t support your endeavor. Personally, I want the choice to shoot myself in the foot with a managed custom action. Hand over that gun!

However, too many choices can be quite paralytic as well. You ever try to round up more than four coworkers for lunch and figure out where to go? So it comes as no surprise that having too many options in a company 401 (k) actually decreases overall enrollment (as reported by The Wall Street Journal). My buddy Walter here has a analysis of the topic.

comments edit

If there’s one thing I’ve learned as a professional developer, it is that “TIP” is bad. Never Test In Production! Unfortunately in my case, it was past midnight, I was tired, and I had two query analyzer windows open, one to my local host, and one to my website’s database, both with the same database name

I was testing an installation script that would drop and recreate the Subtext database, and I just happened to run it in the wrong Query Analyzer window. You can imagine my distress as I visited my site to find it pretty much gone.

Fortunately, my hosting provider takes regular backups and they had a backup from four days ago. Once the backup was restored, I went in and carefully recreated four days worth of blog posts with help from my RSS Bandit cache. You see, it’s more than vanity that I subscribe to my own feed.

In case your curious, I used Query Analyzer to reconstruct the posts since the URLs were generated using the ID column (identity) and the DateAdded column. With liberal use of the

DBCC CHECKIDENT (‘blog_content’, RESEED, 3073)

command, I recreated the proper IDs so that existing links to these posts would not break. Unfortunately I lost all comments.

[Listening to: Duke Pearson (With Airto And Stella Mars) / O Amor Em Paz (Once I Loved) - Blue Note Plays Jobim (5:24)]

comments edit

From Scoble’s blog we hear that…

MAJOR NEWS. Steve Ballmer is sending email to all Microsoft employees explaining that Microsoft is reversing its position on the anti-discrimination bill.

You know, it would be petty to say it, but I will. I Told You So! ;) All kidding aside, I’m heartened to see Microsoft change its positions. It just shows that corporations can look solely past the bottom line and consider the common good. In doing so, I believe it will support the bottom line anyways in a more far reaching manner.

As for those who worry that..

…people should be able to use Microsoft products without having to support political causes they don’t.

I’d like to point out two things. First, by choosing any product you’re endorsing certain causes whether you like it or not. You’re wearing clothes made by children in a sweatshop in Chile? Guess what, you’re supporting an oppresive system. Secondly, by purchasing Microsoft, you’re already supporting this particular position. This bill in particular is merely a reflection of a policy Microsoft already has internally regarding anti-discrimination. It’s not taking rights away, it’s merely protecting rights in the corporate environment. In other words, it’s a gimme.

comments edit

Scoble has posted Steve Ballmer’s email on public policy engagement and outlines the thought process behind the reversal.

After reading the email, I just have to say, much props and kudos to you Steve and Microsoft! One of the key points Steve makes is…

After looking at the question from all sides, Ive concluded that diversity in the workplace is such an important issue for our business that it should be included in our legislative agenda. Since our beginning nearly 30 years ago, Microsoft has had a strong business interest in recruiting and retaining the best and brightest and most diverse workforce possible. Im proud of Microsofts commitment to non-discrimination in our internal policies and benefits, but our policies cant cover the range of housing, education, financial and similar services that our people and their partners and families need. Therefore, its appropriate for the company to support legislation that will promote and protect diversity in the workplace.

It highlights that social responsibility is good for business.

This devotion to diversity, frankly, is heartwarming and uplifting. As a “mixbreed”, I’m all over diversity. The more colors the better (although that doesn’t always apply to web design people). Reading Ballmer’s email made me feel that Microsoft might actually be a great place to work. And that’s a good thing for Microsoft. To be seen as a progressive workplace will invite the best and the brightest. As will shipping timely solid software. One down and one to go.

[Listening to: Decoder - Dumb - Diesel Boy - System Upgrade (2:50)]

comments edit

Tentative logo Ken Robertson points out some minor inaccuracies (none intentional) in my announcement about Subtext concerning Community Server.

I went ahead and made some corrections in the announcement, though I defended my point about targeting different markets which I will repeat here.

As for the target market, I see your point that I may be slightly off. My point is that by commercializing Community Server, you’ve created an incentive to target the needs of larger paying corporations. You’re a business and you need the cash inflow. Nothing wrong with that.

I also go on to mention in my update to the announcement

Starting this project is not an attack of Telligent or Community Server by any means. I do wish them well. I just think there’s still room for a tightly focused Open Source blogging engine targeted to individuals with no restrictions. It’s very likely that Community Server 1.1 or 1.2 will blow our socks off and have us questioning whether Subtext is worth the time. But until then, I think Subtext will ride the wave of backlash at the perceived hastiness in which CS 1.0 was released and hopefully turn into a compelling product in its own right. We’re carving out a niche here.

Only time will tell if I’m proven wrong or not. In the mean time, we have a team of people really amped about this project. It will be a fun experiment whatever happens.

Get involved!\ If you’re interested in helping out, please feel free to check out the project site, make or comment on feature requests, or if you’re really bold, load up CVS and take a look at the source code.

Also, if anyone out there is a WiX expert, I could certainly use some help!

P.S. That logo up there is a tentative logo made by Robb. Who knew that dude was an artist?

[Listening to: Need You Tonight - INXS - The Greatest Hits (3:01)]

comments edit

I’m looking for a Windows Forms control or dialog used to both parse and build connection strings by walking the user though selecting a server, database, etc…

If you know of such a control, please provide a comment. I’ve been able to build OLEDB connection strings using the Microsoft OLE DB type library, but it only produces OLEDB connection string. I want a dialog or control that can walk a user into building a valid connection string like:

Server=localhost;Database=SubtextData;Trusted_Connection=True

Thanks!

comments edit

This quote from Sharp as a Marble just cracks me up.

Then, on the way into work, a car passed me with a bumper sticker on the window that said These colors dont run and a picture of the American flag. Cept the sticker had not weathered the rain very well and the ink had ran. Irony, eh?

[Via Sharp as a Marble]

code comments edit

I’m posting this in the hopes that it helps someone out there with the same problem because I just KNOW how often you’re adding files using CVS. It’s the little spark that gets your juices flowing while sitting at work daydreaming about how much you can’t wait to use CVS again.

Anyways, I was creating a new CVS module and adding the contents of some source code to the repository when I heard the sound of breaking glass that TortoiseCVS uses to indicate a problem (it’s a rather lovely sound).

It seems I had some sort of network issue while adding files. No problem, I thought, I’ll just add the files that haven’t been added and then commit all the files.

Unfortunately, every time I tried commiting files I heard that dreaded breaking glass. My error message was something like:

cvs commit: failed to create lock directory for `/cvsroot/MyProject/SomeDirectory’\ (/cvsroot/MyProject/SomeDirectory/#cvs.lock):\ No such file or directory\ cvs commit: lock failed - giving up\ cvs [commit aborted]: lock failed - giving up

Well that’s strange, the error message is having trouble creating a lock for the directory “SomeDirectory” because it doesn’t exist. But when I use Tortoise CVS to add contents, it shows that everything has been added.

What I discovered is that CVS stores information about the state of the repository in local hidden folders named, you guessed it, “CVS”. If something very bad happens, it’s quite possible that the local information will get out of synch with the information on the server. That’s exactly what I ran into.

To fix it, I copied my source tree to a new directory, deleted the old source tree, and ran a Checkout command to get the latest version that actually made it into the repository. Then I copied that set aside source tree over the one I had just checked out so that all the new files made it into the tree. That then showed that I still needed to add some files and directories to the CVS repository, which I did. Finally, a commit of the source tree worked flawlessly.

By the way, I’m a relative CVS rookie, though I’ve used it quite a bit. So if there was a better way to do this, let me know.

For a great tutorial on source control, check out Eric Sink’s series Source Control HOWTO.

[Listening to: Chinese Burn (Forbidden City Remix) - Paul Van Dyk - Perspective CD2 (10:36)]

subtext comments edit

This document describes the goals for future versions of Subtext as well as a plan for achieving them. The goals for this roadmap are the following:

  • Communicate to end users what features are planned for future releases
  • Elicit feedback from users about upcoming releases
  • Provides a prioritization of features

This document is a work in progress and feedback is welcome.

Administrative Road Map

  1. Documenting existing source code and features. (priority: high)
  2. Fill specific project roles (patch manager, forum manager, etc…) (priority: high)
  3. Set up a website and Wiki for Subtext (unfortunately subtext.com is taken). (priority: med)
  4. Set up an automated build process (NAnt) (priority: low)

Upcoming Releases

As we flesh out the roadmap, we’ll divide it into sections based on planned future individual releases. For now, this document will simply list goals and features planned for the near and far future.

Gotta Have It Features Immediately (priority 1)

These features will directly support the principles of the Subtext project. UPDATE: We are rethinking the single vs multiple blog support. More details later. One important “feature” that must be discussed is the dropping of the “multiple blogs on one installation” feature. In order to maintain Subtext’s goals of simplicity and it’s focus on the hobbyist and individual blogger, it makes sense to focus on the scenario where users are using Subtext to create a single blog. This will distinguish Subtext from Community Server which is geared towards corporations and groups that wish to host multiple blogs. Please provide feedback on this decision.

  • Installer for local setup: We’ve started an installer using the WiX toolkit. Initially, this will be an MSI package that will install both a website and the database when run locally. Eventually, it will have to be able to upgrade an existing installation.
  • Simplified configuration (single blog): By removing the multiple blogs feature, configuration can be simplified immensely.
  • Configuration utility: Upon first installing Subtext, the configuration utility will be an easy to use WinForms app used to set the connection string (and certain other settings if any) within the web.config file. This utility can be run at any time to tweak web.config settings without having to muck around the XML by hand.
  • Kick ass documentation: Can’t stress this enough. We’ll use NDoc to generate code and API documentation. As for user documentation, we’ll have both a project site and a wiki.
  • Comments Automatically Expire: This is currently hard-coded into Subtext and needs to be made configurable. Allow the user to have comments turned off after a configurable number of days. Existing comments will still be displayed, but no new comments will be allowed.

Gotta Have It, But Just not yet (priority 1.5)

  • Friendly Urls: Currently, Subtext creates permalinks that look like http://haacked.com/archive/2005/05/04/2953.aspx. In a future version, we want the permalink to have a more human readable URL. For example, this might be converted to http://haacked.com/archive/2005/05/04/AnnouncingSubtext.aspx.
  • Improved Usability: One of my pet peeves about .TEXT is how hard it is to edit a really old post. You have to page through the data grid of posts till you find it. Instead, a simple option is to create a new admin token that skin creators can place in their skin where a post is rendered. When a user is logged in as an admin, the token is displayed as an icon with a link that the admin can click to edit that post. Thus, to edit an old post, simply make sure you’re logged in as an admin and leverage Google to find the post, and then click on the admin token.
  • Replace/Upgrade FreeTextBox.dll: Hopefully with something that won’t mangle HTML.
  • Comment Moderation: This is merely one tool in the constant battle to fight comment spam. Allows users to turn on and off comment moderation.
  • Simple Comment Filtering Rules Currently, haacked.com uses a simple trigger that filters out comments with a certain number of links. This exceedingly simple filter does remarkably well. To fight comment spam, we should start with a few simple (and configurable) rules for filtering comment spam. We can add more complex rules later.

Important, But Maybe Next Release Features (priority 2)

  • Membership Provider Model implementation: This will be a very simple system that allows a blog owner to create accounts with certain roles (reader, author, admin). Thus a blog can have multiple authors for a single blog.
  • New CSS based Templates: These will be templates that can be “skinned” purely via CSS (ala CSS Zen Garden). We’ll provide a tool for a blog owner to edit and switch CSS for this particular template.
  • XHTML compliance: Both transitional and strict.
  • Comment Filtering Rules Engine: This will be similar to the Junk Mail rules engine in Outlook. We’ll provide a web based interface for creating filtering rule used to combat comment spam.

Features to dream about (priority we’re dreaming)

  • A Spell Checker: For all those bad spelers out there.
  • Migration utility: We’re not so arrogant as to believe you’ll never use another blogging engine again. If you do, we want to help you migrate your permalinks and posts to it.
  • MySql Provider: because not everyone wants to pay for SQL Server hosting and some people want to honor their license agreement for MSDN Universal. ;)
  • Mono support: This may be way down the road, but supporting Mono would be a nice way to introduce the Linux crowd to the beauty of ASP.NET and Subtext. Besides, we’ll finally get props from the Slashdot crowd for our 1337 sk1llz.
  • Intelligent comment filtering: Whether it be via Bayes filtering or some other means, but a more autonomous method of spam filtering is called for.

Tags: Subtext

subtext, open source comments edit

sub text\ Function: noun\

  1. The implicit or metaphorical meaning (as of a literary text)\
  2. A story within the story.

What is .TEXT?

.TEXT is a popular (among .NET loving geeks), scalable, and feature rich blogging engine started by Scott Watermasysk and released as an open source project under a BSD license. Scott did a wonderful job with .TEXT as evidenced by its widespread use among bloggers and being the blogging engine for http://blogs.msdn.com/ among others.

Sounds great. So why fork it?

There are several reasons I think a fork is waranted.

.TEXT is dead as an open source product.

.TEXT is dead as a BSD licensed open source project. Out of its ashes has risen Community Server which integrates a new version of the .TEXT source code with Forums and Photo Galleries. Community Server is now a product being sold by Telligent Systems. There is a non-commercial license available, but it requires displaying the telligent logo and restricts usage to non-commercial purposes. I’d prefer to use a blogging engine with an OSI approved license, in particular the BSD license works well for me.

As an aside, if you’re wondering how they can take an open source project and turn it into a commercial product, it’s quite easy actually. Here’s the story of another commercially acquired open source project.

Community Server Targets A Different Market

Another reason is that Community Server has become sort of the Team System of blogging engines. By virtue of it going commercial, it’s being targetted to a different market than your average hobbyist and blogger. While I’m sure many are looking forward to the tight integration with forums and photo gallery, that’s just not something I personally need. This integration project was quite ambitious, but it resulted, in my opinion, a rushed 1.0 release as evidenced by this list of bugs. Bugs are fine, but many of these are regressions of RSS functionality that worked fine in .TEXT. I’ve helped Jayson with fixing some of these bugs in CS. As a developer on the RSS Bandit team, you can guess that proper RSS support is very near and dear to me. Starting this project will enable me to have a hand in both ends of the blogging spectrum.

Ok, So Who Does Subtext Target?

Subtext is the name I’ve chosen for this fork of .TEXT. Subtext targets the blogging enthusiast who wants a usable and tightly focused blogging engine. If you’ve ever caught yourself throwing your hands in the air and declaring that you’re going to write your own blogging engine from scratch, Subtext is going to be for you. My first and primary task is to streamline the installation and configuration process (hence my recent fascination with WiX).

What are the Subtext Guiding Principles

There are several principles that will serve to guide development on Subtext.

  • Usability
  • Badass Quality
  • Documentation
  • Focused
  • Easy to install and configure

One of the difficulties of many open source projects is their typical lack of documentation. Working with Dare and Torsten, I helped improve their already impressive documentation of RSS Bandit. I’d like to do the same for Subtext.

Likewise, I want to make setting up Subtext a pleasure, not a royal headache. That’s my first task and highest priority at this point.

Where’s Subtext At Now?

Currently I’m in the planning stage for Subtext. I’ve uploaded the code to the Subtext SourceForge project and am currently recruiting a few core members to help out. I’ve started with the .TEXT 0.95 code base, so if you have patches to submit, by all means please do. I’ve already added some small changes to make it more XHTML compliant. In the beginning, I plan to recruit a small core team of developers with write access to help me review and apply code patches, as well as do some of the development. Over time I hope the team will grow as we find developers who are making meaningful contributions.

In the meanwhile, I’ll be drawing up some project guidelines and a roadmap so stay tuned.

UPDATE: Ken Robertson points out some inaccuracies with this announcement in his blog. I went ahead and made some corrections.

One thing he mentions is that I’m slightly off when I say that the target market for CS is larger institutions. I agree that CS may work well for small fries like me, but I defended my assertion with a comment in his blog.

As for the target market, I see your point that I may be slightly off. My point is that by commercializing Community Server, you’ve created an incentive to target the needs of larger paying corporations. You’re a business and you need the cash inflow. Nothing wrong with that.

Starting this project is not an attack of Telligent or Community Server by any means. I do wish them well. I just think there’s still room for a tightly focused Open Source blogging engine targeted to individuals with no restrictions. It’s very likely that Community Server 1.1 or 1.2 will blow our socks off and have us questioning whether Subtext is worth the time. But until then, I think Subtext will ride the wave of backlash at the perceived hastiness in which CS 1.0 was released and hopefully turn into a compelling product in its own right. We’re carving out a niche here.

Tags: Subtext

comments edit

UPDATE Wow, check out the privacy policy for Google Web Accelerator… On second thought maybe I’ll hold off on installing that.

When you use Google Web Accelerator, Google servers receive and log your page requests. Page requests and data sent in encrypted form using an HTTPS connection will not go through Google. It is possible that some personally identifiable information could be sent to Google, if the information is sent without using an encrypted (HTTPS) connection.

To enhance Google Web Accelerator’s performance, Google temporarily caches cookies from third party sites that are used in your Web requests. For more information, please see our FAQ.

To accelerate delivery of content, Google Web Accelerator retrieves and caches webpages before you request them. Therefore, your Google Web Accelerator cache may include copies of webpages you have not visited. You can clear the cache following instructions in the FAQ.

Google Web Accelerator Google announced on its blog that they’ve release a beta version of their new web accelerator designed for broadband use. I’ll give it a shot and see how well it works.

Man, these guys are pushing out a lot of interesting products. My screen is starting to look like a Google sponsored desktop.