Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manual or guide for developers #133

Open
hydrobyte opened this issue Mar 22, 2023 · 16 comments
Open

Manual or guide for developers #133

hydrobyte opened this issue Mar 22, 2023 · 16 comments
Labels
help wanted Extra attention is needed

Comments

@hydrobyte
Copy link

Hello,

There is some manual or guide for developers? I was searching for a description of boss.json and boss-lock.json files.

I would like to understand how can I include and what are the options for a project to be managed with boss.

Thank you.

@viniciussanchez viniciussanchez added the help wanted Extra attention is needed label Mar 27, 2023
@viniciussanchez
Copy link
Member

So far we don't have any documentation, except the one on github. We have several videos, lectures, slides, but all in Portuguese. Basically, boss.json is the file responsible for the project's information and its dependencies, including the packages you've installed and their versions. The boss-lock.json file is responsible for storing the dependencies you installed, and the dependencies of your dependencies, including their respective versions.

@hydrobyte
Copy link
Author

Hi,

Thanks for your reply.

I think you mentioned the documentation and videos (in Portuguese) are focused on developers using Boss to get libraries and components.

On the other hand, what I mean was about the existence of some manual for developers that want to provide access to their code using Boss.

Thanks for your explanation about the boss*.json files. I have some doubts related to specific properties in these files. For example, what we can put in project and dependencies properties from boss.json and if hash in boss-lock.json has any rule of construction.

If these doubts make sense for you, I would help creating documentation (Portuguese or English), starting with this subject for developers including Boss on their repositories.

Please, let me know your decision about it.

Regards.

P.S. I'm a Brazilian developer.

@viniciussanchez
Copy link
Member

Sé é brasileiro, vamos falar a nossa língua, kkkkkkk
Então, sobre a documentação é o que te falei, temos vários vídeos no YT, tem artigos, enfim mas tudo em português. Quanto a documentação, seria muito bem vinda, se quiser pode até fazer aqui mesmo no github, e enviar o pull request.

@hydrobyte
Copy link
Author

Olá.

Vou explicar o meu foco no Inglês, mas é com bastante respeito ao trabalho de vocês.

Acho que você deve ter visto o vídeo do Jim McKeeth sobre o Boss, Horse e outros. Foi depois desse vídeo que lendo a documentação disponível achei falta de um conteúdo do ponto de vista de quem quer distribuir/publicar seu código para gerenciamento via Boss.

Revisando o que tenho aqui para fazer essa resposta, encontrei também um post do McKeeth, mas ainda tem o ponto de vista de quem vai fazer uso do Boss para gerenciar packages.

Sendo mais específico, como registro, a parte que senti falta está citado no post do McKeeth sobre um draft de documentação para o Boss. Dá para constatar que faltam os detalhes na seção Publishing a Package for Boss.

Por fim, pensei mesmo em contribuir aqui via Github e se você concordar poderia ser via uma pasta docs em HashLoad\boss.

Agradeço desde já a atenção.

@viniciussanchez
Copy link
Member

Opa, claro que concordamos, toda contribuição é bem vinda... fique a vontade em contribuir. Realmente falta muita coisa na documentação, tanto do Boss, como do Horse. Ouve várias tentativas de documentar, até mesmo por parte da comunidade, mas sem sucesso, povo sempre começa e depois some rsrs, mas entendemos que é devido a correria do dia dia...

@hydrobyte
Copy link
Author

Sim, documentação é sempre um ponto crítico.

Para mim, o Boss e o Horse são exemplos de quão forte o Delphi pode ser frente a tantas alternativas que ainda surgem, e nem sempre se consolidam.

E, convenhamos, o Boss poderia ser o Getit da comunidade Delphi em geral.

Vou começar aqui e faço um PR em breve.

Abraço.

@viniciussanchez
Copy link
Member

Sim, poderia mesmo... quem sabe um dia conseguimos isso...
Desde já obrigado pela contribuição

@arvanus
Copy link

arvanus commented Mar 27, 2023

Aproveitando, acho que precisamos ter um repositório com todos os pacotes disponíveis para instalação via BOSS, ou ao menos todos os disponíveis no github
Não conheço muito da API do github, mas se tivesse como procurar todos os projetos em pascal com o arquivo boss.json na raiz já dava de usar como base

