I just thought to myself: "There is no sense writing such a wonderful, top-class, HTML drafting program and then not getting it to other people who can use it."
Yes, it's true, I started writing the program just for myself but, the general benefit of the program is very clear.
I saw absolutely no reason that I should not extend this into a real project by offering it as an open software project to everyone in the community.
The example that I will give, which draws in my understanding of the religious requirement, is the story of the two men. To paraphrase it briefly: The men were neighbours; One had copious amounts of water in his land, and the other one had not enough water. The man with no water was arguing that his neighbour should not be allowed to withhold the water from him... He desperately needed that water. This is a very relatable story.
The verdict was that the water should be given freely and without cost! A truly correct decision.
My view of computer software and computer programming is very much in line with that correct philosophy. This is because it is clear that computer software can be easily shared and copied from one person to the next, and there is nothing really unique or new about software.
So, how could I hold it back when it might be able to help someone else? Or when others could benefit?
The best thing to do, "Just give it away".
It seemed like there were some different option for the 'licensing' of the program software, and I was initially considering to use the 'unlicensed' style... but for whatever reason, I thought "NO", and I then decided it would be better go with the Open Source General Public License.
To me that seems like the best option and somehow signals that this is intended to become a community driven project, and not a means of commercialization.
With that said, DCKIM is not a company. It's not a 'foundation'. It's not really anything. It's just a made up name. I'm not really too interested in taking credit for it, or advertising on this website. That would just ruin the whole project.
Even so, if you download the project and use it: It's completely up to you what you do with it, the program is yours.
My goal is mainly to set it up as a collection of foundational aspects, and not really a fully completed thing. There needs to be room for other people to bring in their own ideas, and continue to expand the project in their own chosen direction.
The subject of HTML is so vast, and it has so many applications, that it is difficult for me, as the programmer, to anticipate what any person will use the software for.
So, I have taken care not to push the project into a corner, only to be used for some 'niche purpose'. Other programmers can do that later.
Today I am hoping to make the initial release of the program available on GitHub. I guess this is a big moment for me because I have never written a whole computer program before, and never made an actual release of software on an Open Source basis, or ever anything...
I'm not really a programmer. I have never been 'trained' in programming. I'm just a guy who bought a couple of thick books (1$ each by the way). I then read those books and hacked my way into the Javascript programming experience. The hardest thing is finding a starting point.
I needed to write a website, and I needed to do it in a way that would be top quality (or at least equal to the effort you put in). Writing the HTML textually in an editor just wasn't going to cut it.
It seemed better to use the text editor (VI) to write a computer program, instead of just writing bad HTML. On the plus side, I had gained a lot of experience using the text-editor and the command prompt (BASH). I had just finished drawing up a good quality Backup/Reversion script for local computer use, and that's when I was finally able to begin a real programming project.
So, knowing this, and knowing that my roots were beginning with that old text-editor from the 70s, you can see where the HW-Project keyboard setup comes from. It's basically a total rip-off of everything I have ever seen before. And I stole the spacebar preview idea from Font-Forge (best program I have ever seen).
I needed it: I need the keyboard intensity of VI. Once you get into it, you just can't let it go. The legendary computer text editor that was originally written by Bill Joy was so broadly adopted and so necessary, while at the same time being original and consequentially so. It shows that there is art in programming, that there is method to its design. There must be perception of how actual people must interact with these machines.
The contribution of Bill Joy cannot be overstated. VI was revolutionary, and persists today as the absolute best program for text-editing but, we cannot overlook the later contribution of Bram Moolenaar who expanded the extraordinary and strong foundation, initially and caringly laid out by Bill Joy.
Moolenaar's contribution kept the foundation of VI alive by bringing in new philosophies of his own.
Truly a second revolution, built completely upon the first wondrous success.
That's what I'm looking for at this stage, and that is a good example to follow, and a strong case for going with an Open Source Philosophy because, there needs to be a way for the next programmer to pick it up and take the idea into their own unique direction.
If you have already had a look at the project, you can see that I have set it up pretty strongly. All you need to do is add in your own functions into the hw/programfunctions... the use ". ./chalk" at the BASH prompt and you have it all thrown together, ready to continue testing.
So, with all of that sort of stuff included, it's pretty easy to pick it up... though, in-Shallah, I will try to brush it up a little further from where it is.
If you look, you will see that there doesn't seem to be a GUI with buttons yet. No GUI menu at all... Yes, that's right but, this might be the correct time to make the initial release, this way there can be a sort of 'foundational block' laid before all of the GUI stuff gets put together.
It should be pretty easy to write up so basic GUI stuff that will greatly benefit the 'usability' of the project. At the same time, we should consider that the GUI has the potential to tailor the entire program for specific 'use-cases'. There are pros and cons when considering this eventuality.
As the project becomes developed more fully, each branch of the project must carefully and thoughtfully consider the needs of their intended 'end-user'. It is also important to be careful not to 'overload' the program with seldom used features...
These are serious concerns.
Looking at the project in its current form, we can see that it is comprised of interacting foundation components. The components are designed to work together to maximize the possible outcomes. The GUI constructs will act as a counter to this, reducing outcomes, as a necessity when we tailor the program to suit a more specific usage.
I have considered a few possible branch directions: One being the Generalist Branch, where HW maintained as having a 'multi-tool' feeling, and that aspect is enhanced to accomplish more than just HTML while maintaining the same paradigm. An example is that we might make use of the HTML rectangles to do a 'multi-crop' of an background image. This is easily done from the current setup... And there are other ideas. Maybe fitting a minimalist semantic HTML editor onto the main program somehow. I feel that this would enhance the program.
I know that you might be looking at the program now, and wondering: "Where is the Menu? Where is the GUI?" but, it's actually a bit of a critical point, so, just have another look at the "F1 keyboard shortcuts", because it's basically very 'keyboard-heavy' at this point.
Of course, as is natural, the mission of the project is total domination, utilizing everything that HTML Javascript and CSS could even hypothetically accomplish.
Imagination, philosophy, and caring enough about others that you would give your contribution to them, and enjoy seeing others benefit from the result.
Software design, in the words of the brilliant and inimitable Chenglie Hu, is a 'wicked problem'. The more you attempt to find solutions to the problem that is software design, the more you actually uncover more difficult underlying problems.
Just consider, 'problems' are not actually, as they are often colloquially considered, simply 'bad'. 'Problems' are actually skillfully identified circumstances that we endeavour to improve. Our solutions, and our intentions in their pursuit, only becomes more thought provoking and interesting as the full breadth of those circumstances become revealed through the stages of development.
That is Software Development: A True Social and Interpersonal Endeavour.
Thank you for reading this little note, please contribute to the project by writing some code of your own, or maybe just hack together some widgets, wizards or whatnots of your own.
WIDGETS, WIZARDS, AND WHATNOTS. I LIKE THAT.
- dckim Mystery Author