Less new projects?

Non-technical related questions should go here.
User avatar
Interactive_Matter
XCore Addict
Posts: 216
Joined: Wed Feb 10, 2010 10:26 am
Contact:

Less new projects?

Post by Interactive_Matter »

Moved over from here: https://www.xcore.com/forum/viewtopic.p ... 066#p10066
phalt wrote:
It would also be of great interest why there is a big drop in projects. Summer is always a bad time for projects, but what keeps users from developing xmos projects (my reason: time, will be fixed)
I believe the time of year was a big contributing factor to the drop and I've spent a long time looking at why it occurred. It could be that new users do not feel their projects are worthy of uploading because they are too basic or simple compared to some of the previous Project of the Month winners.

It's good to see my hope for competitions to entice new users was brought up by some of you because that's exactly what I'd like to incorporate!
It could also be that the XMOS eco system has changed a lot in the last year. Intended to make everything easier (which it does) but makes it harder for new users:

The change to open source the software on github was a great move. But I think it is much harder now to find the components you need for your project.

In my opinion some additional information (wiki page/blog post - somewhere prominent) could help:

- what is avail on github
- why is it there
- how to use the new build structure
- how to participate
- how to share so that your code is usable for others too

some central page listing and explaining all the different modules out there on github could help a lot too. I think a lot of people are perhaps still relying on the software listings on xmos.com http://www.xmos.com/applications/software-components

I find especially the new make file structure hard to understand (it works great and is a good idea - no question about it).

In the recent time I really got the impression that the community shifted strongly towards experts. Perhaps the really great shift towards the open source intiative makes everything harder to understand.

Or am I wrong?


User avatar
phalt
Respected Member
Posts: 298
Joined: Thu May 12, 2011 11:14 am
Contact:

Post by phalt »

The change to open source the software on github was a great move. But I think it is much harder now to find the components you need for your project.
The current aim is to make components a lot easier to find for projects, the move to github was good and we're working on incorporating it more.
- what is avail on github
- why is it there
- how to use the new build structure
- how to participate
- how to share so that your code is usable for others too
Yes, all of these things could do with being clearly labelled. They could be written as a contribution on the tutorials wiki, maybe as "getting started with github" section?

I can't confirm much, but we're working on something at the moment to incorporate the software components listed on http://www.xmos.com/applications/software-components much better into your projects.
In the recent time I really got the impression that the community shifted strongly towards experts. Perhaps the really great shift towards the open source intiative makes everything harder to understand.
Again: this is something I've noticed too. Open Source, to me at least, has a expert-level attitude to it and may be putting off new users who do not think they're able to contribute to it much because they're just starting out.
Heater
Respected Member
Posts: 296
Joined: Thu Dec 10, 2009 10:33 pm

Post by Heater »

phalt,
Open Source, to me at least, has a expert-level attitude to it and may be putting off new users who do not think they're able to contribute to it much because they're just starting out.
That can be true. A lot of open source projects have impenetrable source code control systems (e.g. git), impenetrable build systems (eg. huge and complicated makefiles, autoconf etc) and that's before you get down to the huge and impenetrable code itself which is often not documented all that well. This is quite enough to scare away those beginners, those new to programming or those coming to MCUs from a comfortable .NET, C#, visual studio kind of world.

However it need not be so.

As an example I'd like you to take a look at the Object Exchange (OBEX) maintained by Parallax Inc. http://obex.parallax.com/ OBEX is a repository of Parallax and user created source code objects for use with the Parallax Propeller MCU. There are objects implementing all manner of functionality from simple UARTS up through I2C/SPI drivers, SD card drivers, FAT file systems all the way to VGA graphics. Need to interface that ADC or gyro or accelerometer? There is probably an object in OBEX to do it already. Just download it, drop it into your applications project in the IDE, and make use of it. Generally things work out of the box.

I should point out that the Parallax Propeller chip is also a multi-core MCU. Those objects often make use of one or more cores within the chip. Objects tend to "just work" because if they happen to use a core it is guaranteed that they cannot upset the timing of any other objects already in your currently working code.

I have observed that all manner of users manage to get on quite easily with using these objects, from those who have never programmed before to old hands who are new to MCU's.

So the challenge for XMOS/xcore is to make using ready made code objects for xcore as easy to use as that.

Often I have been chastised for mentioning XMOS on the Parallax forums, now it's time to be chastised from the other end:)
User avatar
Interactive_Matter
XCore Addict
Posts: 216
Joined: Wed Feb 10, 2010 10:26 am
Contact:

Post by Interactive_Matter »

Hi Heater,

I think you are right.

Of course you need some level of expertise to collaborate on an open source project. But you also have to get the chance to get it ;)

I do not think that it has to be a 'drop in the IDE and it works' approach from the beginning. But it is a complete valid goal.

I think much of the OBEX example is true for XMOS as well. Grab some SPI here, some ADC driver there, write some application specific code and you are done. Isn't that what they promised at XMOS?
(OK it is really true that it just works that way).

My point was that the stuff on github is not as easily accessible as ist could be. It took me quite some effort to understand it. And it is not easily decidable how a project has to be created to e.g. create some new building block for the community.

But despite the fact that technology always can be cooler I think there are only two things missing right now:
- a very exposed and understandable explanation how to use and create modules on github
- a exposed and understandable reference which modules are there and how to use them

If you have a look at http://arduino.cc/playground/Main/LibraryList you see that they have a working and well documented library list for Arduino. OK, the Arduino has a slightly bigger user base that can create those documentations. But this is the place to advertise your libraries - so you are better advised to add the information there (ok, still must do this for my Arduino libraries - touche). I still think it is a clebver scheme to convince the users to contribute.

By exposed I mean that the libraries and modules should be advertised at a prominent place on the xcore/xmos web site to find out very quick how much awesome building blocks exists for your project idea.

(And third I think some projects on github can be separated in different modules & repositories - I will do this myself with the LED tile control - since the heat of it is a clever, easy to use graphics buffer with 8 bit input, 16 bit output, color correction, … – this should go into a LED Buffer module - just as an example)
User avatar
Andy
Respected Member
Posts: 279
Joined: Fri Dec 11, 2009 1:34 pm

Post by Andy »

There's quite an extensive list here:

https://github.com/xcore/xcore.github.c ... -index.rst
User avatar
Interactive_Matter
XCore Addict
Posts: 216
Joined: Wed Feb 10, 2010 10:26 am
Contact:

Post by Interactive_Matter »

Absolutely!

I completely overlooked it. Is it the same source as this:
http://github.xcore.com/community_doc/repo-index.html
(looks different)

I should have it's own link very close to the xcore introductions?!
User avatar
phalt
Respected Member
Posts: 298
Joined: Thu May 12, 2011 11:14 am
Contact:

Post by phalt »

I have a chat with the web team today about github and other areas of the site, most notably "What goes where" with regards to projects, code snippets et cetera.

Andy pointed out that we do have a good list of the stuff on github and I'm going to be working over the next few weeks to make it clearer about how to use it :)
User avatar
Folknology
XCore Legend
Posts: 1274
Joined: Thu Dec 10, 2009 10:20 pm
Contact:

Post by Folknology »

Ok I'll have a bite at this one ;-)
In the recent time I really got the impression that the community shifted strongly towards experts. Perhaps the really great shift towards the open source intiative makes everything harder to understand.
Clearly this statement packs a lot in and maybe it should be unpacked a little:

1) Forget if its opensource or not, its moving from individually written pieces of code to code that needs to fit into modules, not only that but it is also recognised that the code will be built by a variety of folks. The same issues would occur if this was proprietary or opensource i.e. the code requirements and inter-operational overheads increase. I think your actually saying moving to a modular code base makes it harder to understand?

2) Xmos as far as I am aware has always been oriented towards the expert, I have seen little evidence of any shift in that positioning irrespective of the addition of the github repository. As far as I can tell the original Xmos codebases and the xlinkers codebases are both still there, github is additional. I will also add that Xmos tends naturally to produce overly complex offerings to support their chips whether that's code or hardware, most of the development kits are over designed and over priced. Much of their software is overly complex just take a look at the network stack which traverses several programming languages and god knows how many programming styles. In contrast the Arduino team (mention by Interactive_Matter) takes a very different approach they strongly believe in learning from beginners over experts and have adopted this into their culture, they also prioritise beginner features and function over expert, I mention this for 2 reasons: firstly its opensource but yet far more approachable then any of proprietary MCU platform, particularly for novices and beginner and secondly I would be stunned to see Xmos take a similar view because everything I have ever experienced with them shouts out EXPERT, I would say that they actually revel in this high mindedness. I don't mean to be purposely hard on Xmos but that's just the way it comes across and I don't see much effort to make things easier for beginners.

Here's an off the top of my head list of stuff that makes Xmos hard for beginners:

