This is a rough draft of thoughts on a tool that I would like to build. It is a simple command line tool named
oto. It stands for
on top of. I often hear and reaffirm to myself that
We are built on top of the giants.
By saying “giants”, we mean anything that adds huge value! Try to hold your thoughts with respect to the business world where giants mean “Big corps”. Think of this word in the context of open source / software developement in general. It means any project that adds massive value to your project.
Want a web-server?
npm install --save express
Want a cache?
docker run redis
You just stood on top of all these giants: npm, express, docker, redis
Want any piece of software? you download it, add it to your project and just forget about it! Just think of all those projects that help you with your project.
Don’t you think we often take things for granted?
How about we give a little credits to them.
There is a value in open source or any kind of software. The least we can do is to give credits to them.
oto is going to help you with!
There is this awesome project called all-contributors that comes very close to the motives of this tool.
It helps in recognising and giving credits to all the contributors of a project. It does it by generating a table of contributors and adding it to the README of the project. Like this :point_down:
Next thing where I find this kind of culture is with giving credits to backers and sponsors in a project.
There is this amazing project called openring. What this does is create a webring that could be embedded in blogs. It is kind of giving credits to other people on the idea with nice / related blog posts.
Picture Credits: https://git.sr.ht/~sircmpwn/openring
oto builds on the core of all the above tools: Giving credits!
I searched through the internet and discovered that there is no tool to give credits for the technologies, tools, libraries, frameworks etc. used within our project.
oto aims to address that!
It is a really simple tool. It is aimed to do the following.
- Analyse source code of project and generate an embeddable credits with logos of technologies, tools, libraries, frameworks etc.
- Compatible for markdown, HTML and plain text. So that credits could be embedded anywhere.
By generating credits to the things used inside a project, we essentially put up a banner to the future contributors of the OSS project.
It gives a person an idea about what they might be learning by contributing to the project upfront!
I suspect that
oto will encourage new-contributors to the project and also gives a nice space for people who are skimming/researching the project.
lol, I don’t know why I am including this passage here, but hear me out.
Whenever I joined a new company, I usually like to get an idea of all the technologies they are using. Then I start digging in the code at multiple repositories to figure out the things. Another way is talking to different people inside the org about it.
In this case
oto could be run in the private code bases. This will help understanding what is being done in the code-base faster.
You might tell, “oh! just read the package.json and be done with it”.
I wish! What if I am a person that doesn’t even know what
package.json is? In this case having a bunch of logos in README will more likely trigger a person to gather knowledge about the dependencies of the project.
So, clear communication of what are being used and faster understanding by engineers who are on-boarding the company.
This might just be the first step to having some kind of docs on their technical architecture. Most likely helpful in startups where they don’t have time to document their architecture and how things are being used.
Enough of story, let me try to write out the basic feature set of
Most of the programming languages have a logo these days. So it would be good to analyse the source tree for files with respective file extensions and create thumnails of all the programming languages used in the project.
Most of the projects have configuration files checked into the source tree. For example: a ruby project might have
.rubocop.yml file which means that it is using the Rubocop static analyser and formatter for ruby. So, we add it’s logo/name to the output generated by
Another low hanging fruit. Check if
.git folder exists and add the git logo to the output. :)
Also, people tend to give templates for configuration files: If the project is using redis, there might be a
redis.conf or redis.template.conf
etc. file that denotes the redis config. So,oto` needs to understand this and add the logo of redis to the output.
Files used for package management like
Gemfile etc. needs to be understood and the logos of packages by the project could be rendered in the output.
So far everything was automatic. But the user should be able to manually pass the name of some tools to
oto, so that those get added automatically.
I think this is a pretty decent document on the rational behind
oto. This obviously helped me to normalize my thoughts around it (probably made it one step closer to building this tool).
oto gets built with the help of all the amazing technologies in computing at present.
After all, we are built on top of the giants!