There are a lot of replies in this thread and I'll try to keep them in
mind in my reply, but I thought including them all would make my own
reply unreadable.
This topic is not limited to Beagleboard specifically, but I thought it
would be interesting to solicit a discussion here as Beagleboard seems to be
one of the primary boards that introduces people to Open Source Embedded
Development. (and it's my embedded development board of choice).
...and especially embedded Linux, which is why we have such a strong
relationship with the elinux.org wiki that I'd like to grow.
I've spent a lot of the last few months getting up to speed on embedded
development and all that entails (and there's a lot to learn - with the
tools, linux config, applications and variations in the hardware versions).
Reading the various IRC, blogs, groups and websites, there is a wealth of
information, but as has been noted many times, much of it is out of date and
is not relevant in all cases.
This is understood to be an issue, but I think there is a lot of
pushback in various embedded Linux circles towards consolidating
information that often requires specific examples on specific hardware
to be understood sufficiently and no one person putting together a
book or small number of web articles can cover all that there is to
learn. If you want to be part of the solution here, I'd suggest
creating some place-holder articles and campaigning ferociously to
have the experts in this community fill in the blanks. The elinux.org
wiki would be a great place to do such an effort.
I've read many posts from newbies and early developers exclaiming
frustration at what is perceived as lack of documentation and an absense of
a big picture which can help put problems in context. My own experience felt
a bit like Alice falling down the rabbit hole, investigating some problems
just took me deeper and deeper, and I had to learn stuff to a level far
beyond my initial expectation. OpenEmbedded certainly makes the whole
process much easier, but it certainly doesn't appear to be the case that you
can just pick the packages, press build and get a fully working image every
time (and I don't think that should be the expectation).
I don't know if it is falling down a rabbit hole or that you are
opening up a rat hole with this statement.
At the other end of the spectrum, I personally, would like to thank the
gurus/experts who review the updates and provide guidance (note I avoid the
word "support" very deliberately) to help us onto the first rung of the
ladder. These experts must be dedicating a huge portion of their time, and I
for one am grateful for that. I read an interesting e-discussion recently
where someone was airing frustration about the lack of documentation, and
how they could not base a commercial development on this state of affairs.
I'll jump in right here and say that there are many very viable
commercial development paths and different customers *need* to take
different paths.
For many typical TI ARM processor customers, the TI SDK and/or a
commercial Linux provider will be a better path than the software
provided promoted the most on this list and on the BeagleBoard.org
website. It is a shame if such potential customers get confused and
think BeagleBoard.org is meant to serve them directly, since it is
meant to serve a much broader audience. For many other people who buy
BeagleBoards, even those looking to drop one into their product and
even indirectly for the aforementioned customers, the existing
community projects are exactly what they need to solve their problems.
That said, there are many different starting points for good reasons.
If what you want is Ubuntu, then you should note that Ubuntu support
on BeagleBoard and BeagleBone is quite good. If what you want is
Android, ability to leverage Android development knowledge on Beagle
is also quite good and to get support from TI or 3rd parties.
Perhaps what isn't well understood is that BeagleBoard.org is a
constantly evolving community project, not a static product offering.
It is certainly my goal to work towards something that could compete
with any available commercial development platform in every various
software starting point, but some aspects are further along than
others. Perhaps we've grown up enough that we should be setting some
development milestones to be better organized as a community?
There are many different moving vectors by all of the various
participants in the project. I accept the criticism that the
documentation isn't as well organized as it could be, but there is a
tremendous amount of information out there that enable people to solve
problems using the BeagleBoard.org hardware designs. One thing I'd
welcome are some community members motivated enough to outline the
problems to solve and would come back to the many resources, including
the #beagle IRC channel, this mailing list, the various blog posts out
there and Linux documentation resources to seek answers. The best
place to organize and present such information is
Beagleboard:Main Page - eLinux.org and patches to the
http://beagleboard.org website. I'll be working on revamping the
website to feature the eLinux wiki more prominently.
What I've been spending most of my thoughts on is how to organize
learning about developing with embedded Linux on BeagleBoard/Bone as
part of two efforts:
1) Bonescript and the Bone101 presentation that seeks to document how
to perform web UI interaction and Arduino-like hardware interactions
using Linux
2) the ECE497 32-bit Embedded Linux course taught at Rose-Hulman with
materials hosted on the eLinux wiki
Bonescript is definitely a work in progress and doesn't solve enough
problems yet to promote. Ultimately it will be self documenting and
I'm looking at how I can synchronize it to the eLinux wiki as well as
even move the BeagleBoard.org pages into it to make the
BeagleBoard.org website more dynamic. It is hosted on github and
contributions are welcome.
The ECE497 course is more of a start to finish process of getting
familiar with doing embedded Linux development. What I need to do more
promotion of it as a solution to your issues is more people trying it
out and telling me it is accurate and up-to-date. If you are looking
for a set of tutorials to follow, I suggest starting with this set.
The summary of the responses was basically that Open Source is free and you
get what you pay for. It is unsupported, and the developers have better
things to do with their time than write documentation. Users are expected to
roll their sleeves up and read the source code. But there's a considerable
(huge) learning curve for most to get to the point of being able to do this.
Ugh. I want BeagleBoard.org to become a project that makes learning
embedded Linux easy. That isn't a simple problem. I haven't seen an
example of anyone else solving it. Again, where I'll be investing my
personal time is in the two above projects that seek to teach embedded
Linux from various angles. I'm interested in your feedback on those.
I can see both sides of the argument, as someone who has struggled to get
things working and having trundled down a lot of blind alleys, the lack of
documentation and context of some blogs has made me frustrated at times.
However, I don't think that anyone in the community owes me anything. It's
all free, after all.
Good.
So here's the question. Is there a middle ground, tool, process or something
which can be community driven and low impact (certainly not as cumbersome as
documentation), but which helps provide relevant guidance? I'm guessing that
a lot of the same questions are raised time after time, and the guru's must
get a bit bored of answering them (I can almost see the eyes rolling up into
the forehead sometimes and their patience is admirable ;-)).
There are some excellent embedded Linux trainers that are part of the
BeagleBoard.org community and use the boards in their training. If you
have money and no time, I suggest reaching out to them such that you
can get up the curve quicker. Many of them create blog posts or answer
questions on this mailing list for free. Folks like Free Electrons
even publicly host much of their materials for free download. Karim
Yaghmour has provided his Android training materials for free. I
mentioned the ECE497 materials. Those are just some quick ones off the
top of my head.
When people provide answers on this mailing list, they largely
consider the question answered. I know getting all of the information
organized is valuable and several folks in the community make efforts
to aggregate information about various tasks into the eLinux wiki. It
would be great if you would be one of those people and if you would
ask the questions that you feel like aren't well known on this mailing
list.
Many questions
posted also remain unanswered, possibly also because they have been asked so
many times before.
If you see questions go unanswered, feel free to ping me personally. I
see some questions with vague answers, but I don't notice them going
unanswered--though I don't always go back and check all of the history
either.
The advantage of having some better, more reliable guidance is that it
should reduce the number of simple questions, and might reduce the number of
talented folks that drop out completely due to frustration. The more people
that stay productive in the game, the more progress is made by all. One
disadvantage is that making it easier to find solutions may discourage some
from looking deeper into the code and thus may perpetuate the "it should
just work out of the box" myth.
Shouldn't it "just work out of the box"? I agree that not everything
is there and that some aspects of the project require a lot of
learning before becoming sufficiently knowledgable to submit patches
to the shipping distro, the mainline Linux kernel or one of the many
distros that support the BeagleBoard.org boards, but I think I've
missed your point.
So here's some things that I feel would have helped me in my quest:
1) Many blogs were out of date and related to different versions of Angstrom
Dist/Linux kernel/OE version/hardware. Some way to bring the related blogs
together and relate them to the various versions of tools etc would help
guide folks to a solution that would be more likely to work for them. Often
the versions are not recorded in the blog. In my case I was trying to get a
wifi dongle to work and I went down numerous blind alleys - but learnt a lot
on the way. It would be interesting to ask users of the blog to indicate as
to whether or not the procedure worked for them (and record the versions
used). In that way a user could see if the method was considered reliable or
not for their environment (and if not, whether there are common problems). I
guess this would help provide similar statistics as an overnight build
regression test.
Angstrom moves much faster than many other distros making
documentation go out of date more quickly, though all distros have the
issue of documentation becoming stale. My solution is to create
Bonescript as self-documenting and self-testing (though I need to
automate that testing part). I think your point about performing
overnight regression testing is spot on. The need to create automated
regression testing on the documentation, however, is largely spoiled
by the many physical interactions required within many of the
documented steps. This means we often rely on large size of the
community to identify when documentation becomes out of date.
What I'd recommend to you as a solution is for you to place
documentation on the eLinux wiki for the procedure as best you
understand it, then notify this list of any issues you discover on
that wiki. If it is determined that you are out of your mind, then it
is likely that your notification will be our clue to delete the page.
I think it is unlikely that you are out of your mind.
2) When things didn't work, what I often wanted to do, was recreate the same
environment as the blogger had used, to be able to start from a known stable
base. Something that addresses the above might help acheive that.
It would be great if the bloggers would document the image they used.
I had a grand vision of creating a website that would allow annotation
when someone tried the instructions with a various image and if they
worked such that we'd have information to bisect any failures.
Creating the infrastructure has alluded me. In the meantime, why don't
you:
#1) give us good examples on the eLinux wiki of things that you've
tried that *do* work and
#2) ask "smart questions" (google it) regarding blog posts that don't
work and *then* create the eLinux wiki entries using the answers
3) If the above could be done across a number of common tasks, then perhaps
a step by step training course would fall out that goes beyond "Hello World"
to familiarise beginners with the myriad of tools that they will need in the
development arsenal (OE, Git, Linux Configure). I for one, believe I have
found problems and have been unsure about the proper way to submit bug
reports / solutions.
The proper way is to notify this e-mail list. It is
the-one-list-to-rule-them-all. It is the thing that attempts to keep
the BeagleBoard.org community from excessively fragmenting and not
being able to find answers. Bug trackers are great, but shaming me at
regular intervals right here is the way to make things happen.
What other light touch things would have helped people over the early
hurdles to get them to the point where they could contribute. Full
documentation is obviously not an option, but is there something community
driven that could make the mass of data that is already out there more
relevant and more organised, and at the same time add extra validation? Or
(and I fear this may be the case), are the number of variables so large that
the task rapidly becomes unmanageable?
I don't know. I'm looking at doing, roughly in this order:
1) answering technical software questions on this list that aren't
answered by someone more knowledgable in the community,
2) improving what Bonescript walks you through as examples of how to
do development and how that is presented to you from the board and the
web,
3) improving what the ECE497 class materials are able to cover in
terms of learning exercises, and
4) updating BeagleBoard.org to point to more answers generated by the
community and consolidated on the eLinux wiki, perhaps with a few
personally managed pages to clarify information ownership.
Do you think those are the right steps to address your concerns?