On top of

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.

That’s what oto is going to help you with!

all-contributors

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:

all-contributors

Picture Credits: https://github.com/all-contributors/all-contributors/blob/master/README.md

backers & sponsors

Next thing where I find this kind of culture is with giving credits to backers and sponsors in a project.

backers

Picture Credits: https://github.com/opencollective/opencollective/wiki/Show-Backers-and-Sponsors

openring

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.

openring

Picture Credits: https://git.sr.ht/~sircmpwn/openring

Meet oto

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!

(Also if you happen to find a project that already does this, please drop me a message / tweet

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.

Contributors

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.

Inside companies

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.

Basic Features

Enough of story, let me try to write out the basic feature set of oto

Programming languages

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.

Configuration files and directories

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 oto.

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 example.redis.conf or redis.conf or redis.template.confetc. file that denotes the redis config. So,oto` needs to understand this and add the logo of redis to the output.

Package managers

Files used for package management like package.json, Gemfile etc. needs to be understood and the logos of packages by the project could be rendered in the output.

Manual gear

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.

Sign off

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).

I hope 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!