Being the miserable hacker that I am, my first act was to open all of the source files in TextWrangler... so that when I see something interesting, I can search the entire source tree and see where it came from.
One really nice feature of GitHub is that now I don't have to do this. There is a search tool right there and it works just fine. Also, I notice with OpenCores, if I search for P8X32, I am taken to the web, whereas in GitHub, it tells me what I want to know.
Yep. And it has issues, tags, diffs, and any number of cool tools we can use to understand what we've done!
And frankly, that's three core problems!
1. What did Chip give us?
All of us are in various states of understanding. Gonna be a while. But it's fun, and a nice problem to have, right?
2. What have we done?
As we explore this thing, we do stuff, and then we do other stuff, and then we want to talk about it. How do we actually do that?
3. Where do we go from here?
When we combine efforts, where does that live and how do we know what we are working on makes sense? Somebody from outside our community wants to see "the latest stable", and can't find it, or gets the old, stale distribution from the Parallax website. Makes a pile of killer enhancements, only to find out, we've been on a fixed, newer code base for a year. How to sort that out?
These are the things data management helps us with.
When we work alone, files, folders and all those little habits work. And they work well, and they work fast, depending on those habits. When we work together, it all clashes, and that's where something like GitHub comes into play. That clash, and all the meta-tasks we will struggle big with, are why it exists.
See that? Those are all the people who tinkered with it. One guy, got it all to build properly, and back into usable disk images for Apple II. (which was bad ***, because he had to write a Merlin type assembler to do it)
It's not just for code. What I find highly interesting is how people are using data management to collaborate, keep a history, and stay organized and updated.
Notice, "fork", etc... right there on the home page. (I really like this one, BTW)
My point here is simple: Learning to adopt these tools is very highly likely good for just about everybody here. And doing so will keep us relevant in the greater ecosystem out there, and frankly, that is something I think we will benefit from more than we lose.
Professional programmers use source code management. If Parallax wants to project a professional image of their code then Git is the way to go, and Github is the defacto standard.
As far as OpenCores.org goes: I've never used it, or had need to use it during my educational years. I'd only put code up there if Parallax had an officially sponsored repository, otherwise it will just contribute to a management nightmare.
I think Parallax should start a Github repository, point all links there, and only provide updates to Github. It's a bit draconian, but that's the only way it's going to work. Once that's done then we have an easily updated "master" that is public. And, even better, we have the history of the code. No more "see Chip's post #12534 for A, and Beau's post #2523 for B". If there's a Github repository then there's no reason not to set it up to automatically push changes to the OpenCores.org repository as a type of mirror.
Sounds like an excellent plan! I'm wondering what updates Parallax might be intending to make. I can imagine adding support for new FPGA boards and maybe adding support for additional peripherals. Does Parallax intend to develop a follow-on to P1 (maybe P1+) in the public? I thought this P1 code was released mostly for its educational benefit not as a way for the community to jointly develop a design for a new chip. Is that true or does Parallax intend to use this as a basis for an update to P1 that will be developed in public?
Sounds like an excellent plan! I'm wondering what updates Parallax might be intending to make. I can imagine adding support for new FPGA boards and maybe adding support for additional peripherals. Does Parallax intend to develop a follow-on to P1 (maybe P1+) in the public? I thought this P1 code was released mostly for its educational benefit not as a way for the community to jointly develop a design for a new chip. Is that true or does Parallax intend to use this as a basis for an update to P1 that will be developed in public?
Another benefit, this time for Parallax's college educational customers: by hosting it on Github Parallax can have a tutorial that teaches students the basics of revision control, and allows them to fork the official repository and make architectural changes to run on their lab FPGAs.
We can try some possibilities and test it in real life. What can be really useful, and what will be only wasting of LE's/transistors. What we can do for example with a fast P1 with 64 I/Os. Or maybe more cog ram? Or more hub ram, or segment registers?
Then the most useful ideas can be used in the new real chip.
P1++
My personal Propeller (stupid?) dream is Prop64 With 4096 64-bit cog entries and a big hub - with faster clock and... binary compatible with P1 (if the instruction has upper 32 bits=0 then it is a P1 instruction).
We can try some possibilities and test it in real life. What can be really useful, and what will be only wasting of LE's/transistors. What we can do for example with a fast P1 with 64 I/Os. Or maybe more cog ram? Or more hub ram, or segment registers?
Then the most useful ideas can be used in the new real chip.
P1++
I don't doubt that the community will develop interesting enhancements to P1. My comment only applied to what Parallax themselves intend to do. If their official git repository is mostly to communicate their own contributions then it may be fairly static once all of the support for different FPGAs has been added. Will the Parallax repository also host my attempts at adding CMM support to P1 or will I have to do that work in my own repository? Is there a value in having a Parallax owned repository that only holds the "official" release from Parallax and any updates that they sanction or should everyone's contributions be hosted in the same repository as branches?
The beauty of distributed source management is none of those questions need be answered now.
Let's say the CMM support thing is so compelling we end up kickstarting a P1 chip. Well, then your repository work can get incorporated into Parallax "official", or not...
Our work is local, until it's not. And when it's not is just about the time somebody finds it worth it to incorporate our work.
I think two repositories are needed. First, let Parallax keep the official, "stable" releases. Then the second repository for community created branches of full project.
Then let it be something like OBEX with all these new small toys we can create like "a new cog with mul implemented".
The beauty of distributed source management is none of those questions need be answered now.
Let's say the CMM support thing is so compelling we end up kickstarting a P1 chip. Well, then your repository work can get incorporated into Parallax "official", or not...
Our work is local, until it's not. And when it's not is just about the time somebody finds it worth it to incorporate our work.
Yes, I understand that things can move from local repositories to the "official" one over time. I guess I was just asking if Parallax wanted to allow "push" privileges to everyone to their official repository. I would think that, at least at the start, their official repository would only contain code actually released by Chip. Anything else would be pulled in only after Chip reviews it (or someone else Parallax designates for this).
But I really was being serious when I mentioned those questions don't have to be answered. Probably they shouldn't. I would personally do it on merit and value. Start out with just Parallax updates, then if something bubbles up worth adding, add it, and the people too. Much like PropGCC worked. Some people got added when they bubbled up as being worth adding, but it didn't make sense early on, kind of thing.
@Pik33, sure. Then again, any of us can start one, and do the same thing.
But I really was being serious when I mentioned those questions don't have to be answered. Probably they shouldn't. I would personally do it on merit and value. Start out with just Parallax updates, then if something bubbles up worth adding, add it, and the people too. Much like PropGCC worked. Some people got added when they bubbled up as being worth adding, but it didn't make sense early on, kind of thing.
Sounds fine as long as Chip/Parallax is the gatekeeper.
...should everyone's contributions be hosted in the same repository as branches?
Oh my God no.
The Parallax P1 repo is Parallax's baby. It should only hold what is relevant for emulating and P1 and perhaps any interesting variants for FPGA's that Parallax cares to support. And let's face it that means Chip want's to support.
And perhaps if Parallax want's to grow that into a Propeller 1 and a half or whatever then that should be developed there, with whatever community input that makes sense.
Mean while, thousands of users can fork and hack whatever they like. Perhaps eventually attention focuses on some interesting developments and a community grows around another P1 repo with another caretaker.
Who knows?
It does not matter. Git and Github can accommodate it all as and when required.
I guess I was just asking if Parallax wanted to allow "push" privileges to everyone to their official repository.
That is not generally how people work with git. This is not a centralized system like SVN with privileged beings who have commit access.
Git is distributed, all repos are peers. If you clone my repo and make fixes you can send a "pull" request to me. I may or may not pull your code depending how much I know and trust you. I don't normally give you rights to "push" what you like when you like. Although that can be done as well. Policy is up to the project owner not the tool.
pik33,
...two repositories are needed....
Can't be done. Physically not possible. There is already a hundred repos out there. A hundred copies of that ZIP file download, perhaps already a hundred tweaked versions.
"Community", that is me and you and everyone else can take care of their own versions. Parallax and Chip have enough to do to keep their project in good order.
Then let it be something like OBEX with all these new small toys we can create like "a new cog with mul implemented".
OK why not? A page somewhere people can contribute descriptions of their mutant P1 variants and links to their own repositories. Sounds good.
Agreed there too. I find it hard to believe they wouldn't be.
Well, they don't really act as a gatekeeper for OBEX. I just didn't want to see the same thing happen here. Not that I don't think OBEX is valuable, it's just that I think there should be a separate source for official Parallax releases.
I have the impression that Parallax put the P1 image with GPL out there for us to do what we want, and Parallax was not really intrested in maintaining a GitHub with selected improvements. In other words, they provided the image to us, now do what you want with it, as specified in the GPL. The changes that will occur will be up to the community, or individual to resolve as to what will be done with it. That is my interpretation of the P1 image release.
You might be right Ray, you might be wrong. Why would Ken open this thread with a question about OpenCores if he was just throwing code into the arena with no concern as to what happened with it?
I do hope Parallax is behind this as an open source project and not just a code dump. There is much that can be done with the P1 design before we even think about diverging from emulating the actual Propeller. As I mentioned earlier, bug fixes, board variants, Xilinx support, VHDL version, even general code reorganization. Then there is documentation (idiots guide to how it works)...All sorts of stuff that people are quite likely to want to contribute. If it scratches some ones itch to make a Xilinx version it makes sense to incorporate that rather than they forever have a branch of their own than nobody knows exist. This all needs managing into the future.
I have the impression that Parallax put the P1 image with GPL out there for us to do what we want, and Parallax was not really intrested in maintaining a GitHub with selected improvements. In other words, they provided the image to us, now do what you want with it, as specified in the GPL. The changes that will occur will be up to the community, or individual to resolve as to what will be done with it. That is my interpretation of the P1 image release.
Ray
Ray, as Heater pointed out a while ago I should spend several days looking at this topic. I'm asking Jeff Martin to take a look and come up with the best role for Parallax in terms of file management. I'm short on expertise (Jeff isn't) and bandwidth right now. I need a faster system clock for myself...
One point to add to what you mentioned above might elevate the importance of Parallax's role in having any outcome in the file management side. We do care about what happens. Based on what we see from the community, and what Chip finds feasible, interesting and appropriate, and what our customers would want, it's possible we would collaborate with the community around an open Propeller 1.5 design. The concept of backing it with synthesis and fabrication isn't out of the question. If this happens, our interest level would be higher than simply providing the Propeller 1 image and have no subsequent interest in the outcome. I really doubt a chip has been designed this way before, but what if we were the first? If this happens, it would require a clear design goal and specification.
For this reason we are a little more interested in being involved in a Github for P1.
Such an effort to produce a chip couldn't easily be accomplished by a big company due to legal considerations, inability to react, IP ownership and lack of trust/reward by an between the community and company. But, with you guys I think this idea is not out of reach.
Ray, as Heater pointed out a while ago I should spend several days looking at this topic. I'm asking Jeff Martin to take a look and come up with the best role for Parallax in terms of file management. I'm short on expertise (Jeff isn't) and bandwidth right now. I need a faster system clock for myself...
One point to add to what you mentioned above might elevate the importance of Parallax's role in having any outcome in the file management side. We do care about what happens. Based on what we see from the community, and what Chip finds feasible, interesting and appropriate, and what our customers would want, it's possible we would collaborate with the community around an open Propeller 1.5 design. The concept of backing it with synthesis and fabrication isn't out of the question. If this happens, our interest level would be higher than simply providing the Propeller 1 image and have no subsequent interest in the outcome. I really doubt a chip has been designed this way before, but what if we were the first? If this happens, it would require a clear design goal and specification.
For this reason we are a little more interested in being involved in a Github for P1.
Such an effort to produce a chip couldn't easily be accomplished by a big company due to legal considerations, inability to react, IP ownership and lack of trust/reward by an between the community and company. But, with you guys I think this idea is not out of reach.
This sounds wonderful! It helps to know that there is an outside chance that some of what is done in here could end up in a real chip. However, even if it doesn't, it's a great learning experience.
I think some need to understand the GPL3 license implications...
From what limited understanding i have, i believe anyone wanting to do a silicon chip would require a license from Parallax. Please tell me if this is not the case.
I think some need tou understand the GPL3 license implications...
From what llimited understanding i have, i believe anyone wanting to do a silicon chip would require a license from Parallax. Please tell me if this is not the case.
I don't think this is completely true. I think someone wanting to make a chip could do it without Parallax's permission as long as they were willing to release all of their modifications to the Verilog. If they just duplicate the existing chip or if they release their modifications under GPL3 then I think they can do it without any permission beyond the license that Parallax has already granted.
Do not panic over the Verilog files. This is NOT what the P1 Chip is created from. This Is a re-creation of a P1 In Verilog, done by @Chip In 3 weeks. To run on FPGAs.
Just because he can. Most of the P1 was 'handcrafted' and did not exist in Verilog or any other HDL. Some did. But while working on the P2 and digging into Verilog - I guess - he got that itching to redo the P1. Just because.
And so he did and @Ken - as always - tries to make the best out of it. What else can them do?
Parallax is a very unique company. I was lucky to visit them once and will take any opportunity to repeat this experiment. If you think that people here in the forum are addicted to Parallax you have no clue about the dedication of the people working there. It is simply amazing and I wish I could work for a company like that, but never found one alike.
So - If you never have been at Parallax in Rocklin, you should.
It's true that the P8X32A silicon was a full-custom design, but Altera FPGAs were used to develop and prove the logic. The original FPGA code was all in AHDL (which I translated to Verilog last week). I made a transistor-level schematic by looking at the AHDL code. The layout engineer used the schematic, solely, to lay out the chip. It was a lot of work, but, in retrospect, the design was pretty simple. The Prop2 is way too complex for such a low-level approach, so we must rely on silicon compilers to realize the newer silicon.
I don't think this is completely true. I think someone wanting to make a chip could do it without Parallax's permission as long as they were willing to release all of their modifications to the Verilog. If they just duplicate the existing chip or if they release their modifications under GPL3 then I think they can do it without any permission beyond the license that Parallax has already granted.
David, you are correct. Part of our "safety net" is the assumption that no company would simply fabricate the existing design [which does require layout or synthesis, BTW] just to undercut us by a dollar or two per chip. So, it's not likely to see a clone on the market without improvements that provide new benefits to the customer. But if that happens they must share their Verilog, as you noted. If they don't want to share their Verilog we could negotiate an agreement with them. But this whole idea is about sharing, not hiding intellectual property.
If there's a design worthy of manufacturing I am pretty sure we'd give it a very close review.
The original FPGA code was all in AHDL (which I translated to Verilog last week)
This is an interesting statement.
I have been wondering why you choose to call the Open Source P1 release "P8X32A_Emulation". The implication is clear, this is not the actual source code that the P1 was built from. It is something else that "emulates" the real thing. (The word "emulate" is a bit odd here, normally used for software imitating some other hardware processors logic where as here it is source code that actually becomes a hardware configuration, but never mind).
But then, as you have translated that from the original AHDL, then it is not an emulation it is just a different expression of the same thing.
I have been wondering why you choose to call the Open Source P1 release "P8X32A_Emulation". The implication is clear, this is not the actual source code that the P1 was built from. It is something else that "emulates" the real thing. (The word "emulate" is a bit odd here, normally used for software imitating some other hardware processors logic where as here it is source code that actually becomes a hardware configuration, but never mind).
But then, as you have translated that from the original AHDL, then it is not an emulation it is just a different expression of the same thing.
What the heck...I'm just yacking here...
I mean to say that an FPGA running this code will accurately emulate the P8X32A silicon. Same as it did throughout Prop1 development. The silicon was made from the AHDL files (into a schematic, manually) which just got translated into Verilog for more public use. It's all the same thing, behaviorally.
Comments
Thanks. I'm reading this now and it looks like just what I needed to get a handle.
thanks.
Being the miserable hacker that I am, my first act was to open all of the source files in TextWrangler... so that when I see something interesting, I can search the entire source tree and see where it came from.
One really nice feature of GitHub is that now I don't have to do this. There is a search tool right there and it works just fine. Also, I notice with OpenCores, if I search for P8X32, I am taken to the web, whereas in GitHub, it tells me what I want to know.
Rich
And frankly, that's three core problems!
1. What did Chip give us?
All of us are in various states of understanding. Gonna be a while. But it's fun, and a nice problem to have, right?
2. What have we done?
As we explore this thing, we do stuff, and then we do other stuff, and then we want to talk about it. How do we actually do that?
3. Where do we go from here?
When we combine efforts, where does that live and how do we know what we are working on makes sense? Somebody from outside our community wants to see "the latest stable", and can't find it, or gets the old, stale distribution from the Parallax website. Makes a pile of killer enhancements, only to find out, we've been on a fixed, newer code base for a year. How to sort that out?
These are the things data management helps us with.
When we work alone, files, folders and all those little habits work. And they work well, and they work fast, depending on those habits. When we work together, it all clashes, and that's where something like GitHub comes into play. That clash, and all the meta-tasks we will struggle big with, are why it exists.
And we can put ANYTHING in there!
Here's this:
https://github.com/jmechner/Prince-of-Persia-Apple-II
That's the source code for an old Apple II game, Prince of Persia. It's a bunch of 6502 assembly, data files, etc...
https://github.com/jmechner/Prince-of-Persia-Apple-II/network/members
See that? Those are all the people who tinkered with it. One guy, got it all to build properly, and back into usable disk images for Apple II. (which was bad ***, because he had to write a Merlin type assembler to do it)
https://github.com/adamgreen/Prince-of-Persia-Apple-II/blob/build/Notes/pop-build.creole
And there it is. You can build that on your machine today, and trace what he did back to the original Mechner release. Very cool.
And...
http://readwrite.com/2013/11/08/seven-ways-to-use-github-that-arent-coding
It's not just for code. What I find highly interesting is how people are using data management to collaborate, keep a history, and stay organized and updated.
Several new platforms out popping out of this, one for science: https://www.authorea.com/
Notice, "fork", etc... right there on the home page. (I really like this one, BTW)
My point here is simple: Learning to adopt these tools is very highly likely good for just about everybody here. And doing so will keep us relevant in the greater ecosystem out there, and frankly, that is something I think we will benefit from more than we lose.
Another benefit, this time for Parallax's college educational customers: by hosting it on Github Parallax can have a tutorial that teaches students the basics of revision control, and allows them to fork the official repository and make architectural changes to run on their lab FPGAs.
Then the most useful ideas can be used in the new real chip.
P1++
My personal Propeller (stupid?) dream is Prop64 With 4096 64-bit cog entries and a big hub - with faster clock and... binary compatible with P1 (if the instruction has upper 32 bits=0 then it is a P1 instruction).
For the current P8X32A_Emulation I would imagine, bug fixes as we have already seen, board variants, Xilinx variants, possibly VHDL versions why not?
Basically anything that reflects the Propeller chip as you can now buy it.
Should it evolve into a new Propeller ++ chip. Who knows? Should it reflect some funky thing that will only exist in FPGA, may be.
Well, that is what branches are for....
Let's say the CMM support thing is so compelling we end up kickstarting a P1 chip. Well, then your repository work can get incorporated into Parallax "official", or not...
Our work is local, until it's not. And when it's not is just about the time somebody finds it worth it to incorporate our work.
Then let it be something like OBEX with all these new small toys we can create like "a new cog with mul implemented".
But I really was being serious when I mentioned those questions don't have to be answered. Probably they shouldn't. I would personally do it on merit and value. Start out with just Parallax updates, then if something bubbles up worth adding, add it, and the people too. Much like PropGCC worked. Some people got added when they bubbled up as being worth adding, but it didn't make sense early on, kind of thing.
@Pik33, sure. Then again, any of us can start one, and do the same thing.
The Parallax P1 repo is Parallax's baby. It should only hold what is relevant for emulating and P1 and perhaps any interesting variants for FPGA's that Parallax cares to support. And let's face it that means Chip want's to support.
And perhaps if Parallax want's to grow that into a Propeller 1 and a half or whatever then that should be developed there, with whatever community input that makes sense.
Mean while, thousands of users can fork and hack whatever they like. Perhaps eventually attention focuses on some interesting developments and a community grows around another P1 repo with another caretaker.
Who knows?
It does not matter. Git and Github can accommodate it all as and when required. That is not generally how people work with git. This is not a centralized system like SVN with privileged beings who have commit access.
Git is distributed, all repos are peers. If you clone my repo and make fixes you can send a "pull" request to me. I may or may not pull your code depending how much I know and trust you. I don't normally give you rights to "push" what you like when you like. Although that can be done as well. Policy is up to the project owner not the tool.
pik33, Can't be done. Physically not possible. There is already a hundred repos out there. A hundred copies of that ZIP file download, perhaps already a hundred tweaked versions.
"Community", that is me and you and everyone else can take care of their own versions. Parallax and Chip have enough to do to keep their project in good order. OK why not? A page somewhere people can contribute descriptions of their mutant P1 variants and links to their own repositories. Sounds good.
Ray
I do hope Parallax is behind this as an open source project and not just a code dump. There is much that can be done with the P1 design before we even think about diverging from emulating the actual Propeller. As I mentioned earlier, bug fixes, board variants, Xilinx support, VHDL version, even general code reorganization. Then there is documentation (idiots guide to how it works)...All sorts of stuff that people are quite likely to want to contribute. If it scratches some ones itch to make a Xilinx version it makes sense to incorporate that rather than they forever have a branch of their own than nobody knows exist. This all needs managing into the future.
Ray, as Heater pointed out a while ago I should spend several days looking at this topic. I'm asking Jeff Martin to take a look and come up with the best role for Parallax in terms of file management. I'm short on expertise (Jeff isn't) and bandwidth right now. I need a faster system clock for myself...
One point to add to what you mentioned above might elevate the importance of Parallax's role in having any outcome in the file management side. We do care about what happens. Based on what we see from the community, and what Chip finds feasible, interesting and appropriate, and what our customers would want, it's possible we would collaborate with the community around an open Propeller 1.5 design. The concept of backing it with synthesis and fabrication isn't out of the question. If this happens, our interest level would be higher than simply providing the Propeller 1 image and have no subsequent interest in the outcome. I really doubt a chip has been designed this way before, but what if we were the first? If this happens, it would require a clear design goal and specification.
For this reason we are a little more interested in being involved in a Github for P1.
Such an effort to produce a chip couldn't easily be accomplished by a big company due to legal considerations, inability to react, IP ownership and lack of trust/reward by an between the community and company. But, with you guys I think this idea is not out of reach.
As this is the first mention we've made of this possibility, maybe Peter will tag this post in this thread http://forums.parallax.com/showthread.php/155638-Links-amp-summary-to-most-recent-P16X64A-quot-P2-quot-posts-by-Chip-amp-Ken?highlight=propeller+posts+chip+ken
Ken Gracey
From what limited understanding i have, i believe anyone wanting to do a silicon chip would require a license from Parallax. Please tell me if this is not the case.
And they would need to call it something other than Parallax Propeller.
Just because he can. Most of the P1 was 'handcrafted' and did not exist in Verilog or any other HDL. Some did. But while working on the P2 and digging into Verilog - I guess - he got that itching to redo the P1. Just because.
And so he did and @Ken - as always - tries to make the best out of it. What else can them do?
Parallax is a very unique company. I was lucky to visit them once and will take any opportunity to repeat this experiment. If you think that people here in the forum are addicted to Parallax you have no clue about the dedication of the people working there. It is simply amazing and I wish I could work for a company like that, but never found one alike.
So - If you never have been at Parallax in Rocklin, you should.
Enjoy!
Mike
David, you are correct. Part of our "safety net" is the assumption that no company would simply fabricate the existing design [which does require layout or synthesis, BTW] just to undercut us by a dollar or two per chip. So, it's not likely to see a clone on the market without improvements that provide new benefits to the customer. But if that happens they must share their Verilog, as you noted. If they don't want to share their Verilog we could negotiate an agreement with them. But this whole idea is about sharing, not hiding intellectual property.
If there's a design worthy of manufacturing I am pretty sure we'd give it a very close review.
I have been wondering why you choose to call the Open Source P1 release "P8X32A_Emulation". The implication is clear, this is not the actual source code that the P1 was built from. It is something else that "emulates" the real thing. (The word "emulate" is a bit odd here, normally used for software imitating some other hardware processors logic where as here it is source code that actually becomes a hardware configuration, but never mind).
But then, as you have translated that from the original AHDL, then it is not an emulation it is just a different expression of the same thing.
What the heck...I'm just yacking here...
I mean to say that an FPGA running this code will accurately emulate the P8X32A silicon. Same as it did throughout Prop1 development. The silicon was made from the AHDL files (into a schematic, manually) which just got translated into Verilog for more public use. It's all the same thing, behaviorally.