|Jotsite Water Cooler Area|
Software Project Brainstorming
This is a continuation of an idea forming session for a programming development project involving developers from different geographic areas. This is a pickup from the conversation between Sonny and Hoang through email.
I think we will use the WaterCooler Discussion forum for now. If the discussion evolves and becomes too erratic, I will breakout another forum on its own. We will give this a try just to see how it goes.
I see your train of thought, Sonny, in recognizing the importance and value of group collaberation. For the past year, I have been doing my own research on this idea. Like it or not, collaberation and involving people will depend on the use of the Internet. Uses of the internet, its popularity and acceptance probably mirrors our train of thought. Notice that you initially proposed a better "chat" program. And it is true, Instant Messaging has been the Killer Application (KA) for the past 4 years. It wasn't the KA for the business world, but with respect to popularity, we must concede that it is a KA. The next KA which we both admit might be useful is the Bulletin Board. Conceptually simple, it allows for the sharing of more complex ideas in a "sticky" form. It is sticky in the sense that the ideas remain for viewing by future users and additional unknown interested parties. It is content that does not disappear and that is a very important concept. It is the basic premise behind media distribution and through the bulletin board, thought distribution.
With thought distribution, our computing industry has come to realize that it is the thought that is of value in today's world. With that in mind, we come to the concept of capturing thoughts. The whole industry of Content Management comes out as a result of this attempt. If you notice, the major websites' contents are no longer static. Additionally, yesterday's or last week's content didn't quite disappear either. Although it takes more clicks to get at, it is still accessible. THE THOUGHTS ARE STICKY. There is a whole slew of companies working on products of this concept. The idea is to enable average users to capture their thoughts into a sticky form and provide wide-scale distribution. However, the implementation of this concept is not only exclusive to large corporations. Everyone has thoughts and can express them.... thus the coming of the "blog"s . You may have read about "blogs" in the past year or so.
This is one of the reasons I have set up JotSite. It is to experiment upon the capturing of thoughts as well as to try-out some of the new software enabling this process. Some of the major players in this arena have become quite famous personalities on the NET for their thoughts and software contributions on the collaberation front. Some of these are:
Dave Winner - Radio8
Joel Spolsky - CityDesk - http://joelonsoftware.com
Evan Williams - Blogger
I really recommend culling through Joel's writings on his site. I really think it will appeal to you. We will continue on this topic a little later.
With regards to your idea of linking thoughts. The feature exists to link pages and this forum can parse and create the links you type on to it. Eventually we will flush out our development idea but for now it is ok to throw our ideas out and see which one appeals and sticks. If only the ideas stick, it is still worth-while to voice it.
On the topic of a robust User Interface on a web browser, I think many people for the past few years have been struggling with this issue. A particularly good read is this article on Byte which goes through several developer groups' experiences and presents some possible solutions:
As this article is at least 2 years old, we can look back at the attempts and see which types of solutions work and which ones died on the vine. Each solution, nevertheless, was a good attempt at solving a perceived problem. What is surprising is that after the many years of recognizing this problem, no standard accepted solution has been adopted.
I think there are then two trains of thought through our e-mails: improvement of the "chat" or Instant Messaging experience, and improvement of the Internet "collaboration" experience (in our case working together on a fun side project while we look for real jobs). Since as we've discussed we need to tackle the second before the first, the rest of my comments reflect this second train.
For the most part the blog, bulletin board, and instant messaging reflect their contemporary physical forms of a personal journal, magazine Letter to the Editor, and a telephone respectively. What I'd like to build is more similar to the "brainstorming" activities in creative writing where distinct thoughts are connected to some though not all other thoughts in the "thread". You're closer to the mark for my train of thought with the characterization of such a project as a collaboration tool, and I'd further like to limit this to verbal (rather than symbolic/pictorial) collaboration.
One limitation I've experienced in a bulletin board is that due to its archiving nature, a contribution isn't easily updated, and outdated thoughts can't be removed. Ability to edit your old posts helps some, but then replies made around the old thoughts may no longer be valid. If instead of bundling a set of thoughts in a single post, several posts were made and some link between them provided, replies would explicitly treat one thought, and by convention thoughts without replies weren't considered. As original thoughts were obsoleted and removed, the related replies are orphaned and are flagged as being less valid than still existing thoughts. A verbosity level could be provided to show all edits or just the latest and greatest trains of thought.
I'd go on regarding what I feel are limitations in the IM and blog models, but I'm going to take a much needed nap. If we had the bulletin board replacement now I could come back later and modify thoughts on the remaining technologies rather than obsoleting in total any replies.
Oops -- forgot to mention why embedding HTML doesn't address all the needs I perceive: I'd need to know what to link back to, and there's no HTML way to address a single thought in a long document without adding an anchor to the long document. I'll write some more later but for now it's nap time.
Continuing on your idea of being able to "re-edit" writings on the web, have you come across the concept of a Wiki-web? If not, do a google search and acquaint yourself with it. This is good for idea and documentation development across multiple users. It may be exactly what we are looking at and there have been many implementations of the concept existing. If we go down this path more, it may be beneficial for us to setup an installation for use.
The current discussion forum that we are using has the "bulletin board" concept. As such, it is optimized for lots of users having about 2 or 3 paragraphs of things to say. We are now using it as a springboard for sticky conversations. As what we write tend to be longer, I am using an external editor to write my posts. Then I would cut-and-paste it to each reply. I find this works best without having to modify the forum code. With regards to springing into a different thought, it is possible to create a new topic from another instance of the browser. When the initial post is created, a "thread" number is assigned and we can use this new URL to embedd into the previous thread as part of a reply message. Of course I realize this is a manual process but for now, doing what we want/need is possible.
There are some preliminary questions I have come up with before we diverge into many many other topics:
- It looks like our interest in a project will necessitate getting some server space for writing and having some code getting called from a user using a browser from the internet. There will be a choice when it comes down to this: Linux/Apache or Microsoft/IIS/ASP based.
- Internet development environments are still relatively green. It's not as mature as Win32, Visual Basic, or MFC but it is improving very fast. I would say it is going into 2nd generation of maturity so ramping up now on it is a very good idea. There is more consolidation and wider acceptance of specific tools so if you choose correctly, our efforts spent in learning and using it would not be wasted. Would you like to pursue the Microsoft route (.NET) or the Open Source route?
- What is your preference in Language and Framework when we put the code down. Unfortunately, this aspect has confused me for a very long time since I began doing research on Internet technologies. There is a phlethora of them out there and amount exceeds the number you can count on your fingers. Unfortunately getting to know the strengths and weaknesses of each requires time and effort. We can spring a thread to talk about this if you like. My current concentration and study is in Python and Zope. However, I am also already familiar with other solutions.
- Then there is DataBase. As you can tell, "static" web is passe and any future development will depend on the dynamic nature of the web provided through programming. Once you get past the language, the next item is data storage and it will involve database. How familiar are you with database concepts and current available implementations? This is another beast altogether and would require its due dilligence.
Once we have answered these questions, it's easier to move to project ideas. The bulletin board concept is very mature and there are lots of Open Source as well as commercial implementations available. Pursuing on creating a better bulletin board may be similar to trying to create a better mousetrap and would not be as interesting. There are many sophisticated bulletin boards out there, more difficult to set-up and use, and many time pretty empty. The idea I had behind this one is to keep it simple, be extremely fast, expand only if very necessary. It's written in PHP and using a mySQL database hosted on a RedHat Linux platform with an OC-12 internet backbone.
A project idea thread is started here.
Just checked on the Wiki web idea -- sounds quite a bit more free-form than the simple concept I had in mind. Also there are some caveats that make it less than ideal for replacing a bulletin board: see the link http://c2.com/cgi-bin/wiki?WhyWikiWorksNot.
The biggest problem I would have with this design is that there is no single owner for text. Why should someone else be able to modify my contributions to a discussion? Limiting non-owner modifications by allowing only the adding of links to the original discussion seems to be a reasonable boundary. Alternately only reverse-references could be added to the text (say a link "<1>" could be added that jumps to the reply to that portion).
Side note: as this thread grows longer I am more convinced we need to get such a modified bulletin board system up and running.
As administrator, can you clean up the link a couple of messages back? The "No HTML tags" thing kind of messed up my post nicely.
As for the underlying framework to be scripted (will assume Linux is our platform choice): my own experience in these is non-existent and I don't even know what's available for a Linux platform (J2EE???). I expect choice of this framework limits our choices in languages unless we really want to make this complicated. It looks like Python has similar capabilities to J2EE and .NET -- is this an accurate assessment? If so then I suggest we take the freeware approach and build the back-end up in Python.
Fourth and final response at this time:
I'm only familiar with high-level database concepts, although I think I understand it better than someone without any formal experience would. I at least know how to build up the tables based on requirements, and can format queries in a couple of ways. I even tried compiling the MySQL client code into a small application, though this never did work -- I suspect the compile/link flags in my makefile weren't correct for the library I pulled from the MySQL site.
Let me just respond to some of the items you have addressed above first. A Wiki can be used in a mode where contributors need to log-in to change the content. In this manner, only prescribed authors are allowed. The other mode is to allow anyone to change the content and this message board already provides that facility. In order to better understand the capabilities of Wiki, I propose we set one up to use. There are many different types of implementations and I am currently looking at the Zope one. There are also ASP and PHP solutions to this. Let me know if you want to jump start and provide one for us to use. We may want to spring out another thread for a more detailed discussion on Wiki alone.
As you can see, the deeper we go into knowledge sharing/message boards/group collaberation, we will find that many things have already been implemented. In order to not fall into the "reinvent the wheel" sort of complex, I find it more beneficial to find uses for the existing solutions. Only when we find that a necessary thing doesn't already exist in the computing world would it be beneficial to implement it ourselves.
With regards to posted links on this board, the algorithm does its best to recognize links in the posting and transforms them into clickable links. For the most part, it works... however there are limitations and it won't recognize very convoluted addresses. A good rule of thumb to use is to separate the links you type in with white spaces and no 'period' at the end.
Feature addition: I have finished adding the Notify Email feature to the board. To notify a recepient of a message you are posting, just add their email address whenever you post a message. Rather than having users repeatedly come back to the board to check for replies, they can be notified of changes instead.
The Wiki discussion can continue on its own thread here:
OK -- I think this is right: add discussion here and put decisions in the Wiki.
During my job search I found another "collaboration" technology called WebDAV. Looks like an extension standard for HTML in my quick 1 minute FAQ scan, so it doesn't quite have the complete solution feel to it. Interesting though how people are perfectly willing to break out pieces that "someone else" needs to fix -- namely the web browser builders in this case.
Anyway, stepping off my soapbox, guess I should critique this just like I've done other technologies. I don't believe for our project that we want to wait for Microsoft and AOL/Netscape to build up WebDAV support. I also see that some of the benefits mentioned at http://www.webdav.org/other/faq.html#Q1 are already available through Wiki, and that the others could probably be built up.
I think the WebDAV argument though probably runs along the lines of local edit using comfortable tools (emacs), then post pieces with full version control. In terms of division of labor this makes much more sense since nobody has a really thin client anymore but more typically a PC. Funny, in my quest to be independently wealthy I've thought up possibilities of web-based services, and online document editing was one of these. Other than someone without the money to buy Word (over $300 retail!) few others would use this service since it would require learning yet another set of mechanisms for formatting a document.
Another advantage is that some mechanism is in place in case several people are working concurrently on a page: only one has the "token" and the rest will need to merge their files into the checked in file. Looking deeper at this technology: if the test is whether something allows real-time conversation/feedback, this is not really collaboration at all but more of a mechanism to version files. I guess none of the technologies we've written about is collaboration from this test, but some come closer than WebDAV.
Hoang: some of the old links no longer work (the one to your Wiki website) -- can you post an updated URL?
As Sonny has mentioned, the links above may not work anymore. This is due mainly to a move to a new web host. A reorganization also occurred and WaterCooler is now part of history. I have corrected the links here:
Project Ideas: http://jotsite.com/discuss.php?Vdfff0a7f=show&Vdc127f5d=6
Wiki Discussion: http://jotsite.com/discuss.php?Vdfff0a7f=show&Vdc127f5d=7
Sorry Sonny, I only came across this right now. You have to enter the email address of someone you want to notify when you write your message. Otherwise, the person doesn't know a message that might be directed to them exists.
Hehe -- posted to the wrong topic. Could you please also add a link to some basic information regarding how to add content to a Wiki website?