• Please review our updated Terms and Rules here

Why does building something from Github have to be in a "secret" language and needlessly archaic with no real instructions?

But you were covering topics from last year as well. Trying to keep it on course.
Yes, deliberately, because I felt I had something useful to add that hadn't already appeared in the thread. Again, sorry if you felt that conversation was done and didn't want to see further posts on it, but that's the nature of discussion forums.

If you have further questions and want to start a more narrowly focused thread for those, do feel free to ping me with a PM if you feel I can provide useful input on them and want to make sure that I see it.
 
Screw that! @Chuck(G) Get off your ass and start documenting! Set the example!

If you have further questions and want to start a more narrowly focused thread for those, do feel free to ping me with a PM if you feel I can provide useful input on them and want to make sure that I see it.
Again I appreciate your input. Thank you.
 
If you're particularly lucky, someone like me will come along and not only find your code useful, but will do the integration work to get it into a form suitable for bringing back on to the main branch of the upstream repo.

This whole thing, really.

The sad reality is that there's a lot of *very* useful stuff out there, even fairly widely used things, that end up kind of rotting on Github after the developer(s) that originally built the thing and shepherded it through the period where it achieved ubiquity ends up moving onto other things (or gets hit by a bus, or whatever). As part of my job I've lived through fruitlessly attempting to submit patches to pretty widely used Python modules by opening github issues and hearing nothing but crickets for... gee, almost two years at this point. We end up forking it, hacking our build system to pull from the fork, and going on with our lives, but... hey, we put it out there, it's on the issue list, if the upstream fork every gets a live maintainer again we've given them something to work with and we'll be more than happy to go back to just including the upstream source in our requirements.txt file.

Nobody can claim open source is a perfect model, but what's the alternative? Individuals still move on or die, companies go out of business, and when these happen with closed source projects instead of things just getting stale waiting for someone to come along and dust them off again they're lost entirely. Not an improvement.
 
You know what would be cool? Starting a new thread for a new topic ..

This latest batch of messages seems to be about GitHub best practices, and not related to the original thread. New threads are cheap and easy - use them.
 
Screw that! @Chuck(G) Get off your ass and start documenting! Set the example!
I believe in documentation. My github code is not only documented at the source level, but a top-down doc is published external to the code.

But then, you've probably never read any of my github stuff...
 
I believe in documentation. My github code is not only documented at the source level, but a top-down doc is published external to the code.

But then, you've probably never read any of my github stuff...
I haven't, but I have read about it. So of course I will take you at your word.
 
Don't--here's a sample from a couple of years ago. Note that there are several other accompanying documents.
 

Attachments

  • PertecNarrative.pdf
    49.7 KB · Views: 10
See that is the type of documentation I like to see and expect from a creator. Clearly you feel the same.
My training was in the mainframe world that often involved many people in a project. You were expected to produce several documents as project manager. (1) Design document, outlining the basic operation and estimating the time and labor and other resources for implementation. (2) A project schedule; usually a Gantt chart--my own upper management had the maxim "If I can't hold it in my hands, it isn't a milestone". (3) A test document--describe the nature of testing and any test resources needed. (4) An internal maintenance specification that calls out the code operation in detail. Then you could finally start coding--and coding was subject to code review by an outside (of the project) referee, so you had to be ready to defend the design. And, of course, there were coding standards.
But this was before microcomputers, etc. back when people knew how to write in plain language. Then you had to report progress at monthly status meetings. Did things happen slowly? You betcha.

I have no idea what the practice is in commercial operations today.
 
I have no idea what the practice is in commercial operations today.

...Probably pump out a less than finished product.. Make promises about said product which may or may not be able to be implemented in the future. And leave all the undocumented knowledge on one or two individuals with no real documentation to cover them and no plans to train anyone else as training costs money. Oh and of course the only individuals who retain the knowledge need to either ill or unhappy with their work so securing that information in the future is impossible.
 
...
But this was before microcomputers, etc. back when people knew how to write in plain language. Then you had to report progress at monthly status meetings. Did things happen slowly? You betcha.
...
But, incredibly enough, the code probably did what it was supposed to do when released.
 
