Shop OBEX P1 Docs P2 Docs Learn Events
PropSource: one-stop code repository http://code.google.com/p/propsource/ — Parallax Forums

PropSource: one-stop code repository http://code.google.com/p/propsource/

Ken GraceyKen Gracey Posts: 7,400
edited 2012-08-04 08:37 in Propeller 1
Hey there,

We want to build a one-stop, clean code repository using existing Google Code tools. Allow me climb out to this thin limb to propose something our community needs to resolve. We need your help to do this - you ask us to call upon you for help, so here we are!

You're familiar with the struggles we've handed our customers with distributing Spin/ASM Propeller code. First off, our code is available nearly everywhere: forums, OBEX, Propeller Tool distribution, the internet, Help files, web site, product pages, etc. Duplicates exist and sometimes code may be posted in one place but not another. Add in the growing Simple IDE and that it also needs to be distributed with code. We have trouble keeping track of it ourselves.

You're also familiar with our Gold Standard Library (GSL) concept http://www.parallaxsemiconductor.com/support/goldstandard, which aims to release high-quality code examples especially for core objects we use all the time. And you're aware of the fact that we've not done much with the GSL. The challenges we've had with releasing GSL-approved objects include the one-way gatekeeper being Parallax (community should be able to approve), no revision control, and no solid [internal] follow-through plan to include approved GSL objects in our Propeller Tool / SIDE distributions. Perry (post 54 at http://forums.parallax.com/showthread.php?141224-Gold-Standard-Library/page3) identifies several of our problems with OBEX as well as a solution.

New users also can't find most everything they need in one place.

We would test a new community-driven code repository at http://code.google.com/p/propsource/ with simple goals:
  • Develop a single repository where the most important and useful Propeller Spin/ASM code may evolve and be distributed, under community control.
  • Support 3-5 Committers who can be gatekeepers, holding a high standard on behalf of all Propeller Contributors (Parallax would retain the Owner role). Committers would also approve Contributors and assign various roles/permissions.
  • Use the Gold Standard Library as a guide to provide quality code, but not as a techno-oppressive tool that prevents people from submitting code because of minor differences in the best way to author code.
The Source and Downloads sections of PropSource would be managed differently.

The Source section would let us evolve, track, and commit the core objects (GSL) that need improvement as they make their way into a zip in Downloads. For example we would initially post keyboard, mouse, TV, VGA, synth, clock, debug, and Parallax Serial Terminal Spin objects here for improvement. As these objects mature they are blended into the appropriate zip and moved to Downloads.

Downloads would include zips of useful code libraries, tools and their demos (some of which are from Source):
  • Propeller Tool
  • Application Notes and Code
  • Parallax Product Code
  • PE Kit PDFs and Code
  • Learn.parallax.com Code
  • Propeller Code Libraries (maybe individual zips of objects for communication, human interface, sensors, A/D, etc.)
We'd try to limit the total download to 20-30 zips. The Wiki page would describe what's in the various zip files. Both Propeller Tool and Simple IDE distributions would pull their code from the Downloads page. The Gold Standard Library specification would provide some guidance since we want everything in PropSource to be of high quality.

This is only a starting point - our actual solution could vary a bit as we need it to.

If PropSource is accepted by the community:
  • http://code.google.com/p/propsource/ becomes the main repository for all code and tools that flow from Parallax and Contributors. We all start pointing to one place for code. There will always be exceptions.
  • OBEX would eventually go into an archived state of deep sleep (honestly, we can't maintain that beast anymore - the code base is from a single developer and we're attempting to mimic web tools that do this nicely already, not to mention we don't review all submittals). We'd ask people to move their best work over to PropSource.
  • PropGCC and Simple IDE stay on their own Google Code sites, where they happily grow.
About the Google Code Tool:

It's pretty basic http://code.google.com/ but it helps to know a little about it in order to use it. It's useful for both users and developers. For users, the Downloads section provides a one-stop place to get code. Developers may spend more time in the Wiki, Issues and Source sections. You have seen it productively used for PropGCC and Simple IDE, which would remain where they are today at http://code.google.com/p/propgcc/ and http://code.google.com/p/propside/.

Project members can be given one of three roles: Owner, Committer, or Contributor. Users who are not members are also able to view project content, report issues, and leave comments. Users who are not signed in are limited to viewing content only.

So we're going to try this out. We're posting stuff here and we are going to see if you use it.

We need to act. Custom-developed solutions are out of the question. And we're looking for support. The above theme can be modified and is just a starting point.

Who can we recruit as a Committer? Pedward? Others? We can provide small financial incentives, loads of free hardware, and the internet currency we all enjoy (recognition).

If you are interested, please contact me via e-mail.

Thank you,


Ken Gracey
«1

Comments

  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-02 14:12
    This sounds great. I'm looking forward to seeing what comes out of this effort. Is this just for Spin code or will Propeller C code be included as well?
  • Ken GraceyKen Gracey Posts: 7,400
    edited 2012-08-02 15:12
    David Betz wrote: »
    This sounds great. I'm looking forward to seeing what comes out of this effort. Is this just for Spin code or will Propeller C code be included as well?

    Hey David - this is only for Spin code. Propeller C would continue to live on the PropGCC forum where it is happily existing on its own.

    Got your other e-mails and hope to reply soon. Between DEFCON and some travel I have had no time.

    Ken Gracey
  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-02 15:43
    Ken Gracey wrote: »
    Hey David - this is only for Spin code. Propeller C would continue to live on the PropGCC forum where it is happily existing on its own.

    Got your other e-mails and hope to reply soon. Between DEFCON and some travel I have had no time.

    Ken Gracey
    Okay, thanks. Maybe we should setup some sort of review process for accepting outside contributions to the PropGCC code repository as well.
  • pjvpjv Posts: 1,903
    edited 2012-08-02 17:12
    Ken;

    Would this new approach then also permit a way to submit code that is NOT MIT licensed?

    I have not contributed my multi-tasking operating system and the various related multi-threaded drivers (one cog does numerous functions "simultaneously") to the OBEX because I do not want unrestricted commercial use of my efforts without some compensation from the beneficiaries. And hence MIT licenses does not meet my requirements, yet I DO want to benefit from the distribution channel offered through a Parallax steered facility.

    So, might this now be possible ??

    Cheers,

    Peter (pjv)
  • CircuitsoftCircuitsoft Posts: 1,166
    edited 2012-08-02 18:08
    I would recommend hosting a Gerrit installation that mirrors to Google Code. The manner Gerrit works in encourages mentoring of beginning contributors which would allow the library to grow faster, and to increase the overall code quality.
  • Ken GraceyKen Gracey Posts: 7,400
    edited 2012-08-02 18:31
    I would recommend hosting a Gerrit installation that mirrors to Google Code. The manner Gerrit works in encourages mentoring of beginning contributors which would allow the library to grow faster, and to increase the overall code quality.

    Looks like the ideal tool to install for reasons you cited. We agree.
  • Ken GraceyKen Gracey Posts: 7,400
    edited 2012-08-02 18:32
    pjv wrote: »
    Ken;

    Would this new approach then also permit a way to submit code that is NOT MIT licensed?

    Peter (pjv)

    Peter, sure - why not...it's time to see your RTOS for Propeller!
  • msrobotsmsrobots Posts: 3,709
    edited 2012-08-02 19:00
    I do really like the concept, BUT I do strongly feel this should not be on google or wherever else in the cloud. It belongs on Parallax-Servers. There are a couple of systems out there providing the same amount of collaboration/teamwork but can be installed on Parallax controlled Servers.

    Enjoy!

    Mike
  • jazzedjazzed Posts: 11,803
    edited 2012-08-02 20:02
    Seems to me it should be called SpinSource if it's just a spin repository. I've heard lots of grumbling about PropThis and PropThat.

    Of course you're free to do what ever you like regardless :)
  • CircuitsoftCircuitsoft Posts: 1,166
    edited 2012-08-02 20:19
    See http://repo.or.cz/w/openocd.git/blob/HEAD:/HACKING for a good overview of using Gerrit.
  • Cluso99Cluso99 Posts: 18,069
    edited 2012-08-03 02:59
    Here are my thoughts on the solution...

    1. I don’t like Parallax loosing control of the source/objects.
    2. I don’t like Google or any other public site because they bombard you with
      ads (and often spam too).
    3. The type of repositories are *nix style command based and complex for us
      windoze users.
    I understand that OBEX is a problem for Parallax to support. However, it is
    still quite simple for anyone to use. There are no commands to learn, etc.

    While I am an experienced programmer and windows user, my *nix use is
    virtually nil, as is C. I don’t see the point in going backwards to support a
    *nix type of system.
    All those repositories are a PITA to
    use. You never know if you have obtained the latest, or all, of what you are
    after. It is just too complex for us simple windows users – we have been spoon
    fed for too long! I would rather pay for my legal windows licence (and do) than
    a free *nix platform.

    I do however, respect that others have different opinions. That is why I
    believe Parallax had to support C on the Propeller.

    But I would hate to see the *nix gurus push all the sources onto a complex
    *nix styled system and leave us “simple windows users”, which includes a lot of
    newbies, out in the cold simply because it is too difficult for us/them.

    We all know that a lot of us just don’t take the time and effort to put
    some of our code up on OBEX. Imagine how much is not going to be put up on the
    google code site just because it is even more difficult to do.

    Just my 2 cents
  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-03 04:01
    Cluso99 wrote: »
    [*]The type of repositories are *nix style command based and complex for us
    windoze users.
    We've been using a Mercurial repository on Google Code for Propeller GCC. If they're using the same system with PropSource there are certainly Windows GUI-based tools for working with the repository. In fact, it is competely integrated into Windows Explorer and very easy to use. Look for the Windows version of Mercurial.

    Edit: I just checked and it seems they decided to use Subversion (SVN) with PropSource however the same comments apply. There is a Subversion plug-in for Windows Explorer that makes it quite easy to use.
  • TorTor Posts: 2,010
    edited 2012-08-03 05:20
    I'm really surprised that anyone would set up something new with SVN. Subversion is mostly used for legacy systems these days, it's rare to see new SVN repositories. For good reasons, IMO.

    -Tor
  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-03 06:29
    Tor wrote: »
    I'm really surprised that anyone would set up something new with SVN. Subversion is mostly used for legacy systems these days, it's rare to see new SVN repositories. For good reasons, IMO.

    -Tor
    There is nothing currently in the PropSource repository so I guess that could be changed. What do you recommend? Looks like Google Code supports SVN, Git, and Mercurial.
  • TorTor Posts: 2,010
    edited 2012-08-03 06:57
    Git and Mercurial are both much more modern version control systems, true distributed version control (unlike SVN), and both have fast, low-cost branching (it's very useful to maintain own local branches for example) unlike SVN which is the opposite, with its heavy-duty, space-terrible branches without true branch merging possibilities. There seems to be some Google Code network-access issues with the Mercurial propgcc repository according to some posts here (lots of retries needed, or some such - I only know this from postings) so for that reason alone I would vote for Git. But any of those two would be a better choice than SVN.

    -Tor
  • Heater.Heater. Posts: 21,230
    edited 2012-08-03 07:01
    Cloning propgcc from Mercurial has been a pain for me, often requires many retries, so many in fact that I have given up for the day sometimes.
  • mindrobotsmindrobots Posts: 6,506
    edited 2012-08-03 07:01
    Something that easily integrates into the host tools for transparent code fetching from the repo. Perl's CPAN for example or the Go front end where you can use "go install <pkg URL > and it fetches it for you via got. I don't want another tool or an explorer plugin. Just give me an object/repo manger in my IDE.

    Thanks, bye!
  • Heater.Heater. Posts: 21,230
    edited 2012-08-03 07:04
    mindrobots,
    Just give me an object/repo manger in my IDE.

    And SimpleIDE gets ever more bloated and un-simple:)

    Give me "git clone bla bla" from the command line and it's done.
  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-03 07:11
    Heater. wrote: »
    mindrobots,



    And SimpleIDE gets ever more bloated and un-simple:)

    Give me "git clone bla bla" from the command line and it's done.
    People seem to be afraid of command lines these days. :-)
  • John AbshierJohn Abshier Posts: 1,116
    edited 2012-08-03 07:14
    I am confused on how this will work. Lets take an object that reads a sensor, ADC for example. It will be in one of the 20-30 zip files in download. It uses the SPI object and the demo program uses Full Duplex Serial. Will the ADC object, demo program and the two support objects be all zipped into and archive in the download zip file? If the SPI object is updated, who will or will anyone update it in the various download zip files?

    Google Code has a download tab and a source tab. Is it envisioned that the download tab will have a small(er) selection of objects/programs and the majority of what is now in the OBEX will be in the source tab?

    John Abshier
  • David BetzDavid Betz Posts: 14,516
    edited 2012-08-03 07:24
    I am confused on how this will work. Lets take an object that reads a sensor, ADC for example. It will be in one of the 20-30 zip files in download. It uses the SPI object and the demo program uses Full Duplex Serial. Will the ADC object, demo program and the two support objects be all zipped into and archive in the download zip file? If the SPI object is updated, who will or will anyone update it in the various download zip files?

    Google Code has a download tab and a source tab. Is it envisioned that the download tab will have a small(er) selection of objects/programs and the majority of what is now in the OBEX will be in the source tab?

    John Abshier
    I'm not the originator of this idea so I'm just guessing but isn't the idea that the objects get developed in the "source" area and then when they are stable get released into the "downloads" area?
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-08-03 08:00
    Ken Gracey wrote: »
    We need to act. ... Who can we recruit as a Committer? Pedward? Others? If you are interested, please contact me via e-mail.

    This is brilliant. This is going to get crazy-large quickly, according to the degree of success.

    Before I send my email, I'd like to preface with a discussion the "others" part.

    I'm a Software Quality Engineer, focus is requirements traceablilty and Process. These skills are usually applied to very large critical systems projects, but can also be applied to very small non critical projects. Just as a blue print or plan helps when building a sky-scraper, the same also helps when building a bird house. In both cases success depends on sufficient planning, even thought the degree of formality varies.

    I put forth that clearly defined and easily understood PROCESS is key to success on any large (greater than three to seven people) project. In this context, process is used to define the interfaces between individuals (community developers and parallax employees) and infrastructure elements (the code submission process, the google code repository, etc)

    As a process guy, I advise that the processes be defined with the absolute minimum rules, closer to zero is best. Only make and apply a rule when a specific conflict is to be resolved. Defining process is not hard, but is not quick. It has to evolve based on the users needs, and the way the infrastructure meets users' needs. At least one individual has to "own" oversight of "process" in order to keep it usable.

    As cited previously, the interaction between community members and the tools can be source of problems. This is solved by process, and training. Success in will depend on the degree to which the targeted users can understand and use the processes for using this proposed infrastructure.

    Does anyone have an opinion, is any of this necessary or useful here?
  • potatoheadpotatohead Posts: 10,261
    edited 2012-08-03 08:36
    I think process is a GREAT discussion. Process is where efforts like this fail, or only see niche adoption, or worse wide adoption, but with differences throughout.

    Put it all in there, or none of it. If this repository for "gold" is to be created, include the docs, software, everything needed to play, starting from "I have a supported computer, USB cable, Demo Board" and go from there. First step is to just put it all there and document the process to get started. Second and future steps then are to refine it to deal with the list above. Commit, in other words. None of this get one piece from parallax.com, another from the repository, and some final bits from the forum, or other places.

    The only things that shouldn't be in there are those things that can't be there for legal reasons, or stuff that the community is building on and that's just an ordinary activity to be incorporated if it starts to really show resonance and value worth doing the work to incorporate proper.

    BTW: If there is doubt about fully committing to a repository, the effort will fail. Resolve this completely, then commit, then build, or do nothing as what we've got is fine. (Not fine really, but without a commit, the new effort won't add enough value, IMHO)

    Edit: Long post, sorry. The reason why it all needs to go in there is the body of code we've got that's "gold" or "reference" isn't too compelling compared to the bodies of code we've got everywhere else. By centralizing general access to software distributions, or links to distributions I suppose, documents, and this golden repository, there is a reason to visit, and focus comes from that. Somebody shares one link, and it's there, inclusive. Go from nothing to writing a program from that place, and of course the process is there, documented and is the first thing they see.
  • jazzedjazzed Posts: 11,803
    edited 2012-08-03 13:13
    Parallax has been using googlecode for a while now - Spinneret for example. When asked about where things should go last year, they immediately said googlecode. Not surprised by this decision. Also, if Parallax gets tired of SVN, hg or git is a click away.

    There is actually very little risk of losing control of the sources. Besides, everyone here who wants to participate will have a copy. This also makes the cloud library idea possible - ready Phil?

    A nice option for command line averse folk is http://tortoisesvn.net/ I've used tortoisehg which is pretty good especially for showing diffs, etc.... Command line is still better for automation and huge changes to the repo.
  • Ken GraceyKen Gracey Posts: 7,400
    edited 2012-08-03 14:59
    Hey all,

    Thank you for the replies so far. I have detailed responses from:

    SRLM
    prof_braino

    Haven't heard from pedward. However, provided pedward can join the team I'd be very happy getting started with these three guys in some control on our behalf (SRLM, prof_braino and pedward).

    What I'd like to do is throw Daniel Harris in the mix on behalf of Parallax as an Owner, and then make the three guys above Committers (or whatever is determined appropriate). Daniel would herd the cats from this point forward - my role would be more limited (as a cheerleader, and to make sure we've got some incentives in place) but Daniel would be the person mostly speaking on our behalf. He might want to change the name to SpinSource.

    I need to hear from pedward so we can move forward. - Ken
  • jazzedjazzed Posts: 11,803
    edited 2012-08-03 15:25
    Ken and Daniel,

    I would be happy to be a contributor as necessary as time permits.
    However, I do not want ANY role as a decision maker or a code reviewer.

    One thing that can be done to preserve the integrity of the source is to get IT to make a weekly backup of the repository. Command line tools can be easily set up to run as a cron job by IT on a server.

    Thanks,
    --Steve
  • pedwardpedward Posts: 1,642
    edited 2012-08-03 15:54
    I just saw this thread, and I'm very impressed that Ken jumped behind this idea so thoroughly and quickly!

    I'll eat my own dogfood and participate as a Commiter.

    I agree that initially we should focus on keeping things simple. The biggest headache thus far has been agreeing on a "standard" library of supported peripheral objects.

    The GSL lays out a good premise. I think it's more important to get a living set of "standard" objects out there.

    I suggested SVN as the VCS for a variety of reasons. First, SVN doesn't maintain anything but metadata on the client, so it's lightweight and not bandwidth intensive for clones. SVN is relatively simple to manage, especially if you utilize the well designed plugins for IDEs such as Eclipse. For Windows, Tortoise SVN is an excellent explorer shell integrated tool that makes it easy. Managing contributions, branching, and merging can take a little effort, but it's not nearly as complicated as Hg when things don't go right. KISS is important for success and SVN is as complicated and simple as it needs to be. Git and Hg maintain clones of the entire repository on local machines, which can be very bandwidth and space intensive. As long as developers work compartamentally and ensure they are up to date before making changes, few conflicts will occur. Like with other VCSes the committer is responsible for conflict resolution. SVN does a reasonable job of merging changes automatically, so real conflicts only occur when major code changes are made.

    In my daily job I use SVN to manage development, releases, and branching. In practice Tags are used for static releases, Branches are used for development, and Trunk is used for the main codeline. It's important to get a standard layout nailed down first to avoid refactoring and history hiccups. It's important that any codeline can be traced back to revision 1.
  • Ken GraceyKen Gracey Posts: 7,400
    edited 2012-08-03 16:32
    Very good. All of the parties have arrived! Perry, I'll get in contact with you via e-mail. Daniel will get you connected with the Google tool, and we'll sit back and let you guys do what you do best.

    I'm sure you have a good idea how much we appreciate this kind of support!

    Ken Gracey
  • Invent-O-DocInvent-O-Doc Posts: 768
    edited 2012-08-03 17:39
    Three thoughts

    #1 - google repository ok, but this is way easy to duplicate and have complete ownership/control. Why bother with google? You would have better search than obex, though. Does this repository allow for comments/reviews?

    #2 - Why don't you have online code search/updates built into your prop IDEs? You can search, see the review and have it autodownload into your library!!??? (Competitive advantage!)

    #3 - Have a beginners page where you have a web page outline of various types of objects and can obtain specific libraries (see www.arduino.cc)
  • mindrobotsmindrobots Posts: 6,506
    edited 2012-08-03 18:11
    BIG, Big, YES to Invent-O-Doc's item#3!!
Sign In or Register to comment.