Open Slackadays opened 1 year ago
Hi @Slackadays. At the end of the README you can find a Getting started section, which, among other tips, points to the basic usage-examples page.
I'm not sure that's enough, or clear and simple enough: tips for making it better/simpler are welcome, of course.
Btw, I'll take a look at the video as soon as I can. Thanks for pointing it out!
@leo-arch Sorry for the really late response, but here's my list of tips for making it better/simpler:
clifm
installed before you can get started using it.clifm
in your life. In that video I shared, the big takeaway is that good products don't advertise that they're good or why they're good, but rather why they exist for you. In CB's case, the main point is that it saves you time and effort to make your life more productive. Even though clifm
might help with this too, nobody knows it because the readme never claims it does.Hey @Slackadays, no problem!
As to the README current arrangement, it's just a logical ordering (programming minds, you know), but maybe not the most psychologically effective ordering, that's true. I'll definitely bear your suggestions in mind. Thanks!
@leo-arch Looks like your star count is already increasing faster, so keep up this good work!
Another suggestion: Relegate the "privacy" claims to being a small detail somewhere in the documentation. Putting it front-and-center almost feels to me like going up to someone and saying, "Hi! I'm not a murderer." If you're making this claim for a CLI app, what else might be happening?
Hi @Slackadays. Yes, maybe having a privacy badge in the front page was a bit too much. I've removed it. Still in the features section though: these days, where analytics are integral part of lots of software's agenda, I feel it's important to let the user know we're not collecting data at all. Due to many reasons, I've become a security/privacy paranoid, and I know I'm not the only one.
Thanks for the suggestion!
Here's another suggestion I just remembered: See if the total number of assets in the root directory could be 10 or fewer. I don't know why GitHub doesn't try to keep them all tidy, but personally, I find it a chore when I have to scroll down a lot past the files list to read the readme. One great example of this done right is Howdy: https://github.com/boltgolt/howdy It has only 6. Clipboard has 8 which is about the bare minimum needed to not have to create a build directory manually.
Now that you mention it, there are a few files in the root directory that could be just removed. However, I'm not sure I'll be able to cut it down below 12 files.
Yeah, 12 files (4 removed). Not bad.
Nice!
This is kind of huge suggestion, but an important one. I looked through the code and it's chock-full of one-letter variables and funky tricks that I believe might be preventing more PRs from flowing in. If possible, would purging all one-letter variables be a viable option? Maybe something more descriptive unless it's a classic i
or j
for loops.
Hi @Slackadays. I'm fully aware that there's a lot of room for improvement.
As to one-letter-variables, I try to use them only in really short blocks or functions, mostly when we don't lose visual track of the variable. However, I'll take a look at it and bear you suggestion in mind for the future.
As to "funky tricks", what do you mean exactly? Can you please refer to some specific piece of code?
I think maybe "tricks" might not have been the best word, but maybe "dense." It's lines like this one https://github.com/leo-arch/clifm/blob/8f28aaab101797f5e56fe0431845309710610047/src/readline.c#L3193 which have a lot of dense logic combined with those one-letter variables and pointer symbols which might make clifm
look unappealing to those who want to help contribute.
I know this might seem nebulous, but I just think more descriptive code will help others feel more attracted to the codebase.
Well, maybe you're right. I just tend to avoid calls to strcmp(3) when it is possible to replace it by a few byte comparisons (like in this case) for performance reasons. Secondly, I prefer (and this is just a personal preference) pointer notation over array notation, though this latter might be more readable.
Maybe you have in mind something along these lines:
if (tags_n > 0 && strncmp(text, "t:", 2) == 0 && text[2])
Isn't it?
@leo-arch That looks a whole lot better already! If you're using that kind of pattern a lot, then it might actually be worth it to make a wrapper function that looks good to call and has the optimized logic underneath so you can have your cake and eat it too. I'm more used to the C++ versions where you can just use ==
and substr()
but this C version is already a huge improvement over before.
I still prefer to avoid calling a function when it is not necessary, So, maybe just removing the pointer notation makes this line look a bit better:
if (tags_n > 0 && text[0] == 't' && text[1] == ':' && text[2])
Be it as it may, I do know what you mean: some lines (and even whole functions) tend to be dense and cryptic (far worse than the one you quoted). Agreed. Refactoring code is something I've been doing since the last year at least: but, yes, there's still a lot of work to be done.
As always, thanks for your suggestions @Slackadays!
When do you think we should close this? I think this might always be an ongoing "issue" but we've already done a lot so far.
Hey @Slackadays! Well, technically this is a never-ending issue. So yes, feel free to close it. You can reopen it any time, of course.
@leo-arch This sounds grrreat! However, before doing so, here's a couple more suggestions to help the readme attract even more new users:
We only need 7 key...directory: keystrokes here
\
, or add a full break between the lines.I just want to help clifm be as great as it can to as many people as possible. :)
What about now? Shorter, leaner, straight to the point.
It looks fantastic! I actually forgot you removed the TOC when I read the latest version because the other content is now too well made to need it. :rocket:
Thanks for your suggestions Slack, as always!
@leo-arch Something else you could do is to add good-first-issue
as a topic to the repo, as that'll reveal clifm to anybody looking at https://github.com/topics/good-first-issue to find projects to contribute to. However, I've heard reports of this attracting low-quality submissions, so I'm unsure how this might turn out.
I'll take a look at this good-first-issue thing Slack. Thanks for the suggestion.
Another suggestion I have that might get clifm more attention is to make the releases more frequent. Right now, it looks like each release has a laundry list of additions/bugfixes, and waiting until you have another laundry list is leaving potential eyes looking at them on the table. If you keep going at the same rate of development then it seems like a new release every couple weeks might be viable. One piece of advice regarding this from the author of SumatraPDF is to make a new release as soon as you make a user-facing improvement. :)
Hey Slack, thanks for the advice! Yes, currently I have no fixed rules for when to make a new release: It's not that I'm waiting to have an enough long list of fixes/improvements; I just wait to feel that new features are mature, that they won't break anything (but it's just a feeling, you know; I test everything as much as I can, considering also bug reports, but you can never bu sure). So, I'll consider the user-facing-improvement rule.
Another thing I was thinking is about pre-releases: I bump the revision version about 2-3 days. Maybe I should make a pre-release for each of these versions. However, this approach won't face the potential-eyes-looking-at-bugs issue, for pre-releases, as far as I know, aren't meant to be packaged.
I'll keep thinking about it.
Here's another idea for more users: make a website. GitHub Pages works great with the Zola static site generator and that's what we used for CB here: https://getclipboard.app/
In that case, we also picked out a nice looking template and filled in the relevant info. Right now, it looks like clifm just has the Wiki as the website which isn't that good for discoverability. However, a real full-fat site would be exactly as good as you want it to be since you're not constrained to markdown or the GH platform. The result will be a bigger "presence" since you now have your own place to call home.
Hey, looks cool! I've been using Github pages for a while, but the generated site is currently broken. I'll take a look at Zola as soon as I have some time to work on it. Thanks Slack!
Is your feature request related to a problem? Please describe. I want to use clifm, but it's confusing for me to get started. I don't know what's happening in the demo other than only 7 keystrokes being pressed. Also, I don't know what specifically clifm can do for me.
Describe the solution you'd like I'd like the readme condensed and optimized to speed up :rocket: the onboarding process so that I and other users can get started with clifm easier. I don't know what the most important commands are so this would be a great addition.
Describe alternatives you've considered There could be a simple tutorial section in the readme.
Additional context I noticed that the readme is really focused on clifm's features and how it's all CLI. However, I don't know why this matters to me because CLIs are already great. Personally, I realized the same with clipboard and fixed it all up after watching this valuable video: https://www.ted.com/talks/simon_sinek_how_great_leaders_inspire_action/c