1) Software - Mixed language base ASM,XC,C,C++ supporting different languages isn't a bad thing its actually a good idea. However creating modules using mixed languages and mixed programming styles throws beginners under the proverbial bus. My suggestion would be to stick with a single approachable language for all of the basic modules. I would also choose a language newbies would have a chance with - C. Expecting folks to have to learn XC before they do anything is like having a bouncer on the door turning you away for wearing trainers. C is probably the best common denominator and can support all of the required functionality (Or it would if Xmos supported it properly which should be trivial for them I'm thinking builtins and such).

2) Hardware - Ok its time to build my 1st Xmos board lets look at the obstacles thrown in my newbie path: Packages, damm it nothing through hole only surface mount bugger OK smd it will have to be. What are the packages ? G4 BGA ouch not a cats chance of me doing that, L2 WTF double row QFN and minimum 4 layer board lets forget that option what are we left with? L1-128 pin OK looking better, hold on 0.4mm pin spacing dammit can't use my low cost prototyping services then & how did they choose the pins using a dartboard? Lets try the next package L1-64 Ok that looks more reasonable ah oh see a bit of a problem it has a ground paddle that limits me to stencil and hot plate or perhaps more specialised kit like heat pencil grr. Ok lets assume I can somehow overcome the paddle thing (I'll convert my toaster oven) and lay it out. Dammit needing all of these decoupling caps around the L1-64 makes it near impossible to escape the signals without moving to tiny vias and track spacings, thats blown out my cheapo prototyping PCB suppliers again. OK one last go L1 48pin OK its got a paddle same issue as the 64 pin but I may be able to get around that using some hacking techniques and a hole in it. wow there still a lot of decoupling caps but I may just be able to get the signals out, better than the 64pin that's for sure. Right what else do I need? Flash Oh really doesn't it have any built in I thought it was an MCU? so lets add a flash chip and another decoupling cap, bugger I just lost pins, oh only 16 single bit pins? but can't I use them all as single bits? so now down to just 12 single bit pins then.. anything else I should know about? Dual power supply, Oh 1V for the core and 3v3 for the IO, so I need 2 regulators, what they should be switch mode? I'm a newbie I tend to use linear LDOs if pushed, anyone provide me with a decent circuit for the power supply side? Wow Xmos sure use a lot of different PSU chips, looks like every board and kit is different, I'll just randomly pick one and copy it.. Ok I'm done then?Oh of course I nearly forgot the clock I'll just add a cheap resonator, Oh no examples, how about a crystal hmm have to built my own external pierce oscillator WTF why can't I just add a crystal like other MCUs and what is one of them anyhow. OK so I have to add one of those teeny tiny 2 gate inverter chip that's near impossible to solder by hand with the crystal, surely I'm done now.. ? Power supply monitoring and power up sequencing what the hell is all of that? so two more teeny tiny chips that I haven't a clue about. Right I also need a boot loader nothing clever like JTAG programming, Xmos supports USB so I will use that. Oh I have to add a USB chip I thought Xmos was fast enough IO for basic USB, Oh its a tiny qfn chip Oh what joy as if my boards isn't difficult enough, well I will just have to convert that toaster oven then. Right now I'm ready to rock, what no virtual com port over USB but what about my printf debug? no programmable bootloader support your joking. That's not the worse bit OK let me have the bad news, Really my pins have been used up because of the spi flash and USB AARGHHHHH OK I give up I'm going back to my Arduino.

I think you get the picture and its not about being opensource IMHO ;-)

regards
Al
MaxFlashrom
Experienced Member
Posts: 82
Joined: Fri Nov 05, 2010 2:59 pm

Post by MaxFlashrom »

Al, that was pretty close to a rant :lol: Not that it's not all true. You made me laugh in recognition, having followed the same learning curve, especially the hardware issues, which are less easily solved than the software ones.

The XMOS certainly could implement a virtual COM port over USB with some software implementing CDC. RNDIS over USB for direct TCP/IP would be good too. Having the XTAG2 do this using the XLinks for speed would be good.
The XMOS "stamp" we were given a taster of would help hobbyist entry:
https://www.xcore.com/forum/viewtopic.p ... tamp#p8685

Will we see any anytime soon?

Max.
User avatar
phalt
Respected Member
Posts: 298
Joined: Thu May 12, 2011 11:14 am
Contact:

Post by phalt »

That was a good read Folk :D

There is obviously only so much I can do regarding the bits that bother you, but rest assured that we've taken it into account.

It is tricky for me to try and strike a balance: our hardware is definitely near-expert or expert level and my goal to make XCore successful is to encourage more people (who may not always be experts) onto the platform and build a community of developers that enjoy using the hardware.

Getting yours and everyone's opinion is one of the stepping stones for me, so thanks.
Post Reply