Replies: 49 comments 20 replies
-
I'd like to notify and invite at least the six most recent contributors (Micz has been mentioned in the post above) to this discussion: |
Beta Was this translation helpful? Give feedback.
-
I think one repo with sub directories for each component is fine. Phoniebox isn’t that big and I think different repos adds another level of complexity, which could be hard to integrate in a working product.
Different sub directories with maybe directories for common stuff could work. Adding (automated) unit tests for each component could be added more easily as a separation in components forces clear interfaces.
I think the current workflow is fine in general. Alternatively we could use GitHub Flow, which is very lightweight. Master is always deployable and each feature/fix branches from master and after review/test is merged in master.
I think something like Gitter, Slack or similar could help for quick questions and discussions of ideas.
I think, if we try to add more tests like @veloxidSchweiz has already started (and automate them with Github Actions), we become more confident that changes don’t break the product, so @MiczFlor doesn‘t need to review and test everything so thoroughly.
Yes, I’m really interested what plans or ideas exist.
Difficult question :) |
Beta Was this translation helpful? Give feedback.
-
Hi, because you asked me to give my opinion:
I agree with @s-martin to keep the Phoniebox in one single Github-repo. In the past weeks I've created two pull-requests and was able to understand the functionality of the code within some evenings. If the code is splitted into several individual repositories, for people like me (with low/middle skills in php but some ideas) it could be harder to contribute to Phoniebox. Keep in mind that the project is focused on parents and childrens. If a more complex version is nescesary, maybe the repo can be forked to a "PhonieBoxPro" with enhanced functionality? It may then be justified to create a distributed repository. By the way: thank you for this wonderful project! |
Beta Was this translation helpful? Give feedback.
-
Hi guys, this is the right thread, just at the right time. I took a little time to write up a few thoughts regarding Phoniebox. Possibly this should - eventually - become a small manifesto about the idea, progress, community and future of phoniebox? I believe the few posts above already illustrate the nature of the Phoniebox community. Generally speaking: I am very much open to the idea of sharing responsibility, giving access to merge and plan together. From the past (years!) of experience, I have seen great minds and coders come and go. So all in one place is a good idea, to make sure the project actually has a future. (I am also happy to have a Phoniebox meetup of developers in Berlin, if there are enough around. Any interest?) https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Architecture_HowWeWork Phoniebox consists of code, a lively community and inspiring designsA Phoniebox...
How the Phoniebox community works
The Phoniebox code base
|
Beta Was this translation helpful? Give feedback.
-
From my more abstract statement above, I deduce the following action points:
... what did I miss? |
Beta Was this translation helpful? Give feedback.
-
I'd like to add: Adding first unit tests was already done in #763 (can't wait until that is merged). This could be improved step by step, maybe even for integration tests with hardware (mockups). If we can write a wiki article how to set up a test environment on real hw or docker, this could help many people and improve overall test coverage. |
Beta Was this translation helpful? Give feedback.
-
I agree with this. If you look at how Google organises something like the NSynth project which has four different very definitely interconnected but also very different components (hardware schematics, audio pipeline, interface software, firmware, and PCB…) it's all separate folders each with a README but a root level README giving the overall information. |
Beta Was this translation helpful? Give feedback.
-
This is why you force contributors to make forks with feature branches and create pull requests based on their suggested changes. I've seen some quite correct suggestions about master being always deployable and only merging after manual and automated pipeline acceptance testing. 👍 |
Beta Was this translation helpful? Give feedback.
-
@s-martin great energy, a wiki article would be great. And how would you write https://github.com/MiczFlor/RPi-Jukebox-RFID/wiki/Architecture_HowWeWork How the Phoniebox community works...
... The Phoniebox code base
|
Beta Was this translation helpful? Give feedback.
-
@MiczFlor I would love to join a Phoniebox group. Have you considered starting a meetup? It might be a good fit for the Embedded Linux or Linux Audio groups that already exist here in Berlin and have an active userbase. I could potentially do an introduction to some local hardware folks if you're interested. Alternatively there are the always excellent C-Base and XHain hackspaces who might be interested in hosting an event in exchange for exposure and beer money through the door. |
Beta Was this translation helpful? Give feedback.
-
First of all: sorry for my late answer, my time in the early year is really expensive, but i look forward to invest the time i can give to this Project.
The basic Installation should be one repo in my opinion. I would like to see more repos, that can be attached like modules, maybe also as an installer. I also think, that config files, which will be edited manually, and also Shortcuts, Music, Playlists and so on should be seperated from the basic github repo in the installation. That makes it much easier to get an update working... But this is only my point of view.
First of all, we should think of a stable and actual repo. @MiczFlor this is in german, because i don't find the words in english: Das Projekt hier ist der Hammer und ich bin Dir dafür mega dankbar. Aber es ist in dieses Repo so viel rein geflossen, dass es sehr schwer zu überschauen ist. Nimm das nicht als Kritik, sondern eher als Verbesserungsvorschlag, dass man Modulbasiert verschiedene Repos anbietet.
The main problem is, that there must be a main developer and tester for each step. One problem is also, there are maybe only two contributers, but both checking in to develop. Maybe it is better to make a repo like develop_username_timestamp? I am not sure, this is not easy for @MiczFlor to handle.
If there were different developers that organize the developent: yes. At this stage, i think no, because contributers are coming and going. There a just a handful of developers here about months.
Ask @MiczFlor
This would be a nice plan! But you need main contributers always working for this project, not just for a couple of weeks.
Do you have an example. So, i orderd three more Pis, i will build three more boxes to test. I hope, the project goes on and i try helping as much as i can. |
Beta Was this translation helpful? Give feedback.
-
Hi, Here some personal opinions from my experiences. I am not a full-stack developer (whatever that means), but I already worked in some software projects from different perspectives.
I am not an expert on running docker on RPis, but if there is possiblity to containerize the functionalities this would probably allow a very easy deployment.... One would run separate containers for each subject of concern and it would be quite easy to update single compontents... here i would suggest to have one for the html interace, one for the mpd (or one of his spotify sisters), one for the control of the RFID reader, one for the gpio handling (maybe one separate for the oled display).... By only 'mounting' the music- and setting-directory, the system is very likley to be good upgradable. This is only my personal view and I am open for such a discussion. Having such an open-source-project in which many people invest a marginal time of their free time is really great and I love this projects, If I can show my acknowledgement by contributing this is even better ;-) |
Beta Was this translation helpful? Give feedback.
-
Thanks for the input, this is really cool. Regarding the code repo: I agree with ...
I know what it's been like to answer questions regarding other peoples forked repos who once posted a link to their file and then changed it a few weeks later to fit their specific, it didn't work for others and suddenly I had to take the heat and try to awake the contributor from the dead (who did great work, and meant to do good, and did). Then suddenly everybody was annoyed for no reason. I prefer people creating pull requests and merge to develop - then they want to be proud of their code, comment their code and I know it is tested (enough) even if I don't have the hardware (ok, sure @veloxidSchweiz this is not the type of testing you are talking about :) ... and would like to restructure the folders and rename the files to make it easier for new people to dive into the deep end. In terms of components or functionality, and following @ZyanKLee list in the first post, I think these are the "folders" we need - not sure how to name them... (what am I missing?)
Any suggestions for naming and folder structure? I started this document in the wiki, please put suggestions there (the wiki might be the more collaborative editing space) |
Beta Was this translation helpful? Give feedback.
-
First of all: I'm glad this discussion was so well received and on time. :) After @MiczFlor's latest post I thought about how to go on from here with his plan while avoiding any interruption to the installation of new Phonieboxes and came up with this idea: First of all, I think that new github feature "projects" might come in very handy to organize the planned steps and workpackages without us cluttering up the main issues too much. To also separate the code from the "legacy" system, I would suggest a new long-living branch with a similar name; i.e. "reorga". This is an attempt to illustrate the git flow: The |
Beta Was this translation helpful? Give feedback.
-
maybe you can change the phoniebox software so that it can be integrated into the Logitech Media Center. |
Beta Was this translation helpful? Give feedback.
-
It is an interesting idea to think about using Mopidy as a player only. It's already running when using Spotify and keeping both softwares in sync just increases the complexity. To be fair, this goes opposite to what the Phoniebox software initially had been made for. There is still a lot of stuff the Phoniebox software entails.. but it might make sense to focus on this more. |
Beta Was this translation helpful? Give feedback.
-
Hi I want to give a little background, so we can move forward together. At the end of this post, a very top level idea of what I believe we need in place to make that bold move to @arne123 @pabera Phoniebox has been a fun project that has brought families together :) How so? Phoniebox Classic
Then there is the other Phoniebox Phoniebox +
The Phoniebox + makes me very humble, seeing the quality of code coming in and the innovative ideas. I guess everybody here knows the codebase enough and has possibly been around long enough to know the components folder where all these ideas and gadgets find their home. (Thanks to @s-martin again for doing such great work in supporting new community members to make their code contributions documented and standardised in a way that everybody benefits. Again, this is needed in an open source project. And Martin is doing a great job.) The future of Phoniebox should provide both. And I believe it can provide both. If you look through the issues filed here on GitHub, they are either newbies who are inspired and motivated, but fail to install the Classic version. And on the other end of the spectrum issues related to specific hardware, integrating Spotify, ... and Phoniebox went through a major shift in the past: migrating the playout from
What am I missing? And who would raise their hand to say: "I am in" |
Beta Was this translation helpful? Give feedback.
-
I appreciate that you have taken the time to summarize those thoughts. It made me laugh too. I am a dad with tech background, but my Elternzeit is yet to come .. all of it makes sense and I like the separation of Classic and +. Which must be kept as a recognition and tribute to the initial, great idea. I help where I can. I want to say I am in, but I don’t want to give wrong expectations. |
Beta Was this translation helpful? Give feedback.
-
@MiczFlor I like to say thank you for the extensive background information and your thoughts I totally agree that one of the major goals should be the a simple box as a low level entree project. I hope more people will join this discussion. And say I am in, at least a bit. In the past days I was a little bit looking around in the project, and I'd like to ask in what kind of state the code in python-phoniebox folder is. Was this already somehow running? |
Beta Was this translation helpful? Give feedback.
-
Thanks @MiczFlor and @s-martin for taking the project to the next level. I would like to break a lance again for standardization. |
Beta Was this translation helpful? Give feedback.
-
Hi @pabera @arne123 |
Beta Was this translation helpful? Give feedback.
-
@Luegengladiator the idea of modularity is great, the idea of Pi packages is also great (but, see below). Modularity will actually increase productivity, I assume. a) It's an extra skillset that would really only make sense if there was dedicated developer for that task. Regarding modularity (and standardization, of course) what do you have in mind? |
Beta Was this translation helpful? Give feedback.
-
Hi @MiczFlor, Professionally, I am on the road as an IT delivery manager in larger Linux environments and therefore familiar with the challenges of system operation. Even if that sounds a bit like "overkill" now. Which child wants to go without the box for 3 days and instead have a frustrated dad just because the update doesn't work as expected? I can see parallels here. That's where I want to bring modularity into play.
which then the modules
could reload. The personally used box can easily be assembled using modules and each module can be developed separately. On the subject of standardization, there are defined rules within the project. This does not make handling the application any more difficult, but it also enables further customization options. To sum it up briefly: |
Beta Was this translation helpful? Give feedback.
-
Hello everybody, It's been a while, but the recent uptick in discussion here woke me from my slumber. At least a little. 😀 So first and foremost: thanks to Micz and Martin for their continued work on managing the project. Thanks to everyone for driving it further. Since my time with the project there is a sore spot for me in this project. But that is not due to it being ugly nor bad code - those aspects are great. |
Beta Was this translation helpful? Give feedback.
-
Dear all, I did some more programming on idea level to advance my earlier proposed zmq IPC approach a bit. So there are now there possibilities to interact with the PhonieboxRpcServer (explained below): So by now I implemented zmq in three environments and can confirm "zmq is like Sockets, just on steroids" I like the modularization which @Luegengladiator is proposing. In terms of utilizing linux standard directories I just want to add /etc for configuration Based on the python-phoniebox I tried to give some inputs into class structure here, but still have a lot of mind conflicts. PhonieboxRpcServer ZMQ Based API for Phonibox which can just do very little at the moment changing alsa volume and reading mpd version is working. in PhonieboxNvManager I am just trying to sort my mind. I know that the rest of the discussion is more abstract and this is very concrete deep down in some details, Br. |
Beta Was this translation helpful? Give feedback.
-
Thank you all for the input. Everything feels really important, interesting, relevant - and inspiring. Going through this discussion, I am looking at everything (not as a programmer, but) as a product owner. And, most of you know this, the contributions from people like you exceeds my skill-set as a programmer by far :) As a product owner and/or project manager, I do see the benefits in refactoring some core elements of the Phoniebox code. Also rewriting parts to python seems like a very good idea. So if we look at the life cycle, the first generation of Phoniebox was a "stand alone" proof of concept (and not even called Phoniebox at the time). The second generation started when migrating to mpd (from vlc) and with that move, opening Phoniebox to Spotify and Google Music, therefore increasing the user base and with it the code contributions (a long list of hardware support as well as plenty of new features). Now we are looking at the third generation coming up. The three components in the mix to make it future proof are:
These are very common pain points for any software development as the product matures. Seems the Phoniebox was a good enough proof of concept to start with, because we are talking about the future. So there is a future! There is a community! Below what I scraped from the discussion. I really like the C++ And generally, I am weary that the idea of moving the installation process to a package manager will create extra overhead, no matter what package manager. Without having somebody "on staff" to look after this, the new releases on github will soon outshine the effort of once putting everything to a package manager - which will be quickly out of date. What do the others think? Am I missing anything in the list? And since our ticketing system on github is very noisy with questions: what would be the best way to structure these ideas into tickets? @s-martin you've been starting milestones in github. Do you think that would be the way to go? Thanks for the input, I would really love to see the third generation Phoniebox taking shape! All the best, micz Architecture
Installation
Player
Refactoring
Rewriting
|
Beta Was this translation helpful? Give feedback.
-
Of course, it makes a lot of sense to have only one backend player with all the benefits of the mopidy API. But I am a bit weary when reading that mpd support will be dropped. However, I have mixed experiences with mopidy + spotify on Raspberry Pi Zeros and Pi 2s with minute-long boot-up times due to playlist updates and unresponsiveness up to the point of unusability. So, it should probably be ensured that things like Spotify integration can be disabled (or not even installed) to keep performance for local-only-mp3 Phonieboxes good on Pi Zeros. Did some of you make the same experience, or was that just me? Another topic that could do with a going over is the way different RFID card readers are handled. Currenlty it needs manual copying/renaming of files and custom pin settings e.g. for the MFRC522 are only possible by editing scripts. I am thinking of a concept where
That way new readers could be added but just adding a new module. That's it. Most of the current code interfacing with the readers themselves would stay the same. Only the interface to the daemon needs to be refactored. The major isssue here is not the coding, but the testing, since many differnt readers are involved they all need to be tested. I have at home a USB Reader, a RDM6300, a MFRC522, and a Adafriut PN532 and could cover quite a stretch of the different readers currenlty being used. If nobody has set their eyes on that task already, I would raise my hand an embark on that. What do you think? |
Beta Was this translation helpful? Give feedback.
-
I am currently working on refactoring this piece to be individual bash files. I started the process before this discussion started, so I will try to finish it. It'll have 2 positive effects: 1) reaction speed will be a little faster and 2) separation of concern. With #2, we could transform each aspect to Python (or whatever else we come up with) @MiczFlor Thanks for the credits above. I don't claim those ideas to be mine though. They seem to be right to me, but I don't have much experience yet with all this software. I actually noticed what @ChisSoc said in the below comment as well ...
This is even true for Raspberry 3. I also have a lot of problems with it constantly rebooting (but I haven't dived deep into it yet, could be basically anything) I believe there is a lot to discuss and think about. We are all locked down and all over places. Wouldn't it make sense to set up a video call and discuss some milestones, exchange some knowledge and create a backlog and maybe lay out a roadmap. From this backlog, current contributors and new joiners can pick up tasks and execute them without always rethinking the idea every month :-) A nice side effect would be to get to know each other a little better. Thoughts? |
Beta Was this translation helpful? Give feedback.
-
@pabera asks: "Wouldn't it make sense to set up a video call and discuss some milestones" |
Beta Was this translation helpful? Give feedback.
-
To go deeper into the side-tracked topic about the code future on #763 I open this issue (as we are lacking an alternative communication method).
Yesterday I had a short look into the build, install and update scripts of LibreElec.tv - it left me barely any wiser after an hour reading through all the scripts, testing the build script and trying to figure how the heck the actual update of a LibreElec system works. (not the download but the flashing of the new version - what does it and where is that piece of code?)
Anyway: as far as I can see this project can be divided into some more or less separate sub-projects.
... did I miss something vital?
Questions:
Beta Was this translation helpful? Give feedback.
All reactions