Im chocking it up to how society is becoming daily more incapable of communication because of smartphones and Antisocial media. Everything is indirect. Nothing is documented.
From my experience, people not documenting what they did definitely started before smartphones. I guess writing commit messages is hard, boring, and one can generally get away with not doing it, at least for a while - it might cost the author or someone else later, but it's of no immediate value to the author who already has all the information in their head!

It's probably worth noting that each commit in Git is a complete snapshot of the tree of all tracked files at that particular moment. Think of each commit as something like a ZIP file containing all the tracked project files. Thus there is nothing that was ever once committed that you cannot go back and recover.
Wouldn't it be fair to say that if someone doesn't know or care about proper etiquette for public Git repositories, but they know how to use Git reasonably well, they may in fact make something not impossible, but at least quite hard to find/recover? I'm talking about rewriting history; from this stackoverflow question it appears that GitHub never garbage collects commits that aren't reachable from a branch, but if you do a git clone/git pull you won't get such commits.
 
(BTW, this message might be a good link from which to launch a new topic, if you're replying to anything in it. I'm not sure of etiquette here (I have no issue with all this discussion being in this one thread as a collection of "complaints about code and documentation quality"), but I have seen an admin look annoyed that this thread was getting "off topic.")

From my experience, people not documenting what they did definitely started before smartphones.
Oh yeah. Remember back in the day how every book and teacher told you to do a flowchart for your code before writing the code, and how almost nobody ever did that?

I guess writing commit messages is hard, boring, and one can generally get away with not doing it, at least for a while - it might cost the author or someone else later, but it's of no immediate value to the author who already has all the information in their head!
It's without question hard to write good commit messages, but I'd disagree on the value. Writing a clear, high-level explanation of what you're doing, though difficult, can often really clarify things, for me frequently to the point where I realise I've gone rather wrong in that commit and need to rewrite it. Which is why I often write documentation and/or a rough commit message first: it turns out to force me into doing proper design work, rather than just hacking out code.

Though, while that does provide immediate value to me because of the particular things I value, it is a fair argument that some other developers might consider, "This code you just wrote needs to be rewritten because it's unclear/subtly wrong/clearly the wrong direction" is not what they value because it creates a bunch of extra work. Especially if their boss is a "stop wasting time blathering about code quality and just get it done" type. In such situations, "it looks like it works" is desired over "it clearly works" if the former is cheaper.
 
Wouldn't it be fair to say that if someone doesn't know or care about proper etiquette for public Git repositories....
I need to pause there because there is no one "proper etiquette" for public Git repositories. What makes for an appropriate level of documentation—including commit messages, documentation files, comments in code and even things like function and variable names—is entirely dependent on the target audience for that documentation, and that can vary vastly. A project with a core of full-time developers and an esoteric application domain might have very clear and efficient communication within the repo for those developers, and yet be near incomprehensible to an outsider not familiar with the application domain, the structure of the code, and the conventions and culture of that core team. That's can be fine if the "secret language" that outsiders must learn to understand the code is something that's helping the development team communicate more clearly and efficiently within the team. The developers have just made a certain choice about the balance between that clear, efficient communication within one group versus acting as a tutorial for outsiders.

Having such repos be public isn't a bad thing, nor should we be complaining that such repos don't include "beginner documentation" or tutorials (as opposed to politely suggesting that this would be helpful). It's still better to have the code available for those who can understand it (and who may even find it worthwhile to write such beginner documentation or tutorials) than not to have it available at all.

And in many cases, perhaps such beginner documentation simply shouldn't be in that repo at all. Does every repo with some *.kicad_{pcb,prl,pro,sch} files in it that mystify software guys really need a detailed explanation of what KiCad is, how to download it, how to read schematics, what components are, an annotation on every pull-up resistor explaining what a pull-up resistor does, and so on?

, but they know how to use Git reasonably well, they may in fact make something not impossible, but at least quite hard to find/recover? I'm talking about rewriting history; from this stackoverflow question it appears that GitHub never garbage collects commits that aren't reachable from a branch, but if you do a git clone/git pull you won't get such commits.
I suspect that there is still a reference somewhere in GitHub; I've added an answer to that StackOverflow question explaining what's going on in more detail.

But what you're talking about there isn't really an issue: that commit is "lost" because the developer who made it explicitly said that he had a different (and presumably better) version of that commit that he wanted on his `master` branch instead. So when you clone his repo, you'll get that one.

So yes, bits of history like that can get lost, in the same sense that someone can simply delete an entire project on GitHub and it's "lost," but that's just someone intentionally making something unavailable from that source, and doesn't affect "Here are the commits I do want to make available to others."
 
I need to pause there because there is no one "proper etiquette" for public Git repositories.
That's certainly true. I got the impression however that it's fairly universally considered rude to rewrite a branch that other people are using, because of how annoying it is to deal with, although I'm not an expert in collaboration using Git. I suppose with GitHub you don't really know if anyone else is using it - it's not like they're your team members and you can ask them - so I'd probably err on the side of not rewriting, but others may not worry so much and just do it.

But what you're talking about there isn't really an issue: that commit is "lost" because the developer who made it explicitly said that he had a different (and presumably better) version of that commit that he wanted on his `master` branch instead. So when you clone his repo, you'll get that one.

So yes, bits of history like that can get lost, in the same sense that someone can simply delete an entire project on GitHub and it's "lost," but that's just someone intentionally making something unavailable from that source, and doesn't affect "Here are the commits I do want to make available to others."
I think that making a commit go away permanently is something that is sometimes necessary, e.g. because someone accidentally pushed some private information to GitHub. However, nobody is policing the use of that feature and I wouldn't be surprised if some users did it when they didn't need to but they just didn't care about the impact on others. Someone could remove stuff just because they're a bit embarrassed by a mistake they made. Note that I'm still trying to address part of the original question here - in response to the question below I'm trying to say that it's quite possible there's no record at all of something being removed:
Why wouldnt there be notation explaining WHY IT WAS REMOVED!
 
I got the impression however that it's fairly universally considered rude to rewrite a branch that other people are using, because of how annoying it is to deal with, although I'm not an expert in collaboration using Git.
That's certainly a fairly universal convention (and one that I thoroughly agree with—development branches are one of the only areas where I approve of "code ownership"). But keep in mind, this can only happen when you've explicitly given someone else push access to your repo, or someone else has explicitly given you push access to their repo. In the normal course of things, your development branches are in a fork repo owned by you, even though the PR you submit might be in another project.

I suppose with GitHub you don't really know if anyone else is using it - it's not like they're your team members and you can ask them - so I'd probably err on the side of not rewriting, but others may not worry so much and just do it.
Per the above, they are your team members, because if you can do this, one of you gave the other access to a repo that you're now sharing.

Note that I'm still trying to address part of the original question here - in response to the question below I'm trying to say that it's quite possible there's no record at all of something being removed:
This can happen in certain circumstances: you had fetched a copy of those commits before they were removed because, e.g., someone rewrote the main branch and you saw this because you have copies of both the old and new versions of the main branch. But this is not the normal way things are "removed" in a Git-controlled repo, and so I think not what the OP was talking about.
 
For example in my case, my GH project involves both a hardware design and a software/firmware design. The hardware part hasn't changed at all, but the software side has been greatly revised. What to do?
 
For example in my case, my GH project involves both a hardware design and a software/firmware design. The hardware part hasn't changed at all, but the software side has been greatly revised. What to do?
That's the kind of question that can be answered only by looking at the existing project and the changes you've made. Without even such basic information such as whether it's your own project that you're updating or you're proposing changes to someone else's project, there's no place to start.

If you're looking for advice from people here, your best bet would probably be either to start a new thread pointing people to the current project and the branch with your changes, and stating more clearly what your concerns are, or to PM some people here (such as me; I'd be happy to help) to ask for help privately if for some reason you don't want to do this in public.
 
It's my project--entirely. It's clearly outside of the general audience interest, even though it is vintage. I'll wait until someone contacts me for updated firmware.
 
It's my project--entirely. It's clearly outside of the general audience interest, even though it is vintage. I'll wait until someone contacts me for updated firmware.
For that the obvious thing to do would be just to put the updated firmware on the main branch of your repo. You could either replace the old firmware (which will still be available in previous commits) or, if the older firmware is still a useful alternative, put both into the repo in separate subdirectories.

Someone contacting you for new firmware seems unlikely if they have no way to know that it exists.
 
Back
Top