Shop OBEX P1 Docs P2 Docs Learn Events
'Gold Standard' object library — Parallax Forums

'Gold Standard' object library

pedwardpedward Posts: 1,642
edited 2011-11-23 17:15 in Propeller 1
So, after expressing my point of view (new to the Propeller ecosystem, but I have written code in many different languages, environments, and for several micros) about Prop development, I was directed towards some solutions that were endorsed by Parallax.

But, a big but, these were not helpful.

Specifically, I stated that there is no official collection of objects in a nice library. I was pointed to the 'Gold Standard' on Parallax Semiconductor's site, but that only contained the fullduplexserial object, nothing else.

Surely I can go to OBEX and do a simple search and sort by the propeller beanie to find all of the Parallax maintained modules, why aren't these collected in one place, coherently?

I am quite aware of the problem/solution concept. I am also aware of the shared vision problem -- you have to produce something concrete in private, then release it semi-complete. Rarely does sharing an idea result in anything other than non-productive talk.

Since there is already and effort towards the 'Gold Standard', shouldn't any energy be put towards furthering that, rather than me doing the same thing in private?

Comments

  • Mike GreenMike Green Posts: 23,101
    edited 2011-11-23 15:24
    The application notes on Parallax Semiconductor's website contain a variety of library routines as attachments to detailed documentation. See the list of topics here.
  • pedwardpedward Posts: 1,642
    edited 2011-11-23 15:33
    Mike, I don't think we are on the same page:

    http://www.parallaxsemiconductor.com/goldstandard
  • Mike GreenMike Green Posts: 23,101
    edited 2011-11-23 15:37
    My understanding is that these application notes are done to the "Gold Standard" or are being revised to the "Gold Standard".
  • pedwardpedward Posts: 1,642
    edited 2011-11-23 15:52
    My point was that there is a Gold Standard specification, but the Library of objects is a library of 1. This is confusing and not very helpful for developers.

    I just downloaded every Parallax stamped object from the OBEX, attempting to assemble a "Gold Library". The list seems to be mostly demo code, a few peripherals, and a few sensors. It would appear that the best-of-breed code that many are using isn't Parallax stamped in the OBEX.

    Further, there is tremendous fragmentation in OBEX because people take one object, improve it, then upload it as "improved XXyy".

    I am a manager/director/sysadmin/software developer at my day job, and this model frustrates me. There is so much good stuff out there, but there is no structure, no coherence.

    The BS was so popular because it was so feature complete and easy to develop for. You have a manual that lists all of the commands you can use, with snippets of how to use them. The Arduino has employed this model to great success. Here we have the Propeller with a bare, stripped down, language, and a zillion objects to do just about anything, but good luck finding exactly the right one. Whether it be 5 different objects that do exactly the same thing, in slightly different ways, or just obscurely named objects that just don't index well in a full-text engine.

    I started this thread because it seems that the forum has more collected knowledge on tap, than anywhere else, and I wanted to know if anyone was/is involved with the 'Gold Standard' project and could shed some light on this problem; the Gold Standard archive is incomplete.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2011-11-23 16:03
    pedward wrote: »
    ...There is so much good stuff out there, but there is no structure, no coherence.....

    I have to agree with you. When I started out here, I made the same complaints. I longed for a core collection of programs that were well-documented, well-commented and that would serve to help learn as well as to springboard new software. But I gave up complaining after awhile. Fortunately for me, the forum has rescued me in my many times of trouble. But it continues to baffle me why the company has not developed a set of core programs that instantly provide confidence for a newbie, programs that are easy to follow and learn from in the process. Personally I think the OBEX is full of code that has bugs and traps that can make a newbie's life very difficult. The OBEX, it seems, is a "Take it or leave it, use at your own risk" type of environment, I'm sorry to say.
  • LeonLeon Posts: 7,620
    edited 2011-11-23 16:11
    Microchip started their Embedded Code Source web site a few months ago:

    http://www.embeddedcodesource.com/

    Something like that is needed.
  • pedwardpedward Posts: 1,642
    edited 2011-11-23 16:25
    Here are a couple of ideas of how to improve just OBEX:

    Projects can be based on other projects, with branches for functionality reasons, or improvements that are part of the trunk.

    Projects need to be parametrically searchable, such as: Implements a software extension, is a hardware driver, uses X on-chip resources, uses X number of COGs, uses X number of pins, Spin only, Asm only, SPIN/asm. The list can be better defined than this quick jot.

    OBEX users have status, just like forum members. An OBEX object owner can bless commits by other members, or moderators can bless commits. Anything that is blessed is rolled into a tagged release, so trunk contains all commits, blessed or not.

    How do I suggest to do the above?

    First, OBEX needs an SVN repository, with a separate tree for each project. SVN is very flexible, the concept of branch/trunk/tags isn't coded into SVN, those are just directory trees.

    Eg:

    SVN repo


    svn://obex.parallax.com/obex/
    /Servo
    +branches
    +releases
    +v1
    +v2
    +v3
    +v4
    +v5
    +v6
    +v7
    +trunk
    /FullDuplexSerial
    +branches/
    +extendedFullDuplexSerial
    +releases/
    +trunk/


    That would be an example layout for some REAL objects in OBEX right now.

    The parametric search would require that every object have a number of dropdowns populated which describes these attributes. Then when you search, it would resemble DigiKey somewhat.

    Each OBEX object page would have links to the latest release, branches, and would have descriptions to go along with each branch and release, so people can discern what they want.

    As for user hierarchy, that would need to be coded into the user interface, but it could model the SVN permissions model, so that SVN would be configured to control access.

    Another upside of this model would be direct SVN access for developers. On windows you can use Tortoise SVN to keep projects up to date and to commit changes. Eclipse has native plugins for SVN that make development very easy.
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2011-11-23 16:48
    I don't see the OBEX becoming any better organized until the Spin compiler is able to accept subdirectory paths in its OBJ statements. Then the OBEX and local library structure can both be organized around the same type of tree structure that sorks so well for the Perl CPAN module library. I've been badgering Parallax for years to enable this facility in the Spin language, but to no avail. Until that happens, I don't see any point in trying to improve the OBEX. IMO, the OBEX organization and local library organization have to be isomorphic with each other to be useful and comprehensible. Right now the local libraries are a monolithic mess and bear no resemblance to what little categorization exists in the OBEX.

    Regarding the Microchip Embedded Source Code library referred to by Leon, it looks okay now because it's new and has very few entries. But, given the way it's organized, I think it will scale just as poorly as the OBEX has.

    BTW, pedward, if you're looking for good code examples, the main Spin library installed with the IDE is where I'd start. It includes quite a bit of basic functionality.

    -Phil
  • mindrobotsmindrobots Posts: 6,506
    edited 2011-11-23 16:48
    The current OBEX situation I believe is a known area needing improvement from Parallax's point of view (see this thread http://forums.parallax.com/showthread.php?134473-OBEX-for-non-MIT-licensed-code-looking-for-somebody-to-create-this&highlight=obex+google+code and others)

    Part of the problem is resources, I'm sure. With your background you are aware of how daunting a task this will be to create and maintain a "Gold Standard". Standards specifications, object selection, code rewriting, refactoring, testing, certification, publishing. User code acceptance and Gold Certification, etc. This is certainly a full-time job for a skilled propeller engineer for a number of months.

    I believe Ken's last headcount was around 40 people TOTAL in Parallax. They are a lean company with many people already going above and beyond to meet customer expectations.

    Yes, the OBEX is old and cranky and full of traps and pitfalls and suspect code. Yes, a Gold Standard collection will be nice. No, it won't be happening overnight. The process has started with the App Notes, the new KickStart wiki, the propgcc effort, etc. Lots of things in the fire currently. In the spirit of the forums, I'm sure any well thought out member contributions will be appreciated but the final Parallax solution may cause changes to the member efforts.
  • frank freedmanfrank freedman Posts: 1,983
    edited 2011-11-23 17:08
    pedward wrote: »
    Here are a couple of ideas of how to improve just OBEX:

    Projects can be based on other projects, with branches for functionality reasons, or improvements that are part of the trunk.

    Projects need to be parametrically searchable, such as: Implements a software extension, is a hardware driver, uses X on-chip resources, uses X number of COGs, uses X number of pins, Spin only, Asm only, SPIN/asm. The list can be better defined than this quick jot.

    OBEX users have status, just like forum members. An OBEX object owner can bless commits by other members, or moderators can bless commits. Anything that is blessed is rolled into a tagged release, so trunk contains all commits, blessed or not.

    How do I suggest to do the above?

    First, OBEX needs an SVN repository, with a separate tree for each project. SVN is very flexible, the concept of branch/trunk/tags isn't coded into SVN, those are just directory trees.

    Eg:

    SVN repo


    svn://obex.parallax.com/obex/
    /Servo
    +branches
    +releases
    +v1
    +v2
    +v3
    +v4
    +v5
    +v6
    +v7
    +trunk
    /FullDuplexSerial
    +branches/
    +extendedFullDuplexSerial
    +releases/
    +trunk/


    That would be an example layout for some REAL objects in OBEX right now.

    The parametric search would require that every object have a number of dropdowns populated which describes these attributes. Then when you search, it would resemble DigiKey somewhat.

    Each OBEX object page would have links to the latest release, branches, and would have descriptions to go along with each branch and release, so people can discern what they want.

    As for user hierarchy, that would need to be coded into the user interface, but it could model the SVN permissions model, so that SVN would be configured to control access.

    Another upside of this model would be direct SVN access for developers. On windows you can use Tortoise SVN to keep projects up to date and to commit changes. Eclipse has native plugins for SVN that make development very easy.

    Pedward

    I am new also since July and have contributed all of two objects one spin, one PASM. The problem with the issues you have with the OBEX is two fold. The first is only my opinion, and that is how well tested, documented etc each object is. If parallax had a team of FAEs doing nothing but as part of their upbringing as they are in Mega-huge semiconductor company they would be able to provide objects at the level you seem in my understanding to want and the silicon at a greatly increased price. But as most of the objects are contributed by individuals with varying levels of experience and standards valuation/adhearance, we get what we get and bend it to our uses if only as an example good or bad. I fall on that spectrum as well, I could do better with more time I don't have, but I am not throwing bare code into the wild either. Better to have contributions as is where is than none at all yours included.

    As to the second thing I mention here, I forgot which Forum and thread I saw it in, but the originators of the code for the OBEX are not maintaining it any further. It may have been one of Matt's posts, but he consensus was that there was no way to update or overhaul the OBEX code at this time. If only someone with expertise could come forward to update or create a library system to replace the current OBEX and parse entries to enable searchable methods on the libraries, that would be great. And costly unless there was a volunteer or part timer that they could afford to do this. I would love to be able to just what you said above to look for an 8 channel a/d object that can tell frequency and amplitude and have objects recommended based on keywords used. Would be a tremendous time saver.

    Lastly, it would be nice if some of the highest end experienced developers could consider collaborating on a standards hotsheet, a sort of minimum recommended format for code, commenting, keywords for search etc that would give us all an idea of what would work for most of us but not be to onerous in its requirements of must haves (want contributions, we can scale n' clean 'em if they contribute them)). Above my level of experience to be sure, but it would go a long way towards helping those of us who don't have the same level contribute objects that attempt to meet some minimum standard of style and documentation level.

    Too much typing for now,

    Frank

    OOPs overlapped with mindrobots, I think the thread he mentioned is the one I was thinking of regarding the status of the OBEX code.
  • jazzedjazzed Posts: 11,803
    edited 2011-11-23 17:15
    Mike Green wrote: »
    My understanding is that these application notes are done to the "Gold Standard" or are being revised to the "Gold Standard".
    Where is this mentioned? Sounds like a communication failure to me.
Sign In or Register to comment.