# Getting started compiling firmware - documentation duplicate?

**URL:** <https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823>\
**Category:** Programming\
**Tags:** question\
**Created:** [December 4, 2017, 4:37am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823 "2017-12-04T04:37:01Z")\
**Posts on this page:** 9\
**Page:** 2

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 5, 2017, 11:20pm UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/21 "2017-12-05T23:20:34Z")

</div>

I’m fine with the all-git workflow being documented, but there is another important reason it shouldn’t be the default set of recommendations for new users:

The things published to the Arduino Boards Manager platform are releases. We have a reasonable confidence that they should be a working, coherent whole. While that’s always a goal for git master, it’s a goal, not a commitment. That’s not the right default experience for an inexperienced user.

Once the platform is installed with the Arduino IDE, there’s no requirement that you use it to do your hacking.

A newbie who’s unwilling to launch Arduino to set up their environment and would rather mess around with git repos…isn’t really a newbie.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 6, 2017, 1:31am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/22 "2017-12-06T01:31:53Z")

</div>

Good point about the stable releases. However, it’s not necessary to “mess around with git repos”; once they’re cloned, you can just ignore git and edit files. For some people, it’s just much easier to follow instructions of the form “type the following commands” that to follow GUI navigation directions. And, at least on some systems, all you need is to start a shell, enter commands, and maybe edit a text file, and you can flash new firmware on your keyboard. That’s so much simpler (to some people) than “click here”, and “select this menu item”, et cetera.

I’m convincing myself to write some shell scripts to make this even simpler…

On less relevant note, there are programmers who are proficient in other languages, and git, but aren’t familiar with Arduino or C++. Everybody’s a newbie at something.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 6, 2017, 1:56am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/23 "2017-12-06T01:56:28Z")

</div>

> [@merlin](#):
>
> And, at least on some systems, all you need is to start a shell, enter commands, and maybe edit a text file, and you can flash new firmware on your keyboard. That’s so much simpler (to some people) than “click here”, and “select this menu item”, et cetera.

That’s making a bunch of assumptions about end users, some of whom haven’t used a shell before.

There are many different kinds of users out there. I’m happy to have a variety of sets of instructions for different kinds of users and different use cases. The ‘getting started’ flows that I want to be the default for people who don’t otherwise know what they’e doing are already the default under ‘New User Setup’ here: [Home · keyboardio/Kaleidoscope Wiki · GitHub](https://github.com/keyboardio/Kaleidoscope/wiki)

Since Benji explicitly scoped the page in question as “This page is for developers who want to go beyond using the Arduino GUI in order to do more complicated things”, it’s safe to say that this isn’t intended as the default onboarding flow.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 6, 2017, 2:11am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/24 "2017-12-06T02:11:06Z")

</div>

@benji - I made some edits to the wiki page you contributed. I also added some TODO notes.

Because it’s still pretty incomplete and platform specific, I pulled it out of the sidebar for now. Once it’s somewhat further along, I’d be happy to put it back.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 6, 2017, 4:50am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/25 "2017-12-06T04:50:40Z")

</div>

> [@jesse](#):
>
> That’s making a bunch of assumptions about end users, some of whom haven’t used a shell before.

I’m making no assumptions about end users as a whole; I’m stating what I know to be true about a subset of those users.

> [@jesse](#):
>
> There are many different kinds of users out there. I’m happy to have a variety of sets of instructions for different kinds of users and different use cases.

My point exactly.

I certainly don’t think that the CLI setup instructions should be the only ones, or even the default. But _for some people_, as I thought I had made clear already, a sequence of shell commands is much clearer and easy to follow, even if the user doesn’t understand what those commands are doing.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 6, 2017, 4:56am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/26 "2017-12-06T04:56:45Z")

</div>

I think we’re in agreement here.

---

<div class="post-metadata">

**Author:** ![merlin](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/merlin/32/3416_2.png) [@merlin](https://community.keyboard.io/u/merlin)\
**Post date:** [December 6, 2017, 4:58am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/27 "2017-12-06T04:58:41Z")

</div>

I think I ought to sleep more. Sorry about getting all riled up.

---

<div class="post-metadata">

**Author:** ![jesse](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/jesse/32/361_2.png) [@jesse](https://community.keyboard.io/u/jesse)\
**Post date:** [December 6, 2017, 5:08am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/28 "2017-12-06T05:08:18Z")

</div>

Heh. Sleep is good for you!

---

<div class="post-metadata">

**Author:** ![aspiers](https://yyz1.discourse-cdn.com/flex031/user_avatar/community.keyboard.io/aspiers/32/245_2.png) [@aspiers](https://community.keyboard.io/u/aspiers)\
**Post date:** [December 11, 2017, 11:26am UTC](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823/29 "2017-12-11T11:26:15Z")

</div>

I’m way behind on all this, with no time to catch up right now sadly, but the OP sounded vaguely reminiscent of [https://github.com/keyboardio/Kaleidoscope/issues/234](https://github.com/keyboardio/Kaleidoscope/issues/234) so I thought maybe it was worth mentioning just in case it’s relevant. Thanks everyone for your awesome work; this community rocks!

[Previous page](https://community.keyboard.io/t/getting-started-compiling-firmware-documentation-duplicate/823.md?page=1)