@viniciussanchez
Copy link
Member

O github tem um mecanismo para algumas ferramentas, que ele mesmo lista na página quantos projetos usam.

image

Mas tentei uma vez, entrar em contato com eles, para eles reconhecerem o boss, mas sem sucesso até então.
A ideia do rep com todos os projetos, seria legal, mas a comunidade teria que abraçar a causa né, porque ficar procurando e colocando lá seria complicado...

@arvanus
Copy link

arvanus commented Mar 27, 2023

se for um repo simples no github funciona e é de graça, mas dá muito trabalho
Penso que seria bacana termos um site ao estilo do docker/npm/... mas além do custo de produção, teria o custo do servidor né

Sobre o repo, poderíamos criar um repositório ao estilo dos vários awesome* que existem no github, coloca uns 5 admins pra ir aceitando os merges e vemos se dá certo.
Eu me proponho a ajudar a administrar os merges do repo
Exemplos de páginas semelhantes:
https://github.com/Fr0sT-Brutal/awesome-pascal
https://github.com/yissachar/awesome-dart

@viniciussanchez
Copy link
Member

Sim...
Para o horse ouve várias tentativas aqui:
https://github.com/HashLoad/horse-doc

@EdZava
Copy link

EdZava commented Jun 6, 2023

O tema das Docs do Boss está parado ou ja saiu algo por algum otro canal ?

@viniciussanchez
Copy link
Member

@EdZava sempre parado, muitos começam, dão ideia e depois de um tempo some rsrs

@hydrobyte
Copy link
Author

hydrobyte commented Jun 19, 2023

Nem sempre "some" é a consequência mais simples de se apontar. No meu caso, estou com dificuldades de fazer o Boss funcionar do ponto de vista do desenvolvedor.

@birbilis
Copy link

A schema for the JSON file would be nice (https://json-schema.org/)

Faced by the same problem I tried searching for boss.json files on GitHub (https://github.com/search?q=path%3Aboss.json+delphi&type=code )

I ended up chatting with Bing Copilot in Microsoft Edge browser and despite some misleading suggestions I eventually ended up with something that more or less works (but may be mistaken in some parts)

https://github.com/Zoomicon/Zoomicon.Generics.Delphi/blob/main/boss.json
(using this as a dependency from an app: https://github.com/Zoomicon/READCOM_App/blob/App/boss.json)

https://github.com/Zoomicon/Zoomicon.Cache.Delphi/blob/main/boss.json

https://github.com/Zoomicon/Zoomicon.Downloader.Delphi/blob/main/boss.json
https://github.com/Zoomicon/Zoomicon.Downloader.Delphi/blob/main/Source/boss.json
https://github.com/Zoomicon/Zoomicon.Downloader.Delphi/blob/main/Test/boss.json


now regarding the Downloader one I had the issue that Boss Experts (useful GUI for Boss from GetIt Package Manager) doesn't seem able to find boss.json at the repository/parent level when my project is in Source subfolder, nor could it parse a "package" grouping node in the JSON file when editing visually Boss dependencies

I have a separate Source and Test subfolder and both projects are at a project group file), so since that Downloader package has a dependency to the Cache package, I had to add a separate boss.json at the Source folder (without a "package" grouping node in it) with adapted path references compared to the one at the top level of the repo.

Had to do similarly for Test folder since the test project obviously has same dependencies as the Source project it tests. But its boss.json is much simpler, just caring for the dependency there (it's auto generated via Boss Init step-by-step questions [launched via Boss Experts by right clicking that project in the IDE and picking Init from the Boss submenu in the popup])

I also had to keep the one at the top-level since I want projects that add a dependency to my Downloader package to just pass the url to the git repo, not have to add /Source to it (plus having the boss.json at the top level makes it easy for someone to spot there is Boss support. Would be nice to have boss.json files that can redirect to other boss.json files, so that my top-level one (that is /boss.json) would just include a redirect to Source/boss.json).


For the first two repos I didn't need this more complex scheme, since their Source projects don't have dependencies of their own. So just placed boss.json at the top-level of their repos, together with the Source and Test project subfolders and the Project Group (.groupproj) files

